执行摘要
修复qwen3-4B训练脚本中GPU数量硬编码问题,通过自动检测nvidia-smi输出实现动态配置,简化用户操作并避免配置错误,属于重要的bugfix改进。
功能与动机
动机源于Issue #148,用户报告在4xH100机器上运行时因脚本中GPU数量未从8更新为4导致失败,错误日志不明确。本PR旨在自动化GPU数量检测,减少手动配置需求,引用PR body:"derive NUM_GPUS from nvidia-smi when available - reuse NUM_GPUS for ray start and actor GPU flags"。
实现拆解
改动集中于scripts/run-qwen3-4B.sh文件:
- 添加GPU检测逻辑:使用
nvidia-smi -L命令获取GPU数量,如果命令不可用则设为0。
- 设置
NUM_GPUS变量:优先使用用户定义值(通过环境变量),否则使用检测值,若仍为空或小于等于0则默认设为8。
- 替换硬编码参数:将
ray start --num-gpus 8和--actor-num-gpus-per-node 8中的8替换为${NUM_GPUS}。
关键代码块示例:
if command -v nvidia-smi >/dev/null 2>&1; then
DETECTED_GPUS=$(nvidia-smi -L 2>/dev/null | wc -l | tr -d ' ')
else
DETECTED_GPUS=0
fi
NUM_GPUS=${NUM_GPUS:-${DETECTED_GPUS}}
if [ -z "$NUM_GPUS" ] || [ "$NUM_GPUS" -le 0 ]; then
NUM_GPUS=8
fi
评论区精华
无实质性review讨论。
风险与影响
- 风险:依赖
nvidia-smi命令,若不可用或输出格式变化可能导致检测错误;默认值8假设可能不适用于所有GPU环境,引发配置不匹配。
- 影响:用户无需手动修改脚本,自动化提升易用性;仅影响qwen3-4B模型的训练流程,减少配置错误导致的运行失败。
关联脉络
与近期PR #1719(修复Qwen3-235B-A22B脚本)和#1689(修复shell脚本变量引用)类似,都属于shell脚本的bugfix,反映团队在持续优化模型启动脚本的健壮性和配置自动化。
参与讨论