在哪个网站做淘宝水印,网站建设公司大全,做石材一般用哪些网站推销,wordpress文档可以下载吗Large language model inference optimizations on AMD GPUs — ROCm Blogs 大型语言模型#xff08;LLMs#xff09;已经改变了自然语言处理和理解#xff0c;促进了在多个领域中的众多人工智能应用。LLMs在包括AI助手、聊天机器人、编程、游戏、学习、搜索和推荐系统在内的…Large language model inference optimizations on AMD GPUs — ROCm Blogs 大型语言模型LLMs已经改变了自然语言处理和理解促进了在多个领域中的众多人工智能应用。LLMs在包括AI助手、聊天机器人、编程、游戏、学习、搜索和推荐系统在内的多个领域具有各种有前景的用例。这些应用利用LLMs的能力提供个性化和互动的体验增强了用户的参与度。
LLMs使用变换器架构来解决梯度消失和爆炸的问题。该架构允许轻松并行化自我关注使其能够有效地利用多个GPU。其他架构如递归神经网络RNN及其变体例如LSTM和GRU在处理长单词序列时存在困难。
尽管具有令人印象深刻的能力但像GPT和Llama这样的LLMs在用于商业应用之前需要积极的优化由于它们的大参数规模和自回归顺序处理行为。已经做了许多努力通过使用GPU的计算容量TFLOPs和内存带宽GB/s来提高LLMs的吞吐量、延迟和内存占用。
我们将通过比较AMD的MI250和MI210 GPU上的Llama-2-7B和Llama-2-70B模型的性能指标来讨论这些优化技术。
模型特点Llama2-7b和Llama2-70b
Llama2-7b和70b模型能够处理32,000个词汇。这些模型可以处理最大长度为4,096个令牌序列。Llama2通过采用以下新特征优化了其训练和推理性能 • *Sigmoid线性单元SiLU激活*替换了常用的线性整流单元ReLU以减少消失的梯度问题实现更平滑的激活。 • *旋转位置嵌入*减少了经典绝对位置嵌入层的计算成本同时保持了令牌序列的位置信息。 • *预归一化*LlamaRMSNorm模块归一化了*输入*而不是*输出*这减少了梯度消失和爆炸问题。
在Llama-2-7b模型中自我关注模块中有32个注意力头每个头有128维。多层感知器MLP模块的中间大小有11,008它由三层组成gate_proj、up_proj和down_proj。 基于它们的行为大型语言模型LLMs被归类为以下几种 • *遮蔽语言模型MLM*在提供的上下文词汇之间预测一个新的遮蔽词。BERT就是MLM的一个例子。 • *因果语言模型CLM*在提供的上下文词汇之后预测下一个词。一个众所周知的CLM例子是GPT文本生成。CLM也被称为自回归的标记生成模型因为其按顺序处理行为。 在这篇博客中我们更专注于讨论Llama2 CLM。 在CLM因果语言模型中生成令牌分为以下两个阶段 • *首个令牌生成时间TTFT*生成第一个令牌所需要的时间。填充前延迟被定义为跨请求的平均TTFT。在下面的图中TTFT是从输入提示“The largest continent”生成“in”所需要的时间。 • *每个输出令牌的时间TPOT*以自回归方式生成每个输出令牌所花费的时间。输出解码延迟被定义为跨请求的平均TPOT通常使用输出解码阶段所需的时间来估算。在下图中TPOT是“the”的解码延迟。 TTFT和TPOT被用来计算CLM中的延迟延迟 TTFT TPOT * (max_new_tokens - 1) 在*预填充*阶段之后的输入维度在词嵌入之后与*批次大小*输入序列长度*成比例。预填充阶段的令牌是同时被处理的。然而*输出解码*阶段的输入在词嵌入之后与*批次大小*成比例这一阶段的令牌是顺序处理的。这就是为什么当批次大小为1时输出解码操作由高且窄的GEMM或者是GEMV组成的原因。
为了简单起见我们采用了贪婪解码方式来生成令牌它已知是从输出对数中解码令牌时开销最小的。在实际的聊天机器人场景中允许生成丰富和出人意料的输出令牌时最好考虑基于采样的解码以及更高的束宽度。但是在贪婪解码方案中自回归的CLM从模型输出对数生成排名第一的令牌。
设备特性MI210
AMD的Instinct™ MI210在FP16数据类型下的最大计算能力为181 TFLOPs。要完全利用矩阵核心的性能GEMM的矩阵尺寸应足够大。具有大批次的LLM预填充解码阶段使用大输入矩阵并且能从矩阵核心的高性能中获益。使用MI210在提示序列长度和批次大小都很大的预填充阶段GEMM操作是计算受限的。
MI210能够提供最大的双倍数据速率DDR内存带宽达到1.6 TB/s。输出解码顺序处理令牌。这种自回归解码只有序列长度的一个维度这使得高且窄的GEMT或GEMV其中操作是内存受限的。由于LLM输出令牌生成的这种顺序性质输出解码从DDR带宽中受益。
MI250由MI210的两个图形计算模块GCD组成。因此MI250具有MI210两倍的计算能力、内存大小和内存带宽。LLM可以在MI250的两个硅片上用张量并行(TP)、流水线并行(PP)或数据并行(DP)的模型并行方式进行赋值。这种数据并行可以使LLM的吞吐量翻倍同时存在两倍模型参数复制的开销。由于缺少开销张量并行广泛被使用因其有能力将更大的LLM适配到具有一些集合操作同步开销的高容量MI250 DDR上。 在前面的图表中请注意单个MI250 GCD的瓶颈线与MI210的相似。
软件设置
在主机上安装ROCm
要在主机上安装ROCm 6.0请参阅[安装指南](ROCm installation options — ROCm installation (Linux))。
设置docker
要设置官方的[PyTorch ROCm Docker容器](https://hub.docker.com/r/rocm/pytorch/tags)请使用以下命令
docker run -it --networkhost --device/dev/kfd --device/dev/dri --group-addvideo --ipchost --cap-addSYS_PTRACE --security-opt seccompunconfined --shm-size 8G --name llm_optimization rocm/pytorch:rocm6.0_ubuntu22.04_py3.9_pytorch_2.0.1
配置库和工具集
运行以下命令来安装PyTorch 2.3夜间版本
pip3 uninstall torch torchvision torchaudio pytorch-triton-rocm -y
pip3 install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/rocm6.0
有关库的设置请参考Hugging Face的transformers。
有关工具集的设置请参考[文本生成推理 (TGI)]。
在MI210上Llama-2-7b的优化比较
• Prefill 延迟 • 输出解码延迟
默认机器学习框架
PyTorch 2支持两种运行模式急切模式和编译模式。急切模式是PyTorch的默认模式在这种模式下模型的运算符会在运行时遇到时顺序执行。编译模式在LLM推理优化技术中有所涵盖。
为了运行LLM解码器模型例如Llama-2Hugging Face提供了transformers库在PyTorch之上运行模型。
transformers库在其[APIs]中使用多种令牌生成选项作为参数。在这篇博客中为了公平地比较每种优化的性能采用了这些选项 • *预填充*使用2048序列长度的提示符随着批量大小的增加预填充延迟会增加因为预填充期间的大型GEMM计算是计算受限的。 • *输出解码*当批量大小增加时输出解码延迟并不会大幅增加因为这个阶段的GEMM的算术强度仍然受到内存带宽的限制。
LLM推理优化技术
在这里我们讨论各种LLM推理优化技术。
PyTorch编译模式
在[PyTorch编译模式]中模型被合成为图形然后降级为主要运算符。这些运算符使用TorchInductor进行编译它使用OpenAI的Triton作为GPU加速的基础模块。PyTorch编译模式的一个优点是其GPU内核是用Python编写的这使得修改和扩展它们变得更容易。由于模型运算在运行前就已融合PyTorch编译模式通常会提供更高的性能这使得部署高性能内核变得容易。
为了在PyTorch编译模式下运行LLM解码器模型例如Llama2必须显式地将模型的特定层次指定为编译目标。PyTorch编译模式要求在LLM解码器模型的输入批量大小和序列长度在运行时可能改变的情况下重新编译。为了支持动态输入形状的重新编译请设置参数dynamicTrue。
for i in range(model.config.num_hidden_layers):model.model.decoder.layers[i].self_attn torch.compile(model.model.decoder.layers[i].self_attn, backendinductor, modedefault, dynamicTrue)
• *预填充*预填充延迟显著降低。但是对于LLM解码器模型它仍然会因为各种批量大小和输入序列长度而遭受巨大的初始重新编译开销。预填充延迟是在初始重新编译预热之后测量的。 • *输出解码*输出解码延迟略有改善因为模型部分编译了。然而由于部分密钥/值缓存的动态形状图形回落到了急切模式。有一种努力来解决这个问题被称为[静态密钥/值缓存](Accelerating Generative AI with PyTorch II: GPT, Fast | PyTorch)。静态密钥/值缓存与torch.compile一起使用时可以显著提高输出解码性能但我们的博客并未涵盖此内容。
Flash Attention v2
Flash Attentionflash_attention算法旨在解决在transformer的多头注意力MHA模块中查询、密钥和值组件所需的大量内存移动问题。通过将部分查询平铺并存储在更快的缓存内存中而不是在MHA计算期间不断从较慢的外部DDR内存中读取这一目标得以实现。flash_attention v2](https://arxiv.org/abs/2307.08691)可以在长输入序列长度上最大化并行性与原生的MHA相比可以显著提升性能。
您可以无缝地使用最新的Hugging Face transform库中的*flash_attention v2模块*来自ROCm。
from transformers import AutoModelForCausalLM, AutoTokenizer
model AutoModelForCausalLM.from_pretrained(model_id, attn_implementationflash_attention_2)
• *预填充*Flash Attention模块显著降低了大批量大小和长序列长度的预填充处理延迟因为MHA矩阵的维度与这些成比例。这导致了flash attentions的更大收益。 • 输出解码- flash_attention在输出解码阶段效果不明显因为序列长度仅为1。
内存高效多头注意力
内存高效的多头注意力Xformers是Meta提供的一系列可定制模块用于优化变换器模型。Xformers的主要特点是内存高效的多头注意力MHA模块它可以在多头注意力处理过程中显著减少内存流量。这个模块采用与flash_attention相似的算法来减少DDR读写带宽。 你可以无缝地将Xformers的内存高效MHA模块适用于ROCM集成到Hugging Face的变换器库中。 - *预填充*与flash_attention v2出于相同的原因内存高效的MHA在处理大批量尺寸和长序列长度时也显著减少了预填充处理延迟。 - *输出解码*Xformers在输出解码阶段效果不明显因为序列长度仅为1。
分页注意力vLLM
分页注意力paged_attention是vLLM推理系统的一种算法可以有效减少内存消耗并在输出解码阶段将延迟降低两到四倍。分页注意力通过使用虚拟内存和分页来管理输出解码阶段的键值缓存K-V缓存减少内存碎片。传统的K-V缓存会为输出的最大令牌长度根据模型的不同为2,048或4,096预分配内存如果实际解码长度更短就可能导致内存碎片。这种基于分页的虚拟内存可以在波束搜索大和多个请求并行运行时节省K-V缓存内存。vLLM的paged_attention模块适用于ROCM目前是可用的。 - *预填充*分页注意力在预填充阶段效果不明显因为这个阶段不使用K-V缓存。 - *输出解码*分页注意力可以显著降低解码延迟。
PyTorch TunableOp
PyTorch TunableOp允许你使用高性能的rocblas和hipblaslt库进行GEMM。它会对LLM进行性能分析并准备每个MHA和MLP模块的最佳性能GEMM内核。在运行时会启动最佳性能GEMM内核而不是PyTorch内建的GEMM内核。PyTorch TunableOp目前已经可用。 - *预填充*结合flash_attention v2PyTorch TunableOp在不同批量大小下显示出显著的性能提升。 - *输出解码*结合分页注意力PyTorch TunableOp也显著降低了高瘦GEMM或GEMV的延迟。因此输出解码性能最大限度地受益于rocBLAS和hipBLASLt GEMMs。
多GPU LLM推理优化
- 预填充延迟 • 输出解码延迟 Hugging Face 文本生成推理
在进行多GPU推理和训练的扩展时需要使用模型并行技术例如张量并行TP、流水线并行PP或数据并行DP。张量并行TP因为不会导致流水线泡沫而被广泛使用数据并行DP虽然吞吐量高但需要将参数的副本复制到GPU的DDR中。
在这篇博客中我们使用TP技术将模型分布在多个GPU上并使用Hugging Face的文本生成推理TGI来测量多GPU的大型语言模型LLM推理性能。Hugging Face的TGI实现包括兼容ROCm的flash_attention和paged_attention与PyTorch TunableOp的兼容性以及对ROCm启用的量化如GPTQ的支持这些特点使得它成为一个好选择。
一台服务器配备了4块MI250显卡总共拥有8个图形计算核心GCDs。每个GCD拥有64 GB的HBM内存。 为了充分利用多个MI250 GPU您需要考虑GPU GCDs之间的互连带宽因为GCD间的连接吞吐量是不均匀的。例如在TP4的情况下联合使用GCD#0、1、4、6将提供最佳性能因为集体操作如全归约或全集合在TP中会造成较少的同步开销。 在启用非统一内存访问NUMA平衡时GPU必须等待来自页面错误的内存管理单元MMU的预先通知器变更。因此我们推荐禁用NUMA平衡以避免定期自动平衡干扰GPU操作。
echo 0 /proc/sys/kernel/numa_balancing
• 填充阶段Prefill 和 输出解码阶段Output decoding使用8 GCDs (TP8)的案例展示了比使用4 GCDs (TP4)更好的填充和输出解码延迟。延迟增强并没有翻倍因为同步每一层的多头自注意力MHA和多层感知机MLP的集体操作也是一个巨大的延迟瓶颈。
总结
在这篇博客中我们介绍了几种软件优化技术用于在AMD CDNA2 GPUs上部署最先进的大型语言模型LLMs。这些包括PyTorch 2编译、Flash Attention v2、paged_attention、PyTorch TunableOp以及多GPU推理。这些优化技术已经被AI社区广泛采纳。使用这些优化根据批量大小和输入序列长度你可以享受高达三倍的即开即用加速。
文章转载自: http://www.morning.syglx.cn.gov.cn.syglx.cn http://www.morning.qrzwj.cn.gov.cn.qrzwj.cn http://www.morning.zrgx.cn.gov.cn.zrgx.cn http://www.morning.wfcqr.cn.gov.cn.wfcqr.cn http://www.morning.ghlyy.cn.gov.cn.ghlyy.cn http://www.morning.zcnfm.cn.gov.cn.zcnfm.cn http://www.morning.fblkr.cn.gov.cn.fblkr.cn http://www.morning.blxor.com.gov.cn.blxor.com http://www.morning.cbnlg.cn.gov.cn.cbnlg.cn http://www.morning.blqmn.cn.gov.cn.blqmn.cn http://www.morning.xiaobaixinyong.cn.gov.cn.xiaobaixinyong.cn http://www.morning.lydtr.cn.gov.cn.lydtr.cn http://www.morning.qbwbs.cn.gov.cn.qbwbs.cn http://www.morning.gcfrt.cn.gov.cn.gcfrt.cn http://www.morning.kjmws.cn.gov.cn.kjmws.cn http://www.morning.kmlmf.cn.gov.cn.kmlmf.cn http://www.morning.wfmqc.cn.gov.cn.wfmqc.cn http://www.morning.hwnnh.cn.gov.cn.hwnnh.cn http://www.morning.npbkx.cn.gov.cn.npbkx.cn http://www.morning.rhdqz.cn.gov.cn.rhdqz.cn http://www.morning.fktlr.cn.gov.cn.fktlr.cn http://www.morning.flfxb.cn.gov.cn.flfxb.cn http://www.morning.ggjlm.cn.gov.cn.ggjlm.cn http://www.morning.qyrnp.cn.gov.cn.qyrnp.cn http://www.morning.kaoshou.net.gov.cn.kaoshou.net http://www.morning.nwtmy.cn.gov.cn.nwtmy.cn http://www.morning.wqbfd.cn.gov.cn.wqbfd.cn http://www.morning.hsklc.cn.gov.cn.hsklc.cn http://www.morning.xqgfy.cn.gov.cn.xqgfy.cn http://www.morning.kfqzd.cn.gov.cn.kfqzd.cn http://www.morning.kryn.cn.gov.cn.kryn.cn http://www.morning.zmpqt.cn.gov.cn.zmpqt.cn http://www.morning.mkhwx.cn.gov.cn.mkhwx.cn http://www.morning.ntkpc.cn.gov.cn.ntkpc.cn http://www.morning.zbqsg.cn.gov.cn.zbqsg.cn http://www.morning.fmswb.cn.gov.cn.fmswb.cn http://www.morning.zhnyj.cn.gov.cn.zhnyj.cn http://www.morning.rnzbr.cn.gov.cn.rnzbr.cn http://www.morning.sphft.cn.gov.cn.sphft.cn http://www.morning.gpxbc.cn.gov.cn.gpxbc.cn http://www.morning.xwlmr.cn.gov.cn.xwlmr.cn http://www.morning.htbbp.cn.gov.cn.htbbp.cn http://www.morning.bqwrn.cn.gov.cn.bqwrn.cn http://www.morning.qftzk.cn.gov.cn.qftzk.cn http://www.morning.dbdmr.cn.gov.cn.dbdmr.cn http://www.morning.rqhbt.cn.gov.cn.rqhbt.cn http://www.morning.rmxgk.cn.gov.cn.rmxgk.cn http://www.morning.pnmtk.cn.gov.cn.pnmtk.cn http://www.morning.lxlfr.cn.gov.cn.lxlfr.cn http://www.morning.snrbl.cn.gov.cn.snrbl.cn http://www.morning.wbxtx.cn.gov.cn.wbxtx.cn http://www.morning.szoptic.com.gov.cn.szoptic.com http://www.morning.ypcd.cn.gov.cn.ypcd.cn http://www.morning.lgnz.cn.gov.cn.lgnz.cn http://www.morning.ndtmz.cn.gov.cn.ndtmz.cn http://www.morning.cylbs.cn.gov.cn.cylbs.cn http://www.morning.demoux.com.gov.cn.demoux.com http://www.morning.qgbfx.cn.gov.cn.qgbfx.cn http://www.morning.xtkw.cn.gov.cn.xtkw.cn http://www.morning.rwcw.cn.gov.cn.rwcw.cn http://www.morning.qswws.cn.gov.cn.qswws.cn http://www.morning.wplbs.cn.gov.cn.wplbs.cn http://www.morning.mxbks.cn.gov.cn.mxbks.cn http://www.morning.qbwbs.cn.gov.cn.qbwbs.cn http://www.morning.ykyfq.cn.gov.cn.ykyfq.cn http://www.morning.qtkdn.cn.gov.cn.qtkdn.cn http://www.morning.qhvah.cn.gov.cn.qhvah.cn http://www.morning.gccdr.cn.gov.cn.gccdr.cn http://www.morning.dqzcf.cn.gov.cn.dqzcf.cn http://www.morning.lwzgn.cn.gov.cn.lwzgn.cn http://www.morning.lhrcr.cn.gov.cn.lhrcr.cn http://www.morning.ghxtk.cn.gov.cn.ghxtk.cn http://www.morning.pgxjl.cn.gov.cn.pgxjl.cn http://www.morning.gbyng.cn.gov.cn.gbyng.cn http://www.morning.kqgqy.cn.gov.cn.kqgqy.cn http://www.morning.nflpk.cn.gov.cn.nflpk.cn http://www.morning.hlrtzcj.cn.gov.cn.hlrtzcj.cn http://www.morning.kltsn.cn.gov.cn.kltsn.cn http://www.morning.tqdlk.cn.gov.cn.tqdlk.cn http://www.morning.gidmag.com.gov.cn.gidmag.com