ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

如何读懂Miles启动脚本:4步拆解train_args组装与execute_train提交流程

如何读懂Miles启动脚本:4步拆解train_args组装与execute_train提交流程 如何读懂Miles启动脚本4步拆解train_args组装与execute_train提交流程【免费下载链接】milesMiles is an enterprise-facing reinforcement learning framework for LLM and VLM post-training, forked from and co-evolving with slime.项目地址: https://gitcode.com/GitHub_Trending/miles1/milesMiles 是一个面向企业级场景的大模型LLM/VLM后训练强化学习框架从 slime 分叉并共同演进。它把「每个支持的模型 一个 Python 启动脚本」作为核心设计你只需运行一条命令如python scripts/run_qwen3_4b.py脚本就会自动组装完整的train.py命令行参数即train_args并通过execute_train启动 Ray 集群、把训练任务提交上去。本文带你 4 步读懂这条从「脚本选项」到「分布式训练」的完整链路无需阅读任何源码细节也能上手。第1步先建立全局认知——Miles启动脚本的4层分工一个启动脚本只是「配方」不是训练进程本身。整条链路可以拆成 4 层看懂这个表格你再看任何一个scripts/run_*.py都不会迷路层级位置职责启动脚本scripts/run_qwen3_4b.py 等scripts/run_*.py保存模型配方脚本选项 各功能块的训练参数模型定义scripts/models/按megatron_model_type提供 Megatron 架构参数命令工具miles/utils/external_utils/command_utils.pyexecute_train起 Ray、提交作业训练入口train.py / train_async.py真正的训练进程运行在 Ray 作业内部上图展示了脚本提交作业后 Ray 集群内的分工数据缓冲区把 prompt 交给自定义 rollout 生成逻辑SGLang router 将请求分发给多个 SGLang 推理引擎Megatron 训练器完成梯度更新后把新权重同步回推理侧——这正是train_args里那些--rollout-*、--sglang-*参数背后的系统。第2步读懂ScriptArgs——dataclass如何变成命令行选项打开 scripts/run_qwen3_4b.py第一个要看的类是ScriptArgs它继承自 ExecuteTrainConfig自带num_nodes、output_dir等所有启动器共享的选项脚本自身的选项model_name、hardware、train_backend、enable_eval……都是普通字段文件底部的U.dataclass_cli装饰器把每个字段自动暴露为两种方式--kebab-case命令行参数如--model-dir和MILES_SCRIPT_*前缀环境变量如MILES_SCRIPT_MODEL_DIR。优先级顺序很直白命令行 环境变量 字段默认值。环境变量这条通道是集群工具注入机器相关配置的「后门」你不需要改脚本一行代码。ScriptArgs.__post_init__还负责做两件推导自动检测硬件并换算每节点 GPU 数U.resolve_hardwareNUM_GPUS_OF_HARDWARE以及按模型名推导默认并行策略TP/PP/CP、序列并行开关、max_tokens_per_gpu等。第3步execute()解剖——train_args由哪几个参数块拼成execute(args)是train_args的组装车间。它按「一个关注点一个字符串块」的方式构建参数最后按固定顺序拼接train_args ckpt_args rollout_args optimizer_args grpo_args wandb参数 perf_args eval_args ci_args sglang_args train_backend_args misc_args true_on_policy_args args.extra_args各块的分工对照官方 Argument Groups 文档 一句话就能记住参数块管什么典型标志ckpt_args三个模型角色的路径--hf-checkpoint、--ref-load、--load、--saverollout_args数据入口与采样量--prompt-data、--rollout-batch-size、--n-samples-per-prompt、--rm-typegrpo_argsRL 目标函数--advantage-estimator grpo、--eps-clip、--use-kl-lossoptimizer_args优化器与学习率--optimizer adam、--lr 1e-6train_backend_args按后端分叉fsdp/megatronTP/PP/CP 并行度、重计算、动态 batchsglang_args推理引擎拓扑与透传--rollout-num-gpus-per-engine、--sglang-mem-fraction-staticmisc_argsGPU 布局与杂项--actor-num-nodes、--colocate、--dump-details有两个「隐藏块」值得知道模型架构参数不由脚本拼接。Megatron 无法从 HuggingFace checkpoint 推断全部结构所以execute_train会按megatron_model_type到 scripts/models/ 下按文件名解析对应脚本如 scripts/models/qwen3-4B.py 返回--num-layers 36 --hidden-size 2560 …并把这些架构参数插到train_args之前。wandb 参数是条件性的。U.get_default_wandb_args只在检测到WANDB_API_KEY时才返回--use-wandb系列参数——导出密钥即开启日志零脚本改动。第4步execute_train做了什么——从参数串到Ray作业组装完的train_args交给 execute_train()它依次执行 5 件事日志里都会带EXEC:前缀逐条打印相当于完整的执行记录清场杀掉残留的sglang、miles、redis进程ray stop --force停掉旧集群起集群ray start --head --num-gpus num_gpus_per_node启动新的 Ray head 节点执行提交前钩子若传了before_ray_job_submit例如 ssh_start_ray_workers 通过 ssh 把多机拉进集群此时运行构建运行时环境注入PYTHONUNBUFFERED、CUDA_DEVICE_MAX_CONNECTIONS1仅 Megatron 后端、NCCL_NVLS_ENABLE自动探测 NVLink、MASTER_ADDR、no_proxy以及把仓库根目录和--megatron-path拼进PYTHONPATH提交作业ray job submit -- python3 train.py 架构参数 train_args。两个环境变量可以跳过快照中的部分步骤MILES_SCRIPT_EXTERNAL_RAY1表示集群已存在跳过清场和ray startMILES_SCRIPT_ENABLE_RAY_SUBMIT0则只演练不提交适合排障。提交之后train.py的三段式训练循环作业进入 train.py 后流程一目了然parse_args()解析全部参数 →create_rollout_components拉起带 SGLang 引擎的 rollout 管理器 →create_training_models建 actor/critic → 先update_weights保证推理侧拿到训练权重 → 进入 rollout 循环采样 → 训练 → 周期性save/eval→ 回传权重。训练效果在曲线上长这样常见问题不改脚本如何覆盖配方方式做法适用场景追加--extra-args末尾追加的参数同名覆盖前面的快速试验--extra-args --lr 2e-6环境变量MILES_SCRIPT_MODEL_DIR/mnt/models python scripts/run_qwen3_4b.py集群工具注入机器相关路径直接编辑脚本改ScriptArgs或参数块想长期保留的改动更多细节可查官方文档 Launch Script 指南、Argument Groups 分组说明 与 CLI Reference。相关文件速查单模型启动脚本scripts/run_qwen3_4b.py、scripts/run_deepseek_v4.py模型架构参数目录scripts/models/每个megatron_model_type一个同名文件命令工具核心miles/utils/external_utils/command_utils.py训练入口train.py、train_async.py【免费下载链接】milesMiles is an enterprise-facing reinforcement learning framework for LLM and VLM post-training, forked from and co-evolving with slime.项目地址: https://gitcode.com/GitHub_Trending/miles1/miles创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表