如何使用DeepSpeed来训练大模型

news2025/6/2 14:32:16

🔥 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.loss
    model_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, TrainingArguments

training_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 加速推理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2393716.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unity 中实现首尾无限循环的 ListView

之前已经实现过: Unity 中实现可复用的 ListView-CSDN博客文章浏览阅读5.6k次,点赞2次,收藏27次。源码已放入我的 github,地址:Unity-ListView前言实现一个列表组件,表现方面最核心的部分就是重写布局&…

mongodb集群之副本集

目录 1. 适用场景备份高可用性 2. 集群搭建如何搭建资源规划根据资源完成各节点conf文件的配置启动各个mongodb节点初始化集群信息 搭建实例Linux搭建实例(待定)Windows搭建实例 3. 副本集基础操作4.集群平滑升级 1. 适用场景 备份 1)服务器…

基于微服务架构的社交学习平台WEB系统的设计与实现

设计(论文)题目 基于微服务架构的社交学习平台WEB系统的设计与实现 摘 要 社交学习平台 web 系统要为学习者打造一个开放、互动且社交性强的在线教育环境,打算采用微服务架构来设计并实现一个社交学习平台 web 系统,以此适应学…

放假带出门的充电宝买哪种好用耐用?倍思超能充35W了解一下!

端午节的到来和毕业季的临近,让很多人开始计划出游或长途旅行。而在旅途中,一款好用耐用的充电宝可以省不少事。今天,我们就来聊聊放假带出门的充电宝买哪种好用耐用,看看为什么倍思超能充35W更适合带出门~ 一、为什么需要一款好用…

AI智能体策略FunctionCalling和ReAct有什么区别?

Dify 内置了两种 Agent 策略:Function Calling 和 ReAct,但二者有什么区别呢?在使用时又该如何选择呢?接下来我们一起来看。 1.Function Calling Function Call 会通过将用户指令映射到预定义函数或工具,LLM 先识别用…

改进自己的图片 app

1. 起因, 目的: 前面我写过一个图片 app , 最新做了些改动。 把原来的一列,改为3列, 继续使用瀑布流手机上使用,更流畅,横屏显示为2列。 2. 先看效果 3. 过程: 过程太细碎了,这里只是做一下…

Uniapp+UView+Uni-star打包小程序极简方案

一、减少主包体积 主包污染源(全局文件依赖)劲量独立导入 componentsstaticmain.jsApp.vueuni.css 分包配置缺陷,未配置manifest.json中mp-weixin节点 "usingComponents" : true,"lazyCodeLoading" : "requiredC…

算法题(159):快速幂

审题: 本题需要我们计算出(a^b)%c的值,并按照规定格式输出 思路: 方法一:暴力解法 我们直接循环b次计算出a^b,然后再取余c,从而得出最终结果 时间上:会进行2^31次,他的数量级非常大,…

【新品发布】嵌入式人工智能实验箱EDU-AIoT ELF 2正式发布

在万物互联的智能化时代,将AI算法深度植入硬件终端的技术,正悄然改变着工业物联网、智慧交通、智慧医疗等领域的创新边界。为了助力嵌入式人工智能在教育领域实现高质量发展,飞凌嵌入式旗下教育品牌ElfBoard,特别推出嵌入式人工智…

基于javaweb的SpringBoot体检管理系统设计与实现(源码+文档+部署讲解)

技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文…

IPD的基础理论与框架——(四)矩阵型组织:打破部门壁垒,构建高效协同的底层

在传统的组织架构中,企业多采用直线职能制,就像一座等级森严的金字塔,信息沿着垂直的层级传递,员工被划分到各个职能部门。这种架构职责清晰、分工明确,在稳定的市场环境中,能让企业高效运作,发…

小程序为什么要安装SSL安全证书

小程序需要部署SSL安全证书,这是小程序开发及运营的强制性要求,也是保障用户数据安全、提升用户体验和满足平台规范的必要措施。 一、平台强制要求 微信小程序官方规范 微信小程序明确要求所有网络请求必须通过HTTPS协议传输,服务器域名需配…

python打卡训练营打卡记录day40

知识点回顾: 彩色和灰度图片测试和训练的规范写法:封装在函数中展平操作:除第一个维度batchsize外全部展平dropout操作:训练阶段随机丢弃神经元,测试阶段eval模式关闭dropout 作业:仔细学习下测试和训练代码…

【清晰教程】利用Git工具将本地项目push上传至GitHub仓库中

Git 是一个分布式版本控制系统,由 Linus Torvalds 创建,用于有效、高速地处理从小到大的项目版本管理。GitHub 是一个基于 Git 的代码托管平台,提供了额外的协作和社交功能,使项目管理更加高效。它们为项目代码管理、团队协作和持…

20250529-C#知识:静态类、静态构造函数和拓展方法

C#知识:静态类、静态构造函数和拓展方法 静态类一般用来编写工具类 1、静态类 用static关键字修饰的类一般充当工具类只能包含静态成员,不能包含静态索引器不能被实例化静态方法只能使用静态成员非静态方法既可以使用非静态成员,也可以使用静态成员 sta…

实验设计与分析(第6版,Montgomery)第4章随机化区组,拉丁方, 及有关设计4.5节思考题4.18~4.19 R语言解题

本文是实验设计与分析&#xff08;第6版&#xff0c;Montgomery著&#xff0c;傅珏生译) 第章随机化区组&#xff0c;拉丁方&#xff0c; 及有关设计4.5节思考题4.18~4.19 R语言解题。主要涉及方差分析&#xff0c;拉丁方。 batch <- c(rep("batch1",5), rep(&quo…

【吾爱】逆向实战crackme160学习记录(一)

前言 最近想拿吾爱上的crackme程序练练手&#xff0c;发现论坛上已经有pk8900总结好的160个crackme&#xff0c;非常方便&#xff0c;而且有很多厉害的前辈已经写好经验贴和方法了&#xff0c;我这里只是做一下自己练习的记录&#xff0c;欢迎讨论学习&#xff0c;感谢吾爱论坛…

vue2 + webpack 老项目升级 node v22 + vite + vue2 实战全记录

前言 随着这些年前端技术的飞速发展&#xff0c;几年前的一些老项目在最新的环境下很可能会出现烂掉的情况。如果项目不需要升级&#xff0c;只需要把编译后的文件放在那里跑而不用管的话还好。但是&#xff0c;某一天产品跑过来给你讲要升级某一个功能&#xff0c;你不得不去…

STM32的HAL编码流程总结(上部)

目录 一、GPIO二、中断系统三、USART串口通信四、I2C通信五、定时器 一、GPIO 1.选择调试类型 在SYS中Debug选择Serial Wire模式 2.选择时钟源 在RCC中将HSE和LSH都选择为内部晶振 3.时钟树配置 4.GPIO配置 在芯片图上选择开启的引脚和其功能 配置引脚的各自属性 5.工…

深度学习|pytorch基本运算

【1】引言 pytorch是深度学习常用的包&#xff0c;顾名思义&#xff0c;就是python适用的torch包&#xff0c;在python里面使用时直接import torch就可以调用。 需要注意的是&#xff0c;pytorch包与电脑配置、python版本有很大关系&#xff0c;一定要仔细阅读安装要求、找到…