首页 > 其他分享 >Distributed Training: DeepSpeed ZeRO 1/2/3 + Accelerate, Megatron-LM

Distributed Training: DeepSpeed ZeRO 1/2/3 + Accelerate, Megatron-LM

时间:2024-09-07 08:56:33浏览次数:11  
标签:Training 7B Distributed LM Bytes DeepSpeed ZeRO

1 Introduction

Github: https://github.com/microsoft/DeepSpeed

  1. ZeRO: Memory Optimizations Toward Training Trillion
    Parameter Models
  2. ZeRO-Offload: Democratizing Billion-Scale Model Training
  3. ZeRO-Infinity: Breaking the GPU Memory Wall
    for Extreme Scale Deep Learning
  4. ZeRO++: Extremely Efficient Collective Communication for Giant
    Model Training

ZeRO(Zero Redundancy Optimizer)是一种去除冗余的分布式数据并行(Data Parallel)方案,分为Stage 1, Stage 2, Stage 3,而Deepspeed就是论文中ZeRO方法的Microsoft官方的工程实现。

ZeRO-Offload为解决由于ZeRO而增加通信数据量的问题,提出将GPU转移到CPU

ZeRO-Infinity同样是进行offload,ZeRO-Offload更侧重单卡场景,而ZeRO-Infinity则是典型的工业界风格,奔着极大规模训练去了

ZeRO++是对ZeRO 3的通信优化,优化了以下三个方面:

  1. 每个服务器有完整的模型参数,消除跨服务器的All_gather操作;
  2. 通信时,基于块的量化,模型参数从FP16转换成INT8;
  3. 替代ring-based ReduceScatter通信,改为分层级的量化 AllToALL;

Megatron-LM是NVIDIA开发的大规模语言模型训练框架,相比于DeepSpeed而言,具有更好的模型并行和流水线并行技术,但数据并行DeepSpeed更有优势。

2 预备知识

2.1 分布式并行策略

Tensor Parallel, Data Parallel, Model Parallel, Pipeline Parallel

2.2 LLM推理和训练的算力需求估算

2.2.1 数据精度格式

对于大语言模型,选择合适的精度格式至关重要。高精度如FP32适合高要求的任务,但消耗资源多;FP16和bfloat16则在维持性能的同时,显著降低了计算成本。低精度格式如int8和fp4更适合资源受限的环境,尤其在推理任务中,通过压缩存储和计算需求,提高了部署效率。合理运用这些格式能够优化性能和资源利用,推动大语言模型在更广泛场景中的应用。

名称 简称 对应字节 对应比特
单精度浮点格式(Single-precision floating-point format) fp32 4 Bytes 32 bits
半精度浮点格式(Half-precision floating-point format) fp16 2 Bytes 16 bits
脑浮点格式(Brain floating-point format) bp16 2 Bytes 16 bits
8位整数格式(8-bit integer format) int8 1 Bytes 8 bits
4位浮点格式(4-bit floating-point format) fp4 0.5 Bytes 4 bits
4位正常浮点格式 (4-bit NormalFloat format) nf4 0.5 Bytes 4 bits

2.2.2 显存(VRAM)需求计算 - 推理

以LLaMA 2 7B为例,显存需求如下:

仅考虑了模型参数本身,并未包括其他运行时所需的额外空间,如优化器状态、激活等。

类型 模型精度 模型规模 推理/训练 最低显存(以粗略计算方式)
全精度 FP32 7B 推理 7B * 4 Bytes = 28 GB
半精度 FP16 7B 推理 7B * 2 Bytes = 14 GB
低精度 INT8 7B 推理 7B * 1 Bytes = 7 GB
INT4 7B 推理 7B * 0.5 Bytes = 3.5 GB

3 ZeRO

如今,Mixed-Precision TrainingAdam Optimizer是LLM Distributed Training的标配

ZeRO将模型训练阶段,每张卡中显存内容分为两类(以优化器Adam为例):

  1. Model States:
    • Parameters(fp16)
    • Gradient(fp16)
    • Optimizer States(fp32)

VRAM计算:假设Parameters是\(\Psi\),则共需要2\(\Psi\)+2\(\Psi\)+(4\(\Psi\)+4\(\Psi\)+4\(\Psi\))=16\(\Psi\) bytes进行存储。

  1. Residual States
    • 激活值activation
    • 临时缓冲区buffer
    • 无法使用的显存碎片fragmentation

3.1 Stage 1, 2, 3

  • \(P_{os}\)是指

3.2 ZeRO-Offload

3.2.1 通信数据量分析

3.3 ZeRO-Infinity

3.4 ZeRO++

4 DeepSpeed + Accelerate

pip install deepspeed
accelerate config

image

