此前我们将Qwen和CLIP模型进行了合并存储,合并存储之后的config_model.json中最外层没有hidden_size的配置,故DeepSpeed初始化时reduce_bucket_size就不能设置为”auto”。

transformers库官方issue地址:Deepspeed initialization AttributeError: ‘EncoderDecoderConfig’ object has no attribute ‘hidden_size’ #22176

解决方案:

  • 1 向config_model.json中手工添加hidden_size
  • 2 向deepspeed配置文件中手动设置reduce_bucket_size的值。

reduce_bucket_size:分布式传输数据的size,如果设置为”auto”,则会通过config_moel.json中的hidden_size进行计算确认。

此处我们将reduce_bucket_size设置为3e8,即300M。

{
    "fp16": {
        "enabled": "auto",
        "loss_scale": 0,
        "loss_scale_window": 1000,
        "initial_scale_power": 16,
        "hysteresis": 2,
        "min_loss_scale": 1
    },
    "bf16": {
        "enabled": "auto"
    },
    "train_micro_batch_size_per_gpu": "auto",
    "train_batch_size": "auto",
    "gradient_accumulation_steps": "auto",
    "zero_optimization": {
        "stage": 2,
        "overlap_comm": true,
        "contiguous_gradients": true,
        "sub_group_size": 1e9,
        "reduce_bucket_size": 3e8
    }
}

修改后,启动生效!!