正文
#
贪婪搜索、随机采样与投机采样
关键词:LLM, Inference, Greedy Search, Random Sampling, Speculative Decoding
1. 核心摘要 (Executive Summary)
在大语言模型(LLM)的推理(Inference)阶段,如何选择下一个 Token 决定了输出的质量,而如何计算下一个 Token 决定了输出的速度。
- 贪婪搜索与随机采样属于“内容生成策略”,决定了模型“说什么”,前者追求确定性,后者追求多样性。
- 投机采样属于“推理加速技术”,决定了模型“说多快”,它是一种工程上的优化手段,通常叠加在上述两种策略之上使用。
对于 Qwen、GLM、Gemini 等现代模型,随机采样是默认的生成体验,而投机采样是后台普遍采用的加速引擎。
2. 深度原理解析
2.1 贪婪搜索 (Greedy Search)
“只选概率最高的那个词。”
- 原理:在模型预测下一个 Token 的概率分布中,始终选择概率最大(Argmax)的那个 Token。
- 特性:
- 确定性:对于相同的输入,永远输出相同的结果(Temperature = 0)。
- 局部最优:只看眼前的最优解,不考虑整体句子的通顺度。
- 适用场景:数学解题、代码生成、逻辑推理等要求严谨、不容许“自由发挥”的场景。
2.2 随机采样 (Random Sampling)
“根据概率分布掷骰子。”
- 原理:不一定选概率最大的,而是根据概率分布随机抽取。通常结合以下参数控制:
- Temperature (温度):控制概率分布的平滑程度。温度越高,低概率词被选中的机会越大(更疯癫);温度越低,越接近贪婪搜索。
- Top-k:只在概率最高的 k 个词里抽。
- Top-p (Nucleus Sampling):只在累加概率达到 p (如 0.9) 的词集合里抽。
- 特性:
- 多样性:相同输入,每次输出不同。
- 创造性:能生成更有趣、更类人的文本。
- 适用场景:聊天机器人、创意写作、故事生成(如 ChatGPT、Gemini 的默认模式)。
2.3 投机采样 (Speculative Sampling / Decoding)
“小模型写草稿,大模型做批改。”
- 原理:利用大模型的“内存带宽瓶颈”特性。
- Draft(草稿):使用一个极小的模型(Draft Model,如 Qwen-1.8B)快速生成 K 个 Token。
- Verify(验证):大模型(Target Model,如 Qwen-72B)并行计算这 K 个 Token 的概率。
- Accept/Reject(接受/拒绝):如果大模型认为小模型猜得对(或符合大模型的分布),则通过;否则修正。
- 特性:
- 无损加速:数学上证明,其输出分布与单独运行大模型完全一致(Exact Match)。
- 高并发:利用大模型单次推理的计算空闲,一次处理多个 Token。
- 适用场景:高并发在线服务、本地部署大参数模型(降低延迟)。
3. 三种方式对比分析表
| 维度 | 贪婪搜索 (Greedy) | 随机采样 (Random) | 投机采样 (Speculative) |
| :— | :— | :— | :— |
| 类别 | 生成策略 | 生成策略 | 系统优化/加速技术 |
| 核心逻辑 | argmax(P(x)) | sample(P(x)) | Draft -> Verify |
| 主要优点 | 稳定、逻辑严密、无随机性 | 丰富、自然、避免死循环 | 显著降低延迟 (Latency),提升吞吐量 |
| 主要缺点 | 容易生成重复内容,缺乏创意 | 结果不可控,可能产生幻觉 | 需要额外的显存加载小模型,实现复杂 |
| 模型需求 | 单模型 | 单模型 | 双模型 (大模型 + 配套小模型) |
| 输出速度 | 慢 (受限于显存带宽) | 慢 (受限于显存带宽) | 快 (通常提升 1.5x - 3x) |
4. 行业主流模型应用现状
4.1 Qwen (通义千问) & GLM (智谱)
这两个开源生态在国内应用最广,应用方式如下:
- 生成策略:在 Chat 模式下,默认均采用 Top-p 随机采样 (Top-p=0.8, Temp=0.7 左右),以保证对话的流畅性和多样性。
- 加速策略 (投机采样):
- Qwen 生态:阿里云官方和社区高度推荐使用 Qwen-1.8B 或 Qwen-7B (Int4) 作为 Draft Model,来加速 Qwen-72B 或 Qwen-110B。
- GLM 生态:GLM-4-9B-Chat 经常作为 Draft Model 来加速更大规模的 GLM 模型。
4.2 Gemini (Google) / GPT-4 (OpenAI)
作为闭源 API 服务,用户无法控制其底层架构,但可以通过行为反推:
- 策略:Gemini 1.5 Pro 等模型在处理长文本和逻辑推理时,表现出极快的 Token 生成速度(远超传统自回归物理极限)。这暗示其底层架构广泛应用了 投机采样 或其变种(如 Lookahead Decoding, Medusa 头结构)。
5. 工程部署与实施指南 (可操作建议)
如果您正在企业内部部署大模型,建议按以下方式实施:
5.1 场景一:代码助手 / 数学解题
- 推荐策略:贪婪搜索 (Greedy)
- 配置:
temperature=0,top_p=1 - 理由:代码不需要“创意”,需要“准确”。
5.2 场景二:智能客服 / 知识问答
- 推荐策略:随机采样 (Random Sampling)
- 配置:
temperature=0.7,top_p=0.9 - 理由:避免回答生硬,增加亲和力。
5.3 场景三:私有化部署超大模型 (如 70B+) 且显卡资源受限
- 推荐策略:投机采样 (Speculative Decoding)
- 实施工具:使用 vLLM 或 Llama.cpp 框架。
vLLM 部署投机采样示例 (以 Qwen 为例):
# 假设你有两张卡,想跑 Qwen-72B,觉得太慢
# 使用 Qwen-1.8B 作为“草稿模型”进行加速
python -m vllm.entrypoints.openai.api_server \
--model Qwen/Qwen-72B-Chat \ # 目标大模型
--speculative-model Qwen/Qwen-1_8B-Chat \ # 草稿小模型
--num-speculative-tokens 5 \ # 每次让小模型猜5个词
--use-v2-block-manager \
--tensor-parallel-size 2 # 双卡并行