
# 大小模型投机推理
#### 什么是大小模型投机
大小模型投机是一种优化推理性能的技术，主要用于加速大语言模型（LLM）的生成过程。大小模型投机是一种利用小模型快速生成候选 token 序列，再由大模型进行验证的推理加速技术。小模型负责"投机"生成若干 token，大模型则并行验证这些 token 的合理性。如果候选 token 被接受，则跳过部分计算；否则回退到第一个错误位置重新生成。
#### 主要应用场景
**适用场景**：
- 对时延要求较高的场景。
- 缺少专门的Eagle模型，可直接复用同系列模型的较小模型作为投机模型。
- 需要保证大小模型的权重文件中 config.json文件下的"vocab_size"，即词表相同。
- ![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002543465334.png)
**不适用场景**：
- 吞吐量较大的场景(batchsize较大，算力遇到瓶颈)。
 
#### 工作原理
1. 起草阶段：使用小模型生成一段候选 token 序列。
2. 验证阶段：将候选序列输入大模型进行并行计算，验证其概率分布是否一致。
 
#### 启用大小投机参数
| 配置项                  | 配置参数                   | 取值类型 | 配置说明                                                                                        |
|:---|:---|:---|:---|
| --speculative-config | num_speculative_tokens | int  | 每次预测的 token 数量。取值为大于等于1的正整数；且若设置过大会导致性能劣化，推荐根据接受率设置1/2/3，其中推荐先设置为1，若接受率高于70%，可尝试设置为2对比性能收益。 |
| --speculative-config | method                 | str  | 投机方法："draft_model"。                                                                         |
| --speculative-config | model                  | str  | 投机模型路径。                                                                                     |
   
