Medusa
Medusa 是一个旨在加速大语言模型(LLM)文本生成的轻量级框架。它通过在大模型基础上附加多个“解码头”,实现了对未来多个令牌(token)的并行预测,从而显著提升了推理速度。
传统加速方法(如投机采样)通常依赖额外的草稿模型,不仅系统复杂,且在非贪婪采样场景下效率受限。Medusa 巧妙地解决了这些痛点:它无需引入新模型,仅在原模型上训练额外的解码头,保持了原有架构不变;训练过程参数高效,即使显存资源有限的用户也能轻松上手;同时,它放宽了对分布匹配的要求,使得在多样化生成任务中也能获得比传统贪婪解码更快的速度。实测显示,Medusa 能在多种主流模型上带来 2.2 至 3.6 倍的提速效果。
该工具特别适合希望优化本地部署性能的开发者、追求高效推理的研究人员,以及需要快速迭代大模型应用的工程师。其独特亮点包括支持全模型训练的 Medusa-2 方案,以及无需原始训练数据即可适配任意微调模型的自蒸馏技术。无论是构建高性能聊天机器人还是处理长文本生成任务,Medusa 都能以极简的集成方式,为用户提供流畅且高效的生成体验。
使用场景
某初创团队正在本地部署一款基于 Vicuna-7b 的垂直领域客服机器人,需实时响应用户的复杂咨询。
没有 Medusa 时
- 推理延迟高:受限于单卡算力,生成每个 token 都需串行计算,用户提问后往往需要等待数秒才能看到完整回复,体验流畅度差。
- 依赖额外模型:若尝试使用传统的投机采样(Speculative Decoding)加速,必须寻找并维护一个与大模型分布高度匹配的“草稿模型”,增加了架构复杂度。
- 采样效率低:在需要多样化回答的非贪婪采样模式下,传统加速方法效果显著下降,甚至不如最基础的贪婪解码快。
- 微调成本大:想要适配自有数据,通常需要全量重训或复杂的分布式设置,对显存资源有限的团队极不友好。
使用 Medusa 后
- 生成速度翻倍:Medusa 通过在大模型上附加多个解码头,实现多 token 并行预测,在单卡环境下将推理速度提升了约 2.2 倍,回复几乎即时呈现。
- 架构极简:无需引入任何外部草稿模型,仅在原模型基础上训练轻量级头部,保持了系统结构的简洁性与稳定性。
- 采样性能优异:即使在非贪婪采样场景下,Medusa 依然能保持高效加速,确保了客服回答的多样性与自然度不减。
- 低成本适配:利用自蒸馏技术,团队无需原始训练数据即可将 Medusa 能力迁移至微调后的模型,且仅需少量参数更新,普通显卡即可完成。
Medusa 以极低的改造成本打破了大模型串行生成的瓶颈,让资源受限的本地部署也能拥有丝滑的实时交互体验。
运行环境要求
- Linux
- 必需 NVIDIA GPU
- 推理支持单卡(Single-GPU),训练支持多卡(如示例中的 4 卡)
- 支持使用 --load-in-8bit 或 --load-in-4bit 量化加载基础模型以降低显存需求
- 具体显存大小取决于所选模型(7B/13B/33B),未明确给出最低数值,但提及该框架对“显存较少(GPU-Poor)”的用户友好
未说明

快速开始

