原文:
www.kdnuggets.com/2023/06/stop-hard-coding-data-science-project-config-files-instead.html
1. 谷歌网络安全证书 - 快速进入网络安全职业。
2. 谷歌数据分析专业证书 - 提升你的数据分析能力
3. 谷歌 IT 支持专业证书 - 支持你的组织在 IT 方面
在你的数据科学项目中,某些值往往会频繁变化,如文件名、选择的特征、训练-测试拆分比例以及模型的超参数。
在编写用于假设测试或演示目的的临时代码时,硬编码这些值是可以的。然而,随着代码库和团队的扩展,避免硬编码变得至关重要,因为这可能会导致各种问题:
- 可维护性:如果值散布在代码库的各个地方,一致地更新这些值就会变得更加困难。这可能会导致在值需要更新时出现错误或不一致。
- 可重用性:硬编码的值限制了代码在不同场景下的重用性。
- 安全问题:将敏感信息如密码或 API 密钥直接硬编码到代码中可能存在安全风险。如果代码被分享或暴露,可能会导致未经授权的访问或数据泄露。
- 测试和调试:硬编码的值会使测试和调试变得更加困难。如果值被硬性嵌入到代码中,那么模拟不同的场景或有效地测试边界情况就会变得困难。
配置文件通过提供以下好处来解决这些问题:
- 将配置与代码分离:配置文件允许你将参数与代码分开存储,这样可以提高代码的可维护性和可读性。
- 灵活性和可修改性:使用配置文件,你可以轻松修改项目配置而不需要修改代码本身。这种灵活性允许快速实验、参数调整,并使项目适应不同的场景或环境。
- 版本控制:将配置文件存储在版本控制系统中,可以跟踪配置的变化。这有助于维护项目配置的历史记录,并促进团队成员之间的协作。
- 部署和生产化:在将数据科学项目部署到生产环境时,配置文件可以轻松定制特定于生产环境的设置,而无需修改代码。这种将配置与代码分离的方法简化了部署过程。
在众多用于创建配置文件的 Python 库中,Hydra 是我首选的配置管理工具,因为它具备令人印象深刻的一整套功能,包括:
-
方便的参数访问
-
命令行配置覆盖
-
从多个来源组合配置
-
执行多个具有不同配置的作业
让我们更深入地探讨这些功能。
随意查看和分叉本文的源代码:
假设所有配置文件存储在 conf
文件夹下,所有 Python 脚本存储在 src
文件夹下。
.
├── conf/
│ └── main.yaml
└── src/
├── __init__.py
├── process.py
└── train_model.py
main.yaml
文件看起来是这样的:
在 Python 脚本中访问配置文件就像给你的 Python 函数应用一个装饰器一样简单。
要从配置文件中访问特定参数,我们可以使用点符号(例如,config.process.cols_to_drop
),这种方式比使用括号(例如,config['process']['cols_to_drop']
)更简洁直观。
这种简单的方法让你可以轻松地获取所需的参数。
假设你正在尝试不同的 test_size
。反复打开配置文件并修改 test_size
值是耗时的。
幸运的是,Hydra 使得从命令行直接覆盖配置变得容易。这种灵活性允许快速调整和微调,而无需修改基础配置文件。
想象一下,你想尝试各种数据处理方法和模型超参数的组合。虽然你可以在每次运行新实验时手动编辑配置文件,但这种方法可能会很耗时。
Hydra 允许通过配置组从多个来源组合配置。要创建一个用于数据处理的配置组,创建一个名为process
的目录,其中包含每种处理方法的文件:
.
└── conf/
├── process/
│ ├── process1.yaml
│ └── process2.yaml
└── main.yaml
如果你想将process1.yaml
文件设置为默认文件,请将其添加到 Hydra 的默认列表中。
按照相同的步骤创建一个用于训练超参数的配置组:
.
└── conf/
├── process/
│ ├── process1.yaml
│ └── process2.yaml
├── train/
│ ├── train1.yaml
│ └── train2.yaml
└── main.yaml
将train1
设置为默认配置文件:
现在,运行应用程序时默认将使用process1.yaml
文件和model1.yaml
文件中的参数:
这一能力在需要无缝结合不同配置文件时特别有用。
假设你想进行多种处理方法的实验,一个一个地应用每种配置可能会非常耗时。
幸运的是,Hydra 允许你同时用不同的配置运行相同的应用程序。
这种方法简化了用各种参数运行应用程序的过程,最终节省了宝贵的时间和精力。
恭喜!你刚刚了解了使用配置文件的重要性以及如何使用 Hydra 创建配置文件。我希望这篇文章能为你提供创建自己配置文件所需的知识。
Khuyen Tran 是一位多产的数据科学作家,撰写了一系列令人印象深刻的有用数据科学主题,包括代码和文章。Khuyne 目前在 2022 年 5 月之后寻求机器学习工程师、数据科学家或开发者倡导者的职位,欢迎联系她,如果你在寻找拥有她技能的人才。
原文。经许可转载。