环境安装
- git clone https://gitcode.com/gh_mirrors/ll/LLaMA-Factory.git
- cd LLaMA-Factory
- pip install -e ".[torch,metrics]"
- pip install deepspeed
复制代码 下载模型
- pip install modelscope
- modelscope download --model Qwen/Qwen2.5-7B-Instruct --local_dir /root/autodl-tmp/models/Qwen/Qwen2.5-7B-Instruct
复制代码 微调
- llamafactory-cli train \
- --stage sft \
- --do_train True \
- --model_name_or_path /root/autodl-tmp/models/Qwen/Qwen2.5-7B-Instruct \
- --preprocessing_num_workers 16 \
- --finetuning_type lora \
- --template qwen \
- --flash_attn auto \
- --dataset_dir data \
- --dataset self_SFT,alpaca_zh_demo \
- --cutoff_len 1024 \
- --learning_rate 0.0001 \
- --num_train_epochs 5.0 \
- --max_samples 1000 \
- --per_device_train_batch_size 4 \
- --gradient_accumulation_steps 8 \
- --lr_scheduler_type cosine \
- --max_grad_norm 1.0 \
- --logging_steps 5 \
- --save_steps 100 \
- --warmup_steps 0 \
- --packing False \
- --report_to none \
- --output_dir saves/Qwen2.5-7B-Instruct/lora/train_2024-12-20-09-43-52 \
- --bf16 True \
- --plot_loss True \
- --ddp_timeout 180000000 \
- --include_num_input_tokens_seen True \
- --optim adamw_torch \
- --lora_rank 8 \
- --lora_alpha 16 \
- --lora_dropout 0 \
- --lora_target all \
- --deepspeed cache/ds_z3_config.json
复制代码 笔者测试3080*2,1108条数据需要1个小时,bitch_size只能设为2,而且只能Zero3
但是也可以微调Qwen2.5-7B-Instruct了
Zero将模型参数分成三个部分:
状态作用Optimizer States优化器在进行梯度更新的时候需要用到的数据Gradient在反向转播过程中产生的数据,其决定参数的更新方向Model Parameter模型参数,在模型训练过程中通过数据“学习”的信息 Zero的级别如下:
总结
DeepSpeed方便了我们在机器有限的情况下来训练、微调大模型,同时它也有很多良好的性能来使用,后期可以继续挖掘。
现在主流的模型训练方式: GPU + PyTorch + Megatron-LM + DeepSpeed
优势
存储服从:DeepSpeed提供了一种Zero的新型办理方案来淘汰训练显存的占用,它与传统的数据并行差别,它将模型状态和梯度进行分区来节省大量的显存;
可扩展性:DeepSpeed支持高效的数据并行、模型并行、pipeline并行以及它们的组合,这里也称3D并行;
易用性: 在训练阶段,只需要修改几行代码就可以使pytorch模型使用DeepSpeed和Zero。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |