概览
当机器学习项目同时存在多个数据集、模型和训练方案时,复制脚本或手工修改常量会让实验越来越难追踪。Hydra 将这些选择整理为可组合的配置:公共设置放在基础配置中,数据、模型、优化器等变化部分放进独立配置组,再通过命令行选择具体组合。 项目目前由 hydra-ecosystem 组织维护,原 facebookresearch/hydra 地址会跳转到当前仓库。它主要解决应用配置与运行组织的问题,适合接入已有 Python 程序,让同一份代码能以明确参数重复执行。
主要功能
- 组合基础配置和配置组,管理数据、模型与运行环境等不同维度。
- 通过命令行覆盖参数,减少为每个实验复制脚本。
- 使用 multirun 扫描参数组合,生成有组织的实验运行。
- 结合结构化配置检查字段和类型,帮助发现配置错误。
- 保存运行配置与输出位置,便于回看某次实验使用的设置。
- 通过 sweeper 和 launcher 插件扩展参数搜索和任务启动方式。
要求、安装和快速入门
在项目的 Python 环境中运行 pip install hydra-core --upgrade,先按稳定版入门文档创建最小配置应用。将配置放入明确目录,再让入口函数接收配置对象。
把已有脚本中的数据路径、批量大小和模型选择逐项迁移到配置中。先验证单次运行能够读取正确参数,再增加配置组与多任务运行。依赖文件中固定实际使用的版本,团队文档也应与该版本对应。
把已有脚本中的数据路径、批量大小和模型选择逐项迁移到配置中。先验证单次运行能够读取正确参数,再增加配置组与多任务运行。依赖文件中固定实际使用的版本,团队文档也应与该版本对应。
用法
实践案例:比较两种模型配置和三种学习率。
1. 将公共训练设置放入基础配置,模型结构分别放入 model 配置组。
2. 保留一个默认组合,先运行一次,检查解析后的配置、输入路径与输出目录。
3. 使用命令行覆盖单个参数,确认程序实际读取了新值。
4. 按 multirun 文档组织两个模型与三个学习率的组合,共形成六个实验。
5. 每次运行保存配置、随机种子、评价指标和输出模型位置。
6. 汇总时按相同数据切分和评价方法比较结果,再决定是否扩大参数范围。
默认多任务启动按本地串行方式执行;需要并行或集群调度时,再选择相应 launcher。这样可以先把配置正确性与任务资源调度分别处理。
工作原理
应用入口声明配置位置,Hydra 读取默认配置及配置组,合并命令行覆盖项,形成最终配置对象。单次运行将该对象交给程序;多任务运行由 sweeper 生成参数组合,再交给 launcher 启动。配置组织、组合生成和执行方式因此能够分开扩展。
适合谁使用
需要管理实验参数的机器学习工程师、研究团队,以及拥有多个运行环境和可选组件的 Python 应用开发者。
环境与输入
与所选 Hydra 版本兼容的 Python 环境。应用本身的数据、训练框架和计算资源独立配置;使用额外插件时查看插件的依赖和启动条件。
具体使用场景
• 训练实验:组合模型、优化器和数据集配置。
• 数据处理:让同一处理程序读取不同输入路径和转换规则。
• 服务配置:在开发、测试与部署环境中复用基础配置并覆盖差异项。
实施要点
多维参数扫描会快速增加运行次数,启动前先计算组合数量。文件路径、工作目录和输出目录应明确约定。配置中的敏感信息使用专门的环境配置处理,避免混入可公开分享的实验记录。
常见问题
问:配置文件越多越好吗?
按稳定的变化维度划分,例如数据与模型;只出现一次的小参数可以先留在基础配置中。
问:multirun 会自动并行吗?
默认启动方式是本地串行,其他执行方式通过对应 launcher 配置。
关联项目与搭配思路
Lightning-AI/pytorch-lightning:Hydra 可以管理训练参数,Lightning 组织训练循环,二者在应用入口中连接。
hpcaitech/ColossalAI:适合大型训练实验中管理并行和模型配置,计算与通信仍由训练框架负责。
1. 将公共训练设置放入基础配置,模型结构分别放入 model 配置组。
2. 保留一个默认组合,先运行一次,检查解析后的配置、输入路径与输出目录。
3. 使用命令行覆盖单个参数,确认程序实际读取了新值。
4. 按 multirun 文档组织两个模型与三个学习率的组合,共形成六个实验。
5. 每次运行保存配置、随机种子、评价指标和输出模型位置。
6. 汇总时按相同数据切分和评价方法比较结果,再决定是否扩大参数范围。
默认多任务启动按本地串行方式执行;需要并行或集群调度时,再选择相应 launcher。这样可以先把配置正确性与任务资源调度分别处理。
工作原理
应用入口声明配置位置,Hydra 读取默认配置及配置组,合并命令行覆盖项,形成最终配置对象。单次运行将该对象交给程序;多任务运行由 sweeper 生成参数组合,再交给 launcher 启动。配置组织、组合生成和执行方式因此能够分开扩展。
适合谁使用
需要管理实验参数的机器学习工程师、研究团队,以及拥有多个运行环境和可选组件的 Python 应用开发者。
环境与输入
与所选 Hydra 版本兼容的 Python 环境。应用本身的数据、训练框架和计算资源独立配置;使用额外插件时查看插件的依赖和启动条件。
具体使用场景
• 训练实验:组合模型、优化器和数据集配置。
• 数据处理:让同一处理程序读取不同输入路径和转换规则。
• 服务配置:在开发、测试与部署环境中复用基础配置并覆盖差异项。
实施要点
多维参数扫描会快速增加运行次数,启动前先计算组合数量。文件路径、工作目录和输出目录应明确约定。配置中的敏感信息使用专门的环境配置处理,避免混入可公开分享的实验记录。
常见问题
问:配置文件越多越好吗?
按稳定的变化维度划分,例如数据与模型;只出现一次的小参数可以先留在基础配置中。
问:multirun 会自动并行吗?
默认启动方式是本地串行,其他执行方式通过对应 launcher 配置。
关联项目与搭配思路
Lightning-AI/pytorch-lightning:Hydra 可以管理训练参数,Lightning 组织训练循环,二者在应用入口中连接。
hpcaitech/ColossalAI:适合大型训练实验中管理并行和模型配置,计算与通信仍由训练框架负责。
模型兼容性与使用场景
Hydra 不绑定模型架构,也不执行训练计算。它可以将配置交给 PyTorch、其他训练框架或普通 Python 函数,具体字段由应用定义。
许可证与风险说明
Hydra 采用 MIT 许可证。当前官方仓库为 hydra-ecosystem/hydra,迁移说明和历史内容可通过仓库与官网查看。