题目:Falcon: Faster and Parallel Inference of Large Language Models through Enhanced Semi-Autoregressive Drafting and Custom-Designed Decoding Tree
地址:https://arxiv.org/pdf/2412.12639
一看它的架构图,可以发现它是基于EAGLE做的改进。falcon是猎鹰的意思,也可以看出来它是从eagle改进来的。
了解EAGLE,可以参考这篇文章:投机解码EAGLE精读_eagle: speculative sampling requires rethinking fe-CSDN博客
半自回归SAR:draft 同时生成多个 token,然而SAR draft 的一个重要局限是它无法完全捕捉相同 block 内 draft tokens 之间的相互依赖关系,可能导致生成的 token 接受率较低
简单来说,相当于是在EAGLE的基础上,把它和Medusa这种半自回归预测方式融合起来。
为了提高半自回归的预测准确性,Falcon提出了一种叫做耦合顺序扫视蒸馏(CSGD)的方法。
CSGD方法是怎么做的:
-
如下图,在训练过程中,草稿模型预测得到对下面几个token以及其特征的预测之后,会根据正确的预测(也就是LLM自回归生成的token以及特征)对草稿模型输出进行替换
-
具体替换的比例是根据训练所处的阶段和预测结果和正确结果之间的汉明距离决定的,当前训练轮次越小、汉明距离越大,则替换的比例越高
-
在将预测结果进行 部分替换 之后,接下来的步骤是重新输入替换后的序列 到drafter中,并计算 训练损失,从而更新模型参数
CSGD方法的理论依据:
-
SAR方法同时预测多个token(例如 k=2时,同时预测 X 和 Y)。
-
它的目标是同时最小化 H(X)+H(Y),即同时预测两个token的不确定性。
-
同时预测两个token X 和 Y,其总熵为:H(X)+H(Y) = H(Y∣X) + 2I(X;Y) + H(X∣Y);I(X;Y)表示的是X与Y之间的互信息
-
传统的半自回归方式,只关注H(Y∣X),而忽略I(X;Y) 和 H(X∣Y),导致模型无法有效学习token之间的依赖关系,从而影响生成质量。
除了这些改动,本文将EAGLE在embedding之后用于降维的MLP换成了一个LSTM,相当于是能够学习到草稿模型输入的时序关系,也就是掌握了一些tokens之间的依赖关系
在实验方面,选用的模型是vicuna-7B/vicuna-13B和llama2-chat-7B和llama2-chat-13B,这是为了和eagle进行对比;对比的方法有标准投机解码、PLD、lookahead、medusa和eagle。
除了加速比的对比实验,还有对草稿序列的接受率和接收长度的对比,被对比的方法是medusa和eagle。
性能试验的评测数据集是MT-bench、HumanEval和GSM8K:
-
MT-bench,用于评估语言模型在多任务场景下的性能
-
包含80个多轮对话,每个对话有两个问题,这些对话总共有八类,分别是:writing、roleplay、extraction、reasoning、math、coding、stem、humanities。
-
评价指标有两种,一种是把一个模型的生成结果给gpt-4打分,给出一个1-10的得分;一种是比较两个模型的回答,由 GPT-4 判断哪个更好
-
问答数据以及评估的代码:https://github.com/lm-sys/FastChat/tree/main/fastchat/llm_judge
-
在线链接:https://huggingface.co/spaces/lmsys/mt-bench
-
-
HumanEval,用于评估代码生成模型的性能,评估指标是通过率(Pass@k),即生成的代码通过测试用例的比例
-
链接:https://github.com/openai/human-eval
-
-
GSM8K,全称 Grade School Math 8K,包含 8,500 个小学水平的数学问题,目标是测试模型的数学推理能力
-
链接:https://github.com/openai/grade-school-math
-
根据每个题,模型得到一个solution,再得到一个answer,也就是一个数,作为结果
-