网站需求建设书,重庆市建设节能中心网站,怎么打帮人 做网站开发的广告,建设网站 注册与登陆本文将介绍如何在单机多卡环境下#xff0c;使用 Hugging Face Accelerate 和 DeepSpeed ZeRO-2 实现 大模型 的 LoRA 高效微调。文章涵盖环境安装、accelerate config 交互式配置、DeepSpeed JSON 配置详解、训练命令示例及实战建议#xff0c;帮助你在两块 GPU 上顺利启动分…本文将介绍如何在单机多卡环境下使用 Hugging Face Accelerate 和 DeepSpeed ZeRO-2 实现 大模型 的 LoRA 高效微调。文章涵盖环境安装、accelerate config 交互式配置、DeepSpeed JSON 配置详解、训练命令示例及实战建议帮助你在两块 GPU 上顺利启动分布式训练。
一、背景介绍
在大模型微调场景中单卡显存常常成为瓶颈。DeepSpeed 的 ZeRO 技术通过分片优化器状态、梯度Stage 2或参数Stage 3将显存压力近似降至 1/N 。
Hugging Face Accelerate 提供一键式多进程启动方案无需改动训练代码即可与 DeepSpeed 联动自动处理 NCCL、混合精度和分布式环境变量 。 ps: 我们这里使用这个 deepseep的目的主要是因为模型太大了单卡不能用如果你是单卡都能训练只是为了多卡并行加速最小修改代码可以使用下面的代码缺点高通信
import torch.nn as nn
# 11. 将模型移动到指定设备GPU/CPU
model model.to(pc.device)
# 11a. 多卡并行
model nn.DataParallel(model)
# 打印可训练参数信息兼容 DataParallel
real_model model.module if isinstance(model, nn.DataParallel) else model
print(模型训练参数, real_model.print_trainable_parameters())
best_dir os.path.join(pc.save_dir, model_best)
# 保存时取底层 module
#real_model model.module if isinstance(model, nn.DataParallel) else model
save_model(real_model, cur_save_dir)
tokenizer.save_pretrained(cur_save_dir)
print(fBest model has saved at {best_dir}.)
二、环境准备 安装依赖
pip install deepspeed0.14 accelerate peft transformers4.41.0 以上命令会同时安装 DeepSpeed、Accelerate 及微调所需的 PEFT 与 Transformers 库 。 确认 GPU 信息 执行 nvidia-smi 可查看到两块 V100 32 GB GPU为分布式训练做好硬件准备。 三、Accelerate 交互式配置
在项目根目录或任意终端执行
accelerate config
依次回答如下 Compute environmentThis machine Machine typemulti-GPU Number of machines1 Use DeepSpeedyes Deepspeed JSON path/home/ubuntu/.../ds_config_zero2.json ZeRO Stage-3 Initno Enable MoEno GPU 数量2 几个卡写几
最终会在 ~/.cache/huggingface/accelerate/default_config.yaml 生成默认配置文件Accelerate 启动时即自动加载 。
⚠️注意这里显示的是你的json配置文件的路径DeepSpeed JSON内容见下文 四、DeepSpeed JSON 配置详解
将下面内容保存为项目根目录下的 ds_config_zero2.json
{train_batch_size: 4,gradient_accumulation_steps: 4,optimizer: { type: AdamW, params: { lr: 2e-5 } },zero_optimization: {stage: 2,contiguous_gradients: true,overlap_comm: true,reduce_scatter: true,allgather_partitions: true,offload_optimizer: { device: none },prefetch_bucket_size: 2e8,param_persistence_threshold: 1e6},bf16: { enabled: true },gradient_clipping: 1.0
} train_batch_size全局批量大小等效微批×累积步×GPU 数 gradient_accumulation_steps梯度累积步数显存受限时常用技巧 zero_optimization.stage2仅分片优化器状态和梯度代码无侵入式改动 contiguous_gradients/overlap_comm/reduce_scatter/allgather_partitions各类通信与缓冲区优化选项提升多卡效率并减少显存碎片 bf16.enabled启用 bfloat16 混合精度适用于 V100/H100 架构 gradient_clipping防止梯度爆炸保证训练稳定性
五、启动训练
在项目根目录执行
train.py 是你自己的训练脚本
accelerate launch train.py
Accelerate 会根据 default_config.yaml 生成等同于 torchrun --nproc_per_node2 的命令并自动加载 DeepSpeed 配置启动多卡训练流程 。
六、实战建议 ChatGLM-3/6B LoRA保持以上 Stage 2 配置无需 MoE 支持 。 DeepSeekMoE 系列若后续微调带 MoE 的 DeepSeek 模型如 DeepSeekMoE 16B/671B请单独准备 ds_config_moe.json在其中添加 moe: {enabled: true}并在代码中集成 DeepSpeed-MoE Expert 层以激活专家并行与稀疏路由 。 多配置切换可用
accelerate launch --config_file ds_config_moe.json train_deepseek.py 覆盖默认 DeepSpeed JSON实现 ChatGLM 与 DeepSeek 两种场景的无缝切换。
通过以上步骤你即可在多块 GPU 上完成单卡显存不够的问题借助 Accelerate DeepSpeed ZeRO-2高效完成大规模 LoRA 微调与分布式训练。祝你训练顺利
—————————— 后计如果模型特别大的情况下一般是用的 ZeRO-3 进行分片通常是大公司采用的规模我们这里ZeRO-2 就够用了配置的时候用几个卡如实填写就好了。