当模型参数越来越大的情况下,如果我们的GPU内存比较小,那么就没办法直接进行全参数微调,此时我们可以借助deepspeed来进行微调。

1、deepspeed的配置文件:deepspeed.json

{
  "train_batch_size": 4,
  "train_micro_batch_size_per_gpu": 1,
  "zero_optimization": {
    "stage":1
  }
}

这里我们启动的ZeRO-1:优化器状态跨 GPU 分区

2、在TrainingArguments里面增加配置参数,来加载deepspeed的配置文件:

training_args = TrainingArguments(output_dir=output_dir, 
evaluation_strategy="steps", num_train_epochs=100,learning_rate=5e-6,
save_strategy="steps", greater_is_better=True, metric_for_best_model="precision",
per_device_train_batch_size=1,per_device_eval_batch_size=1,
load_best_model_at_end=True,local_rank=0,save_total_limit=10,

deepspeed="deepspeed.json"
)

3、利用deepspeed的命令来启动训练:

nohup deepspeed train.py > logd.txt 2>&1 &

当前我们利用44G的GPU全参微调了Qwen2.5-3B的模型

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