Prhub

#1700 fix: auto-detect GPUs in qwen3-4b script

THUDM/slime · 作者 ailuntz · 合并时间 2026-03-22 16:27

分析状态 已生成
文件变更 1提交数 1 · 评论 1
代码增减 +14 / -3
bugfix shell configuration

执行摘要

修复 qwen3-4B 脚本 GPU 数量硬编码问题,实现自动检测。

动机源于Issue #148,用户报告在4xH100机器上运行时因脚本中GPU数量未从8更新为4导致失败,错误日志不明确,增加了调试难度。PR body指出'derive NUM_GPUS from nvidia-smi when available - reuse NUM_GPUS for ray start and actor GPU flags',以自动化GPU数量检测,减少手动配置需求。

该PR变更简单,值得快速浏览以了解自动检测逻辑的设计决策,如优先用户定义、后回退检测和默认值,适合工程师参考shell脚本优化。

讨论亮点

无实质性review讨论。

实现拆解

实现集中于scripts/run-qwen3-4B.sh文件:1. 检测GPU数量:使用nvidia-smi -L命令计算GPU数量,若命令不可用则设为0。2. 设置NUM_GPUS变量:优先使用环境变量NUM_GPUS,否则使用检测值,若为空或小于等于0则默认设为8。3. 替换硬编码参数:将ray start --num-gpus 8--actor-num-gpus-per-node 8中的8替换为${NUM_GPUS},实现动态配置。

文件 模块 状态 重要度
scripts/run-qwen3-4B.sh scripts modified 5.0

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

技术风险包括:依赖nvidia-smi命令的可用性和输出格式,如果命令缺失或输出变化可能导致检测错误;默认值8假设可能不适用于GPU数量少(如1)或多(如超过8)的环境,引发配置不匹配。

影响范围:用户无需手动修改脚本,自动化GPU检测简化了配置步骤,减少因参数错误导致的运行失败。影响程度:仅影响使用qwen3-4B模型训练脚本的用户,对系统其他部分无影响,但提升了脚本的健壮性和易用性。

依赖外部命令 默认值假设

关联 Issue

#148 Fix Docs + Error logging: Misspecified number of GPUs in train script

完整报告

执行摘要

修复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,反映团队在持续优化模型启动脚本的健壮性和配置自动化。

参与讨论