在大模型推理中,Prefill 是一个阶段。在这个阶段,首先会把用户的输入 prompt 通过并行计算,产生每个 Token 对应 Self Attention 的 Key-Value,并将其存储在 KV Cache 中,供 Decoding 阶段产生每个 Token 时计算 Self Attention 时使用。这个阶段每个 Token 的 Key-Value 可并行计算,模型运行一次能输出多个 Token 的 KV,所以 GPU 利用率高。而 Decoding 阶段根据用户 Prompt 生成后续内容,但模型运行一次只能产生一个 Token,所以无法有效利用 GPU 的并行计算特长,资源利用率不足。资源利用率的差异导致了输出阶段成本高,这也是大模型一般输出价格是输入价格 3 到 4 倍的原因。
这里插入一段,解释下为何大模型的输入价格和输出价格是不同的,这是因为在大模型推理(inference,相对模型训练来说的,不是指逻辑推理)阶段,分为Prefill和[Decoding](https://zhida.zhihu.com/search?content_id=248563321&content_type=Article&match_order=1&q=Decoding&zhida_source=entity)两个阶段(参考上图)。Prefill阶段首先把用户的输入[prompt](https://zhida.zhihu.com/search?content_id=248563321&content_type=Article&match_order=1&q=prompt&zhida_source=entity)通过并行计算,产生每个Token对应[Self Attention](https://zhida.zhihu.com/search?content_id=248563321&content_type=Article&match_order=1&q=Self+Attention&zhida_source=entity)的Key-Value,并存储在[KV Cache](https://zhida.zhihu.com/search?content_id=248563321&content_type=Article&match_order=1&q=KV+Cache&zhida_source=entity)中,供Decoding阶段产生每个Token时候计算Self Attention时候用,这个阶段每个Token的Key-Value可并行计算,模型运行一次能输出多个Token的KV,所以[GPU](https://zhida.zhihu.com/search?content_id=248563321&content_type=Article&match_order=1&q=GPU&zhida_source=entity)利用率高;而Decoding阶段根据用户Prompt生成后续内容,但模型运行一次只能产生一个Token,所以无法有效利用GPU的并行计算特长,资源利用率不足。资源利用率的差异导致了输出阶段成本高,这是为何大模型一般输出价格是输入价格3到4倍的原因。
通俗来讲,大模型就是输入大量语料,来让计算机获得类似人类的“思考”能力,使之能够理解自然语言,能够进行『文本生成』、『推理问答』、『对话』、『文档摘要』等工作。既然是学习,那我们就可以用『上学参加工作』这件事来类比大模型的训练、使用过程:1.找学校::训练LLM需要大量的计算,因此GPU更合适,因此只有购买得起大量GPU的贵族学校才有资本训练自己的大模型2.确定教材::大模型顾名思义就是大,需要的数据量特别多,几千亿序列(Token)的输入基本是标配3.找老师::即用什么样的算法讲述“书本”中的内容,让大模型能够更好理解Token之间的关系4.就业指导::学完书本中的知识后,为了让大模型能够更好胜任某一行业,需要进行微调(fine tuning)指导5.搬砖::就业指导完成后,下面就要正式干活了,比如进行一次翻译、问答等,在大模型里称之为推导(infer)在LLM中,Token([2])被视为模型处理和生成的文本单位。它们可以代表单个字符、单词、子单词,甚至更大的语言单位,具体取决于所使用的分词方法(Tokenization)。Token是原始文本数据与LLM可以使用的数字表示之间的桥梁。在将输入进行分词时,会对其进行数字化,形成一个词汇表(Vocabulary),比如:The cat sat on the mat,会被分割成“The”、“cat”、“sat”等的同时,会生成下面的词汇表:|Token|ID||-|-||The|345||cat|1256||sat|1726||…|…|
所以我们真的想要一个助理模型。而获取这些辅助模型的方式基本上是通过以下过程。我们基本上保持优化相同。所以训练是一样的。这只是下一个单词预测任务,但我们将更换正在训练的数据集。所以我们过去一直在尝试对互联网文档进行训练。我们现在将其替换为我们手动收集的数据集。我们收集它们的方式是使用很多人。因此,通常公司会雇用人员,并向他们提供标签说明,并要求人们提出问题,然后为他们写下答案。因此,这是一个基本上可以将其纳入您的训练集的单个示例的示例。有一个用户说,你能写一个关于垄断一词在经济学中的相关性的简短介绍吗?然后是助理。再次,该人填写理想的响应应该是什么,理想的响应以及它是如何指定的以及它应该是什么样子。这一切都来自我们为OpenAI或Anthropic等公司的人员和工程师提供的标签文档,或者其他任何会提供这些标签文档的公司。现在,预训练阶段涉及大量文本,但质量可能较低,因为这些文本仅来自互联网,有数百TB,而且质量并不高。但在第二阶段,我们更看重质量而不是数量。所以我们的文档可能会少很多,例如100,000,但现在所有这些文档都是对话,它们应该是非常高质量的对话,从根本上讲,人们是根据标签说明创建它们的。