【LLMOps】Accelerate & DeepSpeed多卡使用

发布时间 2023-12-12 15:07:04作者: 周周周文阳

介绍

目前大模型微调主要方案是 LLaMA-Factory 

LLaMA-Factory中,提供了两种多卡框架:Accelerate、DeepSpeed

Accelerate

依赖

accelerate==0.24.1
transformers==4.34.1
datasets==2.14.7
tiktoken==0.5.1
peft==0.6.2
trl==0.7.1

这里只列出可能冲突版本

注意

使用最新版本0.24.1,尝试使用0.21.0,发现gpu_ids不生效

其中trl需要降级到0.7.1,最新的0.7.4训练会报错。默认第一步安装是0.7.4

配置

  yaml配置如下:

compute_environment: LOCAL_MACHINE
distributed_type: MULTI_GPU
downcast_bf16: 'no'
machine_rank: 0
main_training_function: main
mixed_precision: fp16
gpu_ids: 1,3
num_machines: 1
num_processes: 2
rdzv_backend: static
same_network: true
tpu_env: []
tpu_use_cluster: false
tpu_use_sudo: false
use_cpu: false

  最终命令:

accelerate launch --config_file /root/default_config.yaml src/train_bash.py [llama-factory参数]

  注意:

gpu_ids数量跟num_processes必须要一致

训练速度

模型大小 数据量 训练模式 资源 时长/epoch
14B 4500 LoRA微调 单机单卡 52分钟
14B 4500 LoRA微调 单机2卡 28分钟
14B 4500 LoRA微调 单机3卡 19分钟

从结果来看,训练速度基本与显卡数量成线性关系。且显存大小几乎一样

DeepSpeed

依赖

deepspeed==0.12.3
transformers==4.34.1
datasets==2.14.7
tiktoken==0.5.1
peft==0.6.2
trl==0.7.1

 

配置

deepspeed --include="localhost:0" src/train_bash.py [llama-factory参数] --deepspeed /root/ds_config.json

  

注意

单机训练不需要配置hostfile,但是需要配置localhost

速度

未完待续