Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[SpecInfer] update docs for iwr #9899

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion llm/docs/predict/inference.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ PaddleNLP 提供了多种量化策略,支持 Weight Only INT8及 INT4推理,

- `speculate_method`: 推理解码算法,默认值为`None`,可选的数值有`None`、`inference_with_reference`。为`None`时为正常自回归解码,为`inference_with_reference`时为基于上下文的投机解码[论文地址](https://arxiv.org/pdf/2304.04487)。

- `speculate_max_draft_token_num`: 投机解码算法中每轮产生的最大 draft tokens 数目,默认值为 1。
- `speculate_max_draft_token_num`: 投机解码算法中每轮产生的最大 draft tokens 数目,默认值为 1,**最大值为 6**

- `speculate_max_ngram_size`: n-gram 匹配 draft tokens 时的最大窗口大小,默认值为`1`。inference_with_reference 算法中会先从 prompt 中使用 ngram 窗口滑动匹配 draft tokens,窗口大小和输入输出重叠程度共同决定了产生 draft tokens 的开销从而影响 inference_with_reference 算法的加速效果。

Expand Down
6 changes: 5 additions & 1 deletion llm/docs/predict/speculative_decoding.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,8 @@ python ./predict/predictor.py --model_name_or_path meta-llama/Llama-2-7b-chat --

在投机解码中一个影响加速比重要的点是 verify 后的接受率,区别于简单的贪心搜索,TopP 和 TopK 采样,我们采取 TopP + Window verify 的方法来提高接受率(默认开启,若要切换到 Top1 verify 请指定环境变量 export SPECULATE_VERIFY_USE_TOPK=1),下面详细介绍 TopP + Window verify 策略的原理。

在推理 draft tokens 得到 verify tokens 的 logits 后,我们先通过 TopP 采样得到 verify tokens,如果 TopP 个 verify tokens 的数目不足 speculate_max_candidate_len 个时 padding 到 speculate_max_candidate_len 个 verify tokens,然后对于每一个 draft token 判断是否位于 verify tokens 中的 TopP 个 token 中,是则 TopP verify 接收此 draft token,否则判断后面两个 draft token 的 Top1 verify 是否接收,只有当后面两个 draft token 都被 Top1 verify 接收时,才同时接收这三个 draft tokens 否则都不接收(window verify)。
在推理 draft tokens 得到 verify tokens 的 logits 后,我们先通过 TopP 采样得到 verify tokens,如果 TopP 个 verify tokens 的数目不足 speculate_max_candidate_len 个时 padding 到 speculate_max_candidate_len 个 verify tokens,然后对于每一个 draft token 判断是否位于 verify tokens 中的 TopP 个 token 中,是则 TopP verify 接收此 draft token,否则判断后面两个 draft token 的 Top1 verify 是否接收,只有当后面两个 draft token 都被 Top1 verify 接收时,才同时接收这三个 draft tokens 否则都不接收(window verify)。更多请参考下面的示意图。

<p align="center">
<img src="https://github.com/user-attachments/assets/bb36603f-e99b-472c-b642-fa6ba5a2ff3d" align="middle" width="500" />
</p>
Loading