Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
返回 Ultralytics 术语表

Medusa Heads

Medusa 头是 LLM 的额外解码头,可同时预测多个未来 token,再通过树注意力进行验证,从而加快输出速度,无需草稿模型。

Medusa 头是轻量级解码头,添加在大型语言模型的最后一个隐藏层之上;每个头都经过训练,用来预测比模型自身输出层更靠后的一个词元。模型只需一次前向传播,就能生成常规的下一个词元预测,以及对后续几个位置的猜测;接下来的一次前向传播中,树注意力步骤会检查这些猜测,并保留模型认可的最长连续序列。Medusa 是一种推测解码方法,不需要单独的草稿模型,因此无需训练、托管或保持第二个网络同步。Tianle Cai、Tri Dao 及其同事于 2024 年 1 月在论文《Medusa:具有多个解码头的简单 LLM 推理加速框架》中提出了该方法。

解码头如何预测未来词元#

标准的文本生成步骤会将位置 t 的最后一个隐藏状态输入语言模型输出头,由它为位置 t + 1 的词元评分。Medusa 的第 k 个头读取同一个隐藏状态,并为位置 t + k + 1 的词元评分。每个头都是一个单层前馈层,使用 SiLU 激活函数和残差连接,随后再投影到词表。投影层一开始会复制语言模型输出头,而前馈层的初始值为零,因此训练前每个头都会复现基础模型的下一个词元预测。论文发现五个头就足够了。下面这个 PyTorch 示例构建了三个头,并比较它们与基础模型输出头在同一个隐藏状态上的输出:

import torch
import torch.nn.functional as F

hidden_size, vocab_size, num_heads = 256, 1000, 3
lm_head = torch.nn.Linear(hidden_size, vocab_size, bias=False)  # 冻结模型的输出层

# 每个 Medusa 头:一个零初始化的残差 SiLU 层和语言模型输出头的副本
w1 = [torch.nn.Linear(hidden_size, hidden_size) for _ in range(num_heads)]
w2 = [torch.nn.Linear(hidden_size, vocab_size, bias=False) for _ in range(num_heads)]
for layer, out in zip(w1, w2):
    torch.nn.init.zeros_(layer.weight)
    torch.nn.init.zeros_(layer.bias)
    out.weight.data.copy_(lm_head.weight.data)

# 所有头都读取同一个最后隐藏状态;第 k 个头预测位置 t + k + 1
h = torch.randn(1, hidden_size)
head_logits = [out(h + F.silu(layer(h))) for layer, out in zip(w1, w2)]
print([torch.equal(logits, lm_head(h)) for logits in head_logits])

输出 [True, True, True] 表明,零初始化的残差层会让每个新头在初始化时与基础模型的预测完全相同。随后,训练会让第 k 个头转而预测它对应的未来位置,而 lm_head 和主干网络保持不变。

树注意力与接受机制#

各个头给出的最高概率猜测会组合成候选续写。取第 1 个头概率最高的两个词元和第 2 个头概率最高的三个词元,它们的笛卡尔积会生成六个共享前缀、构成一棵树的候选:

在下一次前向传播中,所有候选词元会一次性附加到输入中,而注意力掩码会让每个词元只能看到树中属于自己的祖先节点,因此模型可以并行评估所有分支。模型接受的最长分支会被保留,其最后一个隐藏状态会输入各个头,用于下一轮预测。由于所有头都读取同一个隐藏状态,因此无论第 1 个头选择哪个分支,第 2 个头提出的词元都相同。作者发现,使用最准确组合构建的 64 节点稀疏树,比 256 节点的密集树能带来更高的加速率。

使用贪心解码时,候选词元与模型的最高概率选择一致即可被接受。对于采样,Medusa 提供典型接受机制:只要候选词元在基础模型下的概率超过一个与分布熵相关的阈值,就会予以保留。这种方法能接受更多词元,但代价是无法精确匹配原始分布。

Medusa-1 和 Medusa-2 的训练#

Medusa-1 只训练添加在冻结主干网络之上的新头,因此模型输出质量保持不变;论文报告其生成速度提升超过 2.2 倍。使用 60,000 段 ShareGPT 对话,在一块 A100 GPU 上训练 Vicuna-7B 的解码头耗时约五小时。这与 freeze=23 设置的方案相同:在微调 Ultralytics YOLO26时,第 0 至 22 层保持冻结,只有第 23 层的检测头使用新数据进行学习。

Medusa-2 会将解码头和主干网络一起微调,使解码头的准确度更高,并将加速比提升到 2.3–3.6 倍;它使用的训练方案能保护主干网络原有的能力。如果无法获得原始训练数据,自蒸馏会使用模型自行生成的文本训练解码头。

Medusa 属于几种直接从目标模型生成草稿词元的方法之一。EAGLE 使用一个小型自回归层,根据模型的内部特征生成草稿;DeepSeek-V3 使用的多词元预测,则会在预训练期间训练额外的预测模块,供服务引擎之后用作草稿生成器。这三种方法在交互式聊天机器人的小型批次大小下最能降低推理延迟,因为每次前向传播时,GPU大部分时间都在等待内存。

Explore solutions

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来