当前位置: 首页 > news >正文

如何使用DeepSpeed来训练大模型

🔥 DeepSpeed是什么?

  • DeepSpeed 是微软开源的一个 分布式训练加速库

  • 能帮助我们:

    • 高效训练大模型(百亿、千亿参数规模)

    • 节省显存、加速训练

    • 支持 ZeRO 优化器、Offload、混合精度(FP16/BF16)、梯度累积

    • 快速启动多机多卡训练

总结一句话:

DeepSpeed = 大模型训练神器,尤其适合 SFT、预训练、微调阶段。


🌈 DeepSpeed 安装

1️⃣ 安装基础依赖

通常只需要:

pip install deepspeed

对于更大规模训练,可以加上:

pip install deepspeed[all]

确保安装了 PyTorch >= 1.12。


🚀 DeepSpeed 快速上手(训练脚本改造)

2️⃣ 修改训练脚本(以 PyTorch / Hugging Face 为例)

🧩 (1)DeepSpeed CLI 启动

假设你已经有一个 train.py(PyTorch训练脚本):

deepspeed train.py --deepspeed ds_config.json
  • ds_config.json:DeepSpeed配置文件(稍后详细讲)。

🧩 (2)代码适配(只需两步!)

✅ a. 导入 deepspeed

import deepspeed

✅ b. 替换优化器 & 模型初始化:

model_engine, optimizer, _, _ = deepspeed.initialize(args=your_args,model=model,optimizer=optimizer,model_parameters=model.parameters(),config="ds_config.json"
)

✅ c. 训练 loop 改为:

for batch in dataloader:outputs = model_engine(batch)loss = outputs.lossmodel_engine.backward(loss)model_engine.step()

🎯 小结:只需 initializemodel_engine 替换,几行代码搞定!


🔍 DeepSpeed配置文件(ds_config.json)详解

这是 DeepSpeed 的核心,控制训练的优化策略。常见配置如下:

{"train_batch_size": 32,"train_micro_batch_size_per_gpu": 4,"gradient_accumulation_steps": 8,"zero_optimization": {"stage": 2,"offload_optimizer": {"device": "cpu"},"offload_param": {"device": "cpu"}},"fp16": {"enabled": true},"gradient_clipping": 1.0,"steps_per_print": 100,"wall_clock_breakdown": false
}

⚙️ 常见配置解释:

参数含义推荐值 / 建议
train_batch_size全局 batch size必须设置
train_micro_batch_size_per_gpu每个GPU的 batch size看显存而定
gradient_accumulation_steps梯度累积步数train_batch_size / (num_gpus * micro_batch_size)
zero_optimizationZeRO 优化器stage 1/2/3
offload_optimizer优化器 offload省显存,慢一点
offload_param参数 offloadstage 3 时常用
fp16 / bf16混合精度true
gradient_clipping梯度裁剪1.0


📦 Hugging Face 🤗 集成 DeepSpeed

Hugging Face Transformers 已原生支持 DeepSpeed!
只需在 trainer 里加上 --deepspeed 参数即可!

✅ 步骤:
1️⃣ 准备 ds_config.json
2️⃣ 命令行运行:

accelerate config  # 配置训练
accelerate launch --multi_gpu --deepspeed ds_config.json train.py

✅ 代码示例:

from transformers import Trainer, TrainingArgumentstraining_args = TrainingArguments(output_dir="./results",per_device_train_batch_size=2,per_device_eval_batch_size=2,gradient_accumulation_steps=8,fp16=True,deepspeed="ds_config.json",  # 只需加这一行!
)trainer = Trainer(model=model,args=training_args,train_dataset=train_dataset,eval_dataset=eval_dataset,
)trainer.train()


💡 高级技巧

ZeRO-3 + Offload
最大化节省显存(即使只有 24GB 显卡也能训练 65B 模型!)
Activation Checkpointing
减少显存占用,开启方式:

"activation_checkpointing": {"partition_activations": true,"contiguous_memory_optimization": true
}

梯度累积
模拟大 batch size,显存不够时的必杀技。
DeepSpeed Inference Engine
支持推理加速,适合部署阶段。


🌳 项目结构

sft_project/
├── data/
│   ├── train.jsonl
│   └── val.jsonl
├── model/
│   └── (预训练模型文件夹,如LLaMA、Baichuan)
├── deepspeed_config/
│   └── ds_config.json
├── train.py
├── requirements.txt
└── README.md

🎓 总结

你想做什么?如何用DeepSpeed?
训练大模型deepspeed 启动,写好 ds_config.json
不想改代码Hugging Face Trainer + --deepspeed 参数
显存不够开启 ZeRO-3 + Offload + FP16/BF16
多机多卡训练deepspeed --num_gpus=8accelerate launch
部署DeepSpeed Inference 加速推理

相关文章:

  • 【前端】Vue3+elementui+ts,TypeScript Promise<string>转string错误解析,习惯性请出DeepSeek来解答
  • 部署LVS-DR群集
  • OpenAI大模型不听人类指令事件的技术分析与安全影响
  • 如何收集Oracle DB SQL Monitor报告
  • 根据基因名称自动获取染色体上的位置
  • 西门子SCL语言编写两台电机正反转控制程序,并涵盖从选型、安装到调试全过程的详细步骤指南(上)
  • opengl - 在本地搭建API的文档说明网站
  • 全球轨道铺设设备市场发展现状与未来趋势分析
  • 第 85 场周赛:矩阵重叠、推多米诺、新 21 点、相似字符串组
  • js中后台框架的增删改查要点
  • XCTF-web-easyphp
  • 从C++编程入手设计模式1——单例模式
  • vscode 配置 QtCreat Cmake项目
  • 性能测试怎么做?方法、流程与核心要点解析
  • 《Discuz! X3.5开发从入门到生态共建》第1章 Discuz! 的前世今生-优雅草卓伊凡
  • React+Antd全局加载遮罩工具
  • Linux轻量级文件传输——tftp命令
  • Dropout 在大语言模型中的应用:以 GPT 和 BERT 为例
  • C接口 中文字符问题
  • 高端制造行业 VMware 替代案例合集:10+ 头部新能源、汽车、半导体制造商以国产虚拟化支持 MES、PLM 等核心应用系统
  • 网站文章系统/最近的电脑培训学校
  • asp网站建设软件/南京百度竞价推广公司排名
  • 护肤品网站建设环境分析/免费google账号注册入口
  • 自我介绍ppt配图/潍坊seo培训
  • 西安有专业制作网站的公司吗/汕头seo代理商
  • 网站的作用/营销策划公司名字