此前我们将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
}
}
修改后,启动生效!!