Medusa:用于多解码头加速LLM生成的简单框架
新闻 🔥
- [2024/1] Medusa技术报告现已在arXiv上发布。我们新增了多项功能,包括用于全模型训练的Medusa-2配方、用于将Medusa添加到任何微调LLM中的自蒸馏等。新结果表明,在一系列LLM上,相比原始模型,速度提升了2.2至3.6倍。
简介
Medusa是一个简单的框架,旨在普及使用多解码头加速LLM生成的技术。
我们致力于解决诸如推测性解码等流行加速技术的三大痛点:
- 需要一个优秀的草稿模型。
- 系统复杂度高。
- 在基于采样的生成过程中效率低下。
我们希望通过以下思路来解决推测性解码所面临的挑战:
- 不引入新模型,而是在同一模型上训练多个解码头。
- 训练过程参数高效,即使是资源有限的用户也能完成。由于无需额外模型,因此也无需调整分布式计算设置。
- 放宽对与原始模型分布匹配的要求,使得非贪婪生成的速度甚至超过贪婪解码。
在初始版本中,我们的主要关注点是优化适用于批大小为1的Medusa——这一设置常用于本地模型部署。在此配置下,Medusa在一系列Vicuna模型上可实现约2倍的速度提升。我们正积极努力将Medusa集成到更多推理框架中,以进一步提升性能,并将其扩展到更广泛的场景。
在更新版本中,我们增加了对全模型训练的支持,称为Medusa-2(相对于仅训练新增头部的Medusa-1),这需要一种特殊的配方,能够在保留原始模型性能的同时,赋予其推测性预测能力。
我们还新增了自蒸馏支持,使我们能够将Medusa添加到任何微调过的LLM中,而无需原始训练数据。
目录
安装
方法1:通过pip(可能不是最新版本)
pip install medusa-llm
方法2:从源代码安装(推荐)
git clone https://github.com/FasterDecoding/Medusa.git
cd Medusa
pip install -e .
模型权重
Medusa-1
| 规模 | 对话命令 | Hugging Face仓库 |
|---|---|---|
| 7B | python -m medusa.inference.cli --model FasterDecoding/medusa-vicuna-7b-v1.3 |
FasterDecoding/medusa-vicuna-7b-v1.3 |
| 13B | python -m medusa.inference.cli --model FasterDecoding/medusa-vicuna-13b-v1.3 |
FasterDecoding/medusa-vicuna-13b-v1.3 |
| 33B | python -m medusa.inference.cli --model FasterDecoding/medusa-vicuna-33b-v1.3 |
FasterDecoding/medusa-vicuna-33b-v1.3 |
Medusa-2
| 规模 | 对话命令 | Hugging Face仓库 |
|---|---|---|
| Zephyr-7B-Beta | python -m medusa.inference.cli --model FasterDecoding/medusa-1.0-zephyr-7b-beta |
FasterDecoding/medusa-1.0-zephyr-7b-beta |
| Vicuna-7B-v1.5 | python -m medusa.inference.cli --model FasterDecoding/medusa-1.0-vicuna-7b-v1.5 |
FasterDecoding/medusa-1.0-vicuna-7b-v1.5 |
| Vicuna-13B-v1.5 | python -m medusa.inference.cli --model FasterDecoding/medusa-1.0-vicuna-13b-v1.5 |
FasterDecoding/medusa-1.0-vicuna-13b-v1.5 |
| Vicuna-33B-v1.5 | python -m medusa.inference.cli --model FasterDecoding/medusa-1.0-vicuna-33b-v1.5 |
FasterDecoding/medusa-1.0-vicuna-33b-v1.5 |
推理
目前我们支持单 GPU 推理,批次大小为 1,这是本地模型托管中最常见的配置。我们正在积极努力将 Medusa 集成到其他推理框架中,以扩展其功能;如果您有意参与这一工作,请随时与我们联系。
您可以使用以下命令启动 CLI 界面:
CUDA_VISIBLE_DEVICES=0 python -m medusa.inference.cli --model [Medusa 模型路径]
您还可以传递 --load-in-8bit 或 --load-in-4bit 参数,以量化格式加载基础模型。如果您在其他地方下载了基础模型,可以使用 --base-model [基础模型路径] 来覆盖基础模型的名称或路径。
训练
在更新版本中,我们使用强大的 axolotl 库来管理训练过程。请参阅我们的 fork 获取训练代码。主要的代码修改位于 src/axolotl/utils/models.py。训练配置可在 examples/medusa 中找到。典型的训练命令如下:
accelerate launch -m axolotl.cli.train examples/medusa/your_config.yml
用于自蒸馏的数据准备代码可在当前仓库的 data_generation 文件夹 中找到。对于其他数据集,您可以直接从相应的 Hugging Face 数据集仓库下载数据。
在不同架构上训练
以下说明适用于 Medusa 的初始版本,提供了一个训练 Medusa-1 模型的最小示例。有关更新版本的说明,请参阅前一节。
进行训练时,请安装:
pip install -e ".[train]"
准备数据
我们采用 ShareGPT 数据集的一个公开版本,它是 Vicuna 训练数据的一个子集。对于其他模型,您可以使用相应的训练数据集。
git clone https://huggingface.co/datasets/Aeala/ShareGPT_Vicuna_unfiltered
注意:如果您尚未安装 git-lfs,请在克隆之前先安装:
git lfs install
将数据适配到您希望启用 Medusa 的模型上。
首先启动一个您喜欢的推理服务器,运行您想要训练的模型。我们以 mistralai/Mistral-7B-Instruct-v0.2 为例。
例如,您可以使用 text-generation-inference,该工具在您训练完 Medusa 头部后也可以继续使用。
model=mistralai/Mistral-7B-Instruct-v0.2
volume=$PWD/data # 与 Docker 容器共享卷,避免每次运行都重新下载权重
docker run --gpus all --shm-size 1g -p 8080:80 -v $volume:/data ghcr.io/huggingface/text-generation-inference:latest --model-id $model --input-length 4000 --max-total-tokens 4096 --max-batch-prefill-tokens 4000
ShareGPT 中的部分序列较长,因此请确保能够成功推理这些序列。如果内存不足,脚本会自动跳过这些长对话。这不会对下游性能产生太大影响,但更多的数据总是更好的。
您可以根据需要调整各种参数以 加速推理,不过默认设置在大多数情况下已经足够好。
python create_data.py --input-filename ShareGPT_Vicuna_unfiltered/ShareGPT_V4.3_unfiltered_cleaned_split.json --output-filename mistral.json
训练模型
我们沿用了 FastChat 的训练设置,但由于我们冻结了原始模型,只训练新增的头部,因此学习率设置得更高。以下是针对 Vicuna-7b 模型在 4 张 GPU 上的训练命令。由于我们仅训练新增的头部,训练所需的显存较少,只需使用数据并行即可。您可以根据自己的硬件配置调整脚本。对于更大的模型,我们也采用相同的设置。此外,您还可以使用 --load_in_8bit 或 --load_in_4bit 参数,以量化格式加载基础模型。
torchrun --nproc_per_node=4 medusa/train/train_legacy.py --model_name_or_path mistralai/Mistral-7B-Instruct-v0.2 \
--data_path mistral.json \
--bf16 True \
--output_dir test \
--num_train_epochs 2 \
--per_device_train_batch_size 8 \
--per_device_eval_batch_size 8 \
--gradient_accumulation_steps 4 \
--evaluation_strategy "no" \
--save_strategy "no" \
--learning_rate 1e-3 \
--weight_decay 0.0 \
--warmup_ratio 0.1 \
--lr_scheduler_type "cosine" \
--logging_steps 1 \
--tf32 True \
--model_max_length 2048 \
--lazy_preprocess True \
--medusa_num_heads 3 \
--medusa_num_layers 1 \
--deepspeed deepspeed.json
推送到 Hugging Face Hub
您可以使用以下命令将您的模型推送到 Hugging Face Hub:
python -m medusa.hf_utils --folder [模型文件夹路径] --repo [仓库名称]
引用
@article{cai2024medusa,
title = {Medusa: 基于多解码头的简单 LLM 推理加速框架},
author = {Tianle Cai、Yuhong Li、Zhengyang Geng、Hongwu Peng、Jason D. Lee、Deming Chen、Tri Dao},
year = {2024},
journal = {arXiv 预印本 arXiv: 2401.10774}
}
代码库指南
medusa/model/medusa_model.py 是 Medusa 的核心文件。它包含了 MedusaModel 类,该类是对原始模型和新增头部的封装。此外,该类还实现了流式生成方法。如果您想深入了解 Medusa 的细节,这里就是起点。
我们还在 notebooks/ 目录中提供了一些示例笔记本,帮助您更好地理解代码库。
社区采纳
我们非常高兴地看到 Medusa 已被许多开源项目所采用。以下是一个不完全列表:
我们感谢这些作者对社区的贡献,并真诚希望 Medusa 能够助力 LLM 的发展。如果您在项目中使用了 Medusa,请告知我们,我们将把您的项目加入到列表中。
贡献
我们欢迎社区为 Medusa 做出贡献。如果您有任何改进建议,请提交一个议题与我们讨论。在提交拉取请求时,请确保您的更改经过充分测试。请将每一项重大更改拆分为单独的拉取请求。我们还有一个 路线图,概述了 Medusa 未来的规划。如果您对参与路线图中的任何事项感兴趣,请随时联系我们。
致谢
本代码库受到大语言模型社区中一些杰出项目的启发,包括 FastChat、TinyChat、vllm 和 axolotl。
本项目得到了 Together AI、MyShell AI 和 Chai AI 的支持。
版本历史
v0.12023/09/11常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器