You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用DeepSpeed+HuggingFace Trainer训练LLM遇DummyOptim属性错误求助

解决思路

1. 检查训练代码的优化器初始化逻辑

  • 不要手动初始化优化器后再传给Trainer,DeepSpeed需要自行接管优化器的创建流程。如果代码里存在optimizer = AdamW(model.parameters(), lr=...)这类手动初始化代码,直接删除,将Trainer的optimizers参数留空,让DeepSpeed根据配置文件生成优化器。
  • 若使用TRL的SFTTrainer,不要手动设置优化器相关参数,让DeepSpeed全权处理即可。

2. 验证DeepSpeed配置文件的正确性

  • 配置文件必须包含完整的优化器及调度器配置,示例如下:
    {
      "optimizer": {
        "type": "AdamW",
        "params": {
          "lr": 2e-5,
          "betas": [0.9, 0.999],
          "eps": 1e-8,
          "weight_decay": 0.01
        }
      },
      "scheduler": {
        "type": "WarmupLR",
        "params": {
          "warmup_min_lr": 0,
          "warmup_max_lr": 2e-5,
          "warmup_num_steps": 1000
        }
      },
      "train_batch_size": 8,
      "gradient_accumulation_steps": 4,
      "fp16": {
        "enabled": true
      }
    }
    
  • 避免配置冲突,比如不要同时启用zero_optimization和手动优化器设置,Zero阶段配置需与优化器兼容。

3. 用正确方式启动训练脚本

  • 必须通过DeepSpeed专属命令启动训练,示例:
    deepspeed --num_gpus=4 train.py --deepspeed ds_config.json
    
  • 不能直接用python train.py启动,否则DeepSpeed无法正确注入优化器等核心组件,导致DummyOptim无法正常工作。

4. 排查TRL与DeepSpeed的兼容性

  • 确认trl=0.9.4、deepspeed=0.14.5及对应transformers版本的兼容性。可尝试将TRL升级至最新稳定版,或回退到已知兼容的版本组合。
  • 使用SFTTrainer时,初始化阶段不要覆盖optimizers参数,交给DeepSpeed自动处理。

5. 检查模型加载流程

  • 不要手动调用model.to(device),DeepSpeed会自动处理设备分配。手动移动模型可能破坏优化器的初始化流程。
  • 若模型有自定义初始化逻辑,确保不会干扰DeepSpeed的优化器注入流程。

6. 通过DeepSpeed日志排查细节

  • 启动训练时添加--deepspeed_log_level info参数,查看DeepSpeed初始化日志,确认优化器是否被正确创建,是否有错误或警告提示初始化失败的具体原因。

内容的提问来源于stack exchange,提问作者Refinath

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 14:55:07