大模型开发训练与推理部署全解析:程序员必学技术,全是干货!
本文全面介绍了大模型的开发训练与推理部署技术。在训练方面,详细阐述了设备内优化和分布式并行策略,包括数据并行、张量并行、流水线并行等,以及端到端自适应分布式训练架构。在推理部署方面,介绍了模型压缩技术、多种推理框架(vLLM、HuggingFace TGI等)及其性能特点和应用场景,强调了从模型压缩到服务部署的协同优化方法。
简介
本文全面介绍了大模型的开发训练与推理部署技术。在训练方面,详细阐述了设备内优化和分布式并行策略,包括数据并行、张量并行、流水线并行等,以及端到端自适应分布式训练架构。在推理部署方面,介绍了模型压缩技术、多种推理框架(vLLM、HuggingFace TGI等)及其性能特点和应用场景,强调了从模型压缩到服务部署的协同优化方法。
大模型的开发训练与推理部署
1.大模型开发与训练
大模型的高性能训练旨在通过对模型计算、显存、内存和通信的系统级优化,在保证模型收敛性的前提下,提高训练吞吐量,实现在有限资源下大模型高效训练的目的。
系统级优化方法主要从两个方向实现:
一是: 设备内优化方法,包括降低浮点数的兄余表示的半精度浮点优化、混合精度浮点优化等方法、降低梯度计算过程中兄余表示的梯度检查点(Checkpointing )方法。
以 内存优化 的 ZeRO-0ffload方法,即通过将数据和计算从 GPU 卸载到 CPU,以减少神经网络训练期间 GPU 内存占用的方法。
二是: 多设备优化方法,也称分布式优化,即将分布在不同计算节点上的多个 GPU 一起用于训练单个模型,这类方法主要有 数据并行 、 张量并行、 流水线并行、分组参数切片并行 等多种并行加速策略,下面进行重点介绍。
1)数据并行:
数据并行是每个处理器存储全量的模型参数、梯度和优化器状态,但读取不同的输入数据,在反向计算出参数梯度后,对参数梯度做 AllReduce 聚合,然后每个处理器独立进行参数更新。
数据并行的 优点 是实现和使用方式简单,可以通过增加数据并行路数提高训练吞吐,是目前最为常用的分布式并行策略之一。
2)张量并行:
张量并行是将神经网络中同一层的张量运算拆分成多个独立的子运算,并相应地对模型参数做切分,由不同的处理器分别执行,生成的中间结果通过分布式通信进行组合。
张量并行的 优点 是可以充分利用多核处理器的计算能力,减少了内存访问的延迟,但需要设计高效的并行算法和通信机制来确保计算的正确性和高效性,避免通信延迟和带宽瓶颈。
3)流水线并行:
这种并行策略是将神经网络中的不同层交由不同处理器执行,上下游执行器之间的数据依赖点对点通信传输。
基于此技术的高效流水线并行调度策略,支持1F1B、Interleaving 1F1B 等高效调度算法,并通过“通信-计算”重叠的方式隐藏通信时间,提高整体训练效率
4)分组参数切片并行:
这种并行策略是一种特殊的数据并行方式,它可以将优化器状态、参数梯度和模型参数切分到不同的处理器上,达到节省大模型显存的目的。
分组参数并行的 优点 是可以有效降低模型显存占用,通过增加数据并行路数提高整体训练吞吐。
基于此技术的"组内参数切片+组间数据"并行,可以更合理地分配机内和机间的通信带宽,进一步提升了训练性能。
基于上述基础并行策略,不同深度学习框架的实现方法不同,有的是基于 PyTorch 进行进一步封装形成单独的工具。
如微软的DeepSpeed-Megatron、NVIDIA的 Megatron-LM、清华大学的 BMTrain 等;飞桨PaddePaddle 框架支持四维混合并行技术,可将基础的并行策略组合使用。
在多维混合并行训练策略的基础上,为了应对模型多样性和训练硬件资源异构性,进一步发展出了端到端自适应分布式训练架构
端到端自适应分布式训练架构
该架构可以针对不同的深度学习算法抽象成统一的计算视图,自动感知硬件环境并抽象成统一的异构资源视图;采用了代价模型对两者进行联合建模
将模型参数、梯度和优化器状态按照最优策略分配到不同的设备上,构建流水线进行异步高效执行。
对于同地域或跨地域多种异构硬件,可以实现节省存储、负载均衡、提升训练性能的目的。
此外,针对大模型训练资源不稳定的问题,设计了弹性资源调度管理机制。
当资源发生变化时,能够自动的感知硬件环境并修正资源视图,重新触发模型切分放置策略选择及异步流水线执行,使得硬件故障下任务恢复可从小时级降至秒级。
一直在更新,更多的大模型学习和面试资料已经上传带到CSDN的官方了,有需要的朋友可以扫描下方二维码免费领取【保证100%免费】👇👇
2.大模型推理部署
大模型推理往往面临显存占用过多、计算规模庞大、输入输出变长等挑战,这些也是大模型应用落地要重点解决的问题。
在充分考虑大模型结构特性基础上,可以从模型压缩、推理引擎、服务部署三个关键环节,开展全方位的协同优化,在降低时延提升用户体验的同时,最大化提升服务吞吐,做到低时延、高吞吐。
模型压缩、推理引擎、服务部署三个环节协同优化
大模型的推理可以采用深度学习框架直接实现,通过框架和模型协同优化,可以显著提升大模型的推理效率。
也可以采用专门的工具,如:FasterTransformer、TensorRT-LLM、vLLM、Text Genertion Inference、HuggingfaceTG 等实现,这些工具已经针对大模型推理进行了优化,能够高效地完成推理任务。
2.1 大模型压缩
在大模型压缩方面,常规的模型压缩方法有 模型稀疏化、权重矩阵分解、模型参数共享、蒸馏 和 量化
模型稀疏化:这种方法通过将模型中的某些神经元、连接或层置为零,从而达到压缩模型、加速训练、减少内存消耗等目的。
权重矩阵分解: 使用包括奇异值分解(SVD)等矩阵分解方法对预训练模型的 Feed-Forward Network(FFN)层的权重矩阵进行分解,从而减少 Attention 层的参数量,提高模型的效率。
模型参数共享: 部分大型模型如 ALBERT[152]采用了权重共享的方式,特定层之间共享参数,从而减少了模型的参数量。
蒸馏: 通过使用学生模型来模拟预训练教师模型的行为来减小模型大小的技术。通常情况下,学生模型由更小的 神经网络或线性模型组成。
蒸馏的过程是将教师模型的知识转移到学生模型,使学生模型在保持较小规模的同时,能够保持类似于教师模型的预测能力。
利用蒸馏技术可以将大模型的知识和泛化能力迁移到小型网络,以支持轻量化的大模型部署。
量化: 量化是一种将预训练模型中的权重从浮点数转换为低位数的技术。通常情况下,量化的精度可被降低到 8位或更低。
量化可以大大减少模型的存储空间和计算量,但可能会对模型的性能产生一定的影响。
2.2 大模型推理框架概述
从 ChatGPT 面世以来,引领了大模型时代的变革,除了大模型遍地开花以外,承载大模型进行推理的框架也是层出不穷,大有百家争鸣的态势。
vLLM
GitHub: github.com/vllm-projec…
简介
vLLM是一个开源的大模型推理加速框架,通过PagedAttention高效地管理attention中缓存的张量,实现了比HuggingFace Transformers高14-24倍的吞吐量。
PagedAttention 是 vLLM 的核心技术,它解决了LLM服务中内存的瓶颈问题。
传统的注意力算法在自回归解码过程中,需要将所有输入Token的注意力键和值张量存储在GPU内存中,以生成下一个Token。
这些缓存的键和值张量通常被称为KV缓存。
主要特性
通过PagedAttention对 KV Cache 的有效管理
传入请求的continus batching,而不是static batching
支持张量并行推理
支持流式输出
兼容 OpenAI 的接囗服务
与 HuggingFace 模型无缝集成
与其他框架(HF、TGI)的性能对比
vLLM 的吞吐量比 HF 高 14-24 倍,比 TGI高 2.2-2.5 倍。
存在的问题
同样的模型、参数和prompt条件下,vLLM推理和Huggingface推理结果不一致。
业界案例
vLLM已经被用于 Chatbot Arena 和 Vicuna 大模型的服务后端。
HuggingFace TGI
GitHub: github.com/huggingface…
简介
Text Generation Inference (TGI)是 HuggingFace 推出的一个项目,作为支持 HuggingFace Inference API 和Hugging Chat 上的LLM 推理的工具,旨在支持大型语言模型的优化推理。
主要特性
支持张量并行推理
支持传入请求 Continuous batching 以提高总吞吐量
使用 flash-attention 和 Paged Attention 在主流的模型架构上优化用于推理的 transformers 代码。
注意: 并非所有模型都内置了对这些优化的支持。
使用bitsandbytes(LLm.int8())和GPT-Q进行量化
内置服务评估,可以监控服务器负载并深入了解其性能
轻松运行自己的模型或使用任何 HuggingFace 仓库的模型
自定义提示生成: 通过提供自定义提示来指导模型的输出,轻松生成文本
使用 Open Telemetry,Prometheus 指标进行分布式跟踪
支持的模型
BLOOM、Llama、Falcon 40B、MPT、FLAN-T5、OPT、Galactica、SantaCoder、Llama V2、GPT-Neox、Starcoder、Falcon 7B
适用场景
依赖 HuggingFace 模型,并且不需要为核心模型增加多个adapter的场景。
FasterTransformer
GitHub: github.com/NVIDIA/Fast…
简介
当每个张量被分成多个块时,就会发生张量并行,并且张量的每个块都可以放置在单独的 GPU 上。
在计算过程中,每个块在不同的 GPU 上单独并行处理;最后,可以通过组合来自多个 GPU 的结果来计算最终张量。
当模型被深度拆分,并将不同的完整层放置到不同的 GPU/节点上时,就会发生流水线并行。
在底层,节点间或节点内通信依赖于 MPI、NVIDIA NCCL、Gloo等。因此,使用FasterTransformer ,可以在多个 GPU 上以张量并行运行大型 Transformer ,以减少计算延迟。
同时TP 和 PP 可以结合在一起,在多 GPU 节点环境中运行具有数十亿、数万亿个参数的大型 Transformer 模型。
除了使用 C++作为后端部署,FasterTransformer 还集成了 TensorFlow(使用 TensorFlow op)、PyTorch (使用 Pytorch op)和 Triton 作为后端框架进行部署。
当前,TensorFlow op 仅支持单GPU,而 PyTorch op 和 Triton 后端都支持多 GPU 和多节点。
FasterTransformer中的优化技术
与深度学习训练的通用框架相比,FT使您能够获得更快的推理流水线以及基于 Transformer 的神经网络具有更低的延迟和更高的吞吐量。
FT对 GPT-3 和其他大型 Transformer 模型进行的一些优化技术包括:
1)层融合(Layer fusion)
这是预处理阶段的一组技术,将多层神经网络组合成一个单一的神经网络,将使用一个单一的核(kernel)进行计算。
这种技术减少了数据传输并增加了数学密度,从而加速了推理阶段的计算。
例如, multi-head attention块中的所有操作都可以合并到一个核(kernel)中。
2)自回归模型的推理优化(激活缓存)
为了防止通过Transformer重新计算每个新 token 生成器的先前的key和value,FT 分配了一个缓冲区来在每一步存储它们。
虽然需要一些额外的内存使用,但 FT 可以节省重新计算的成本。该过程如下图所示,相同的缓存机制用于 NN 的多个部分。
3)内存优化
与 BERT 等传统模型不同,大型 Transformer 模型具有多达数万亿个参数,占用数百 GB 存储空间。
即使我们以半精度存储模型,GPT-3 175b 也需要 350 GB。
因此有必要减少其他部分的内存使用。例如,在 fasterTransformer中,我们在不同的解码器层重用了激活/输出的内存缓冲(buffer)。
由于 GPT-3 中的层数为 96,因此我们只需要1/96 的内存量用于激活。
4)使用 MPI 和 NCCL 实现节点间/节点内通信并支持模型并行
FasterTransormer 同时提供张量并行和流水线并行。对于张量并行,FasterTransformer 遵循了 Megatron 的思想。
对于自注意力块和前馈网络块,FT 按行拆分第一个短阵的权重,并按列拆分第二个短阵的权重。
通过优化FT 可以将每个 Transformer 块的归约(reduction)操作减少到两次。
对于流水线并行,FasterTransformer 将整批请求拆分为多个微批,隐藏了通信的空泡(bubble)。
FasterTransformer 会针对不同情况自动调整微批量大小。
5)MatMul 核自动调整(GEMM 自动调整)
矩阵乘法是基于 Transformer 的神经网络中最主要和繁重的操作。 FT 使用来自 CuBLAS 和 CUTLASS 库的功能来执行这些类型的操作。
重要的是要知道 MatMu 操作可以在“硬件“级别使用不同的底层(low-level)算法以数十种不同的方式执行。
GemmBatchedEx 函数实现了 MatMul 操作,并以 cublasGemmAlgo_t 作为输入参数。使用此参数,您可以选择不同的底层算法进行操作。
FasterTransformer 库使用此参数对所有底层算法进行实时基准测试,并为模型的参数和您的输入数据(注意层的大小、注意头的数量、隐藏层的大小)选择最佳的一个。
此外,FT对网络的某些部分使用硬件加速的底层函数例如: _expf、__shfl_xor_sync。
6)低精度推理
FT 的核(kernels)支持使用 fp16 和 int8 等低精度输入数据进行推理。 由于较少的数据传输量和所需的内存,这两种机制都会加速。
同时,int8 和 fp16 计算可以在特殊硬件上执行,例如: Tensor Core(适用于从 Volta 开始的所有 GPU 架构)
除此之外还有快速的 C++ BeamSearch 实现、当模型的权重部分分配到八个 GPU 之间时,针对TensorParallelism 8 模式优化的 all-reduce
支持的模型
目前,FT 支持了 Megatron-LM GPT-3、GPT-J、BERT、ViT、Swin Transformer、Longformer、T5 和 XLNet 等模型。
可以在 GitHub 上的 FasterTransformer库中查看最新的支持矩阵。
与其他框架(PyTorch)的性能对比
FT 适用于计算能力 >=7.0 的 GPU,例如: V100、A10、A100 等。
下图展示了 GPT-J 6B 参数的模型推断加速比较:
存在的问题
英伟达新推出了TensorRT-LLM,相对来说更加易用,后续FasterTransformer将不再为维护了
DeepSpeed-MII
GitHub: github.com/microsoft/D…
简介
DeepSpeed-MII 是 DeepSpeed 的一个新的开源 Python 库,旨在使模型不仅低延迟和低成本推理,而且还易于访问。
MII 提供了对数千种广泛使用的深度学习模型的高度优化实现。
与原始PyTorch实现相比,MII 支持的模型可显著降低延迟和成本。
为了实现低延迟/低成本推理,MII 利用 DeepSpeed-Inference 的一系列广泛优化。
例如: transformers 的深度融合、用于多 GPU 推理的自动张量切片、使用 ZeroQuant 进行动态量化等。
MII 只需几行代码即可通过 AML 在本地和 Azure 上低成本部署这些模型。
MII 工作流程
下图显示了 MII 如何使用 DS-Inference 自动优化 OSS 模型; 然后,使用 GRPC 在本地部署,或使用 AML Inference 在 Microsoft Azure 上部署。
支持的模型和任务
MII 目前支持超过 50,000 个模型,涵盖文本生成、问答、文本分类等一系列任务。
MII 加速的模型可通过Hugging Face、FairSeq、EluetherAI 等多个开源模型存储库获取。
我们支持基于 Bert、Roberta 或 GPT 架构的稠密模型,参数范围从几亿参数到数百亿参数。
除此之外,MII将继续扩展该列表,支持即将推出的大规模千亿级以上参数稠密和稀疏模型。
目前 MII 支持以下 HuggingFace Transformers 模型系列:
与其他框架(PyTorch)的性能对比
MII 将 Big-Science Bloom 176B 模型的延迟降低了 5.7 倍,同时将成本降低了 40 倍以上。
同样,它将部署 Stable Diffusion 的延迟和成本降低了 1.9 倍。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
一直在更新,更多的大模型学习和面试资料已经上传带到CSDN的官方了,有需要的朋友可以扫描下方二维码免费领取【保证100%免费】👇👇
01.大模型风口已至:月薪30K+的AI岗正在批量诞生
2025年大模型应用呈现爆发式增长,根据工信部最新数据:
国内大模型相关岗位缺口达47万
初级工程师平均薪资28K(数据来源:BOSS直聘报告)
70%企业存在"能用模型不会调优"的痛点
真实案例:某二本机械专业学员,通过4个月系统学习,成功拿到某AI医疗公司大模型优化岗offer,薪资直接翻3倍!
02.如何学习大模型 AI ?
🔥AI取代的不是人类,而是不会用AI的人!麦肯锡最新报告显示:掌握AI工具的从业者生产效率提升47%,薪资溢价达34%!🚀
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
1️⃣ 提示词工程:把ChatGPT从玩具变成生产工具
2️⃣ RAG系统:让大模型精准输出行业知识
3️⃣ 智能体开发:用AutoGPT打造24小时数字员工
📦熬了三个大夜整理的《AI进化工具包》送你:
✔️ 大厂内部LLM落地手册(含58个真实案例)
✔️ 提示词设计模板库(覆盖12大应用场景)
✔️ 私藏学习路径图(0基础到项目实战仅需90天)
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
更多推荐
所有评论(0)