LLM基础-什么是大模型推理(LLM Inferencing)
LLM基础-什么是大模型推理(LLM Inferencing)
概述
和传统的机器学习模型类似,大模型也可以分为:模型训练和模型推理两个过程。模型训练就是给定的数据和算法训练出一个模型(一堆文件,包括:模型权重、配置等),然后就可以使用该模型来进行预测或分类等操作。模型推理(Model inference)是使用已训练的机器学习模型根据新的输入数据生成预测的过程。
LLM推理介绍
LLM推理就是使用预先训练好的大型语言模型根据用户输入生成输出的过程。这意味着接受用户的提示(即查询)并生成相关的文本输出。推理是指模型运用其学习到的知识来回答查询、总结文档、翻译语言或生成创意内容。
与更新模型权重的训练不同,推理是根据输入提示计算下一个token或token序列的前导性(forward-pass)操作。每次用户与由 LLM 支持的AI应用进行交互时,都会发生这一过程。
推理的核心是从token化开始,将输入文本分解为模型能够理解的token。然后,这些token通过模型的transformer层,transformer层应用学习到的权重(模型训练后得到的,会保存到权重文件中)生成上下文嵌入(embeding)。最后,解码策略(如贪婪搜索或波束搜索)会生成下一个最有可能的token,直到完成响应。
推理的计算成本很高,尤其是像 GPT-4、LLaMA 3 或 Mistral 这样的大型模型。由于这些模型都是自回归模型,它们每次生成一个token,使得整个过程是顺序进行的,难以并行化。每个token生成步骤都依赖于之前生成的token,从而增加了延迟。
此外,模型大小直接影响推理成本。较大的模型需要更多的 GPU 内存和计算能力,而且响应速度较慢。对于实时聊天、内容摘要或检索增强生成(RAG)等生产用例,延迟、吞吐量和资源效率变得至关重要。
本质上,LLM 推理是关键环节。它是模型性能、基础设施和用户期望交汇的阶段,因此优化和可扩展性对于实际应用至关重要。
模型推理的两个阶段
预填充阶段(Prefill)
- 发生什么:在预填充阶段,模型会对输入文本进行处理,首先将其转换为token(文本的基本单位)。它计算必要的中间表示,特别是键值 (KV) 缓存,其中存储了输入token的相关信息。
- 目的:这一阶段的主要目标是为模型生成输出做好准备。它涉及大量计算,可以并行处理,因此可以高效地一次性处理大量输入数据。
- 特点:模型并行处理输入词块。一次能处理多少词块硬件在给定时间内能执行的运算量所限制。硬件在给定时间内能执行的操作数。因此,预填充是计算限制。预填充阶段通常计算量较大,可以充分利用 GPU 的处理能力。它涉及的矩阵运算可以并行执行,从而有效利用资源。
在预填充阶段,用户的文本输入被转化为token,随后转化为数值,这些数值可由模型进行解释。在 LLM 推理中,token代表单词或单词的一部分。LLM 处理输入的token并建立中间状态(键和值),负责生成第一个 “新 ”token,作为响应的一部分。由于模型知道输入的全部内容,因此可以并行处理,从而提高 GPU 的使用效率。
解码阶段(Decode)
- 发生什么:在解码阶段,模型一次生成一个输出token。每个新token都是根据之前生成的token和预填充阶段存储在 KV 缓存中的信息预测的。
- 目的:这里的目标是针对输入提示创建一个连贯且与上下文相关的响应。token的生成是自回归式的,这意味着每个token都取决于之前生成的token。
- 特点:模型一次生成一个输出标记。在高层步骤通常涉及将大型矩阵(如模型权重)加载到 GPU 中。这受到硬件将数据加载到内存的速度限制。数据载入内存的速度。因此,解码是受内存带宽限制的。解码阶段通常比预填充阶段慢,因为它按顺序处理token,这可能导致 GPU 资源利用率不足。该阶段一直持续到满足停止标准为止,例如达到token的最大数量或生成特殊的结束token。
根据用户提示,模型会生成一组向量嵌入。这就是深度学习算法翻译输入提示的方式。然后,模型从上下文和先验知识出发,预测下一个token是什么。这一过程反复进行,直到达到停止标准,然后再变回人类语言可读的输出。
与前一阶段不同的是,模型不会立即知道整个输出范围,它必须一次生成一个字。这使得整个过程对 GPU 而言更慢,效率更低。这一阶段的速度并不取决于计算性能,而是取决于模型访问存储在内存中的信息的速度,因此这是一个受内存限制的操作。
小结
总之,预填充阶段的重点是通过处理输入和创建必要的数据结构为推理准备模型,而解码阶段则是根据预填充阶段准备的信息生成实际输出的地方。了解这些阶段对于优化 LLM 在推理过程中的性能至关重要。
参考资料:
-
https://www.truefoundry.com/blog/llm-inferencing
-
https://www.piyush-yadav.com/p/demystifying-llmops-an-introduction
-
https://medium.com/@sailakkshmiallada/understanding-the-two-key-stages-of-llm-inference-prefill-and-decode-29ec2b468114
-
https://arxiv.org/html/2401.02038v2/#S4