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

Deepspeed JSON配置文件被忽略,配置未生效求助

解决Deepspeed配置文件不生效的问题

你的核心问题是代码未通过Deepspeed的核心初始化流程加载配置,仅调用deepspeed.init_distributed()不会读取ds_config.json中的设置,需要通过deepspeed.initialize()完成配置加载、分布式初始化、模型/优化器绑定的全流程。

修复步骤

  • 移除手动调用的deepspeed.init_distributed(),deepspeed.initialize()会自动完成分布式环境初始化
  • 必须在代码中定义模型、优化器(对应你配置中的Adam优化器),并传入deepspeed.initialize()
  • 确保deepspeed.add_config_arguments(parser)正确添加参数,命令行传入的--deepspeed_config才会被解析

完整修复代码示例

import argparse
import torch
import torch.nn as nn
import deepspeed

def add_argument():
    parser = argparse.ArgumentParser(description='CIFAR')  
    parser.add_argument('--local_rank', type=int, default=-1,
                        help='local rank passed from distributed launcher')
    parser = deepspeed.add_config_arguments(parser)
    args = parser.parse_args()
    return args

# 定义示例模型(替换为你的实际模型)
class CIFARModel(nn.Module):
    def __init__(self):
        super().__init__()
        self.conv1 = nn.Conv2d(3, 6, 5)
        self.pool = nn.MaxPool2d(2, 2)
        self.conv2 = nn.Conv2d(6, 16, 5)
        self.fc1 = nn.Linear(16 * 5 * 5, 120)
        self.fc2 = nn.Linear(120, 84)
        self.fc3 = nn.Linear(84, 10)

    def forward(self, x):
        x = self.pool(torch.relu(self.conv1(x)))
        x = self.pool(torch.relu(self.conv2(x)))
        x = torch.flatten(x, 1)
        x = torch.relu(self.fc1(x))
        x = torch.relu(self.fc2(x))
        x = self.fc3(x)
        return x

args = add_argument()

# 初始化模型、优化器(对应ds_config中的Adam配置)
model = CIFARModel()
optimizer = torch.optim.Adam(model.parameters(), lr=3e-4)

# 核心:通过deepspeed.initialize加载配置并完成初始化
model, optimizer, _, _ = deepspeed.initialize(args=args, model=model, optimizer=optimizer)

# 验证激活 checkpointing 是否生效
print("Activation checkpointing configured:", deepspeed.checkpointing.is_configured())

关键说明

  1. 配置加载逻辑:deepspeed.initialize()会自动解析命令行传入的--deepspeed_config文件,将其中的参数(包括activation checkpointing、FP16等)应用到训练流程中,单独调用init_distributed()只会初始化分布式环境,不会处理配置。
  2. 手动调用configure报错原因:deepspeed.checkpointing.configure()需要依赖Deepspeed内部初始化的MPU(模型并行单元),而initialize()会根据配置自动完成MPU的初始化,单独调用该方法会因缺少依赖报错。
  3. 验证方法:在initialize()之后调用deepspeed.checkpointing.is_configured(),返回True即说明配置生效;也可以打印相关配置参数确认加载状态。

保持原执行命令不变

你的启动命令无需修改,继续使用:

deepspeed --num_nodes=2 --hostfile ./hostfile --num_gpus=2 ./rundeepspeed.py \
--deepspeed \
--deepspeed_config ./ds_config.json

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 05:48:25