Determined AI 项目实验创建与提交指南
概述
在 Determined AI 项目中,实验(Experiment)是执行训练代码的核心方式。本文将详细介绍如何创建和提交实验,包括配置启动器(Launcher)、设置训练代码定义、使用预定义启动器以及实验的生命周期管理。
启动器配置详解
启动器是实验配置中的关键组件,它定义了如何运行训练代码。在实验配置文件的endpoint
字段中指定启动器类型:
启动器类型选择
- 传统Trial类启动器:适用于简单场景
- Determined预定义启动器:
- Horovod启动器
- PyTorch分布式启动器
- DeepSpeed启动器
- 自定义启动器:满足特殊需求
- 容器内命令:直接运行命令
注意:使用AMD ROCm GPU时,必须在实验配置中指定slot_type: rocm
。
分布式训练要求
分布式训练启动器需要满足以下关键要求:
- 正确启动所有工作节点,传递必要的对等信息
- 监控工作节点状态,异常时终止所有节点
- 所有节点正常退出后自身才退出
这些要求确保了分布式训练作业不会因单个节点故障而挂起。
启动器设置实践
入口点配置
实验入口点在实验配置文件中定义,支持两种主要形式:
- 使用Trial类:
entrypoint: python3 -m determined.launch.horovod --trial model_def:MyTrial
- 使用自定义脚本:
entrypoint: python3 script.py arg1 arg2
自定义启动器日志处理
对于自定义启动器,建议使用包装脚本确保日志按rank分离:
python3 -m determined.launch.wrap_rank $RANK CMD [ARGS...]
训练代码定义方式
Trial类方式
定义格式为filepath:ClassName
,例如:
--trial model_def:MyTrial
其中model_def
是包含训练类的文件路径,MyTrial
是Python训练类名。
自定义脚本方式
直接运行脚本,支持传递参数:
script.py [args...]
预定义启动器深度解析
Horovod启动器
自动配置Horovod运行环境,支持参数覆盖:
python3 -m determined.launch.horovod --fusion-threshold-mb 1 -- --trial model_def:MyTrial
PyTorch分布式启动器
基于torch.distributed.run,支持参数定制:
python3 -m determined.launch.torch_distributed --rdzv_endpoint=$ADDR -- --trial model_def:MyTrial
DeepSpeed启动器
简化DeepSpeed配置,自动处理分布式细节:
python3 -m determined.launch.deepspeed --trial model_def:MyTrial
TensorFlow启动器
自动配置TF分布式策略:
python3 -m determined.launch.tensorflow -- python3 ./my_train.py
嵌套启动器技巧
支持在单个脚本中嵌套多个启动器,适用于特殊场景:
dlprof --mode=simple python3 -m determined.launch.torch_distributed --trial model_def:MnistTrial
实验创建全流程
创建命令
det experiment create <配置文件> <上下文目录>
关键参数说明:
- 配置文件:YAML格式的实验配置
- 上下文目录:包含训练代码和相关文件
注意事项:
- 上下文目录总大小不超过95MB
- 使用
.detignore
文件排除不需要的文件 - 大数据集应通过数据加载器从外部读取
实验生命周期管理
预训练阶段
- 主节点分配资源
- 拉取容器镜像(默认或自定义)
- 执行
startup-hook.sh
脚本
暂停与恢复机制
实验支持暂停和恢复:
- 暂停时自动创建检查点
- 恢复时从检查点继续
- 可手动暂停或由调度器自动暂停
最佳实践建议
- 分布式训练:确保启动器正确处理节点故障
- 资源管理:合理配置GPU类型和数量
- 代码组织:保持上下文目录精简
- 检查点:充分利用暂停/恢复功能
- 日志分析:使用包装脚本分离rank日志
通过本文的详细指导,您应该能够熟练地在Determined AI平台上创建和管理实验,充分利用其分布式训练和资源管理能力。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考