5 Megatron-LM

Github: https://github.com/NVIDIA/Megatron-LM

  1. Megatron-LM: Training Multi-Billion Parameter Language Models Using
    Model Parallelism
  2. Efficient Large-Scale Language Model Training on GPU Clusters
    Using Megatron-LM
  3. Reducing Activation Recomputation in Large Transformer Models

Reference

标签:Training,7B,Distributed,LM,Bytes,DeepSpeed,ZeRO
From: https://www.cnblogs.com/forhheart/p/18401234

相关文章

  • AI大语言模型LLM学习-Token及流式响应
    token是什么?比较官方的token解释:Token是对输入文本进行分割和编码时的最小单位。它可以是单词、子词、字符或其他形式的文本片段。token是自然语言处理的最细粒度。简单点说就是,LLM的输入是一个个的token,输出也是一个个的token。token是由LLM处理的基本数据单元。......
  • RAG与LLM原理及实践(14)---RAG Python 前端构建技术Flask
    目录背景Flask简介     Flask的特点flask安装Flaskpythonserver端处理app资源映射router概念Flask客户端处理Jinja2 概述具体语法实例python后端 代码前端相关代码代码解释运行check启动日志背景本专栏之前的文章都在描述RAG后台的......
  • LLM大模型:从新手到专家:AI大模型学习与实践完全指南
    一、初聊大模型1、什么是大模型?大模型,通常指的是在人工智能领域中的大型预训练模型。你可以把它们想象成非常聪明的大脑,这些大脑通过阅读大量的文本、图片、声音等信息,学习到了世界的知识。这些大脑(模型)非常大,有的甚至有几千亿个参数,这些参数就像是大脑中的神经元,它们通过......
  • 【RAG】LongRAG:利用长上下文LLMs增强检索增强生成
    前言现有的RAG框架通常使用100词的短段落作为检索单元,这种设计使得检索器需要在大量语料库中搜索,增加了工作负担,并且容易引入难负样本,影响性能。LongRAG框架为了解决这一问题,该框架使用长检索单元(最多4K词),显著减少了语料库的大小(从22M减少到600K),从而减轻了检索器的负担,并提......
  • LMR54406DBVR开关稳压器中文资料PDF数据手册引脚图参数功能框图
    LMR54406的说明LMR544xx是一款简单易用的宽VIN同步降压转换器,能够驱动高达1A和0.6A的负载电流。该器件具有4V至36V的宽输入范围,适用于从非稳压源进行电源调节的各种工业应用。LMR544xx以1.1MHz的开关频率运行,支持使用相对较小的电感器,以实现经优化的设计尺寸......
  • 大型语言模型(LLMs)是怎样“学习”的?一封给网络工程师的大模型指南
    数字时代,人工智能(AI)及其相关技术正日益成为许多领域的热门话题。其中,生成式人工智能(GenAI)和大型语言模型(LLMs)引起了广泛的兴趣和讨论。然而,尽管这些术语在科技界和专业领域中频繁出现,网络工程师对其的理解却不多。什么是生成式人工智能和大型语言模型?本文将为大家介绍大......
  • (赠书)国产开源视觉语言模型CogVLM2在线体验:竟能识别黑悟空
    CogVLM2是一款视觉语言模型(VisualLanguageModel),由智谱AI和清华KEG潜心打磨。这款模型是CogVLM的升级版本,支持高达1344*1344的图像分辨率,提供支持中英文双语的开源模型版本。这类模型可以做很多跨领域的活儿,比如给图片配上描述文字、回答关于图片的问题(这叫VQA,就是视觉问......
  • InternLM 大模型实战营笔记-7
    基础岛第5关XTuner微调个人小助手认知目的:用internlm2-chat-1_8b模型,通过QLoRA的方式来微调一个自己的小助手1.微调前的模型对话进行端口映射,XXXXX是自己开发机的端口ssh-CNg-L8501:127.0.0.1:[email protected]激活环境,运行Stream......
  • LLM——10个大型语言模型(LLM)常见面试题以及答案解析
    今天我们来总结以下大型语言模型面试中常问的问题1、哪种技术有助于减轻基于提示的学习中的偏见?A.微调Fine-tuningB.数据增强DataaugmentationC.提示校准PromptcalibrationD.梯度裁剪Gradientclipping答案:C提示校准包括调整提示,尽量减少产生的输出中的偏差......
  • vllm常用参数总结
    1.VLLM常用参数详解具体参数:OpenAI兼容服务器—vLLM引擎参数—vLLM常用参数:--host主机地址--port端口--model加载的模型路径--trust-remote-code允许模型加载来自huggingface的远程代码--tensor-parallel-size采用的卡数,此处为单机多卡状态......