BigDL投机解码:Self-Speculative Decoding提速3倍原理

【免费下载链接】BigDL 【免费下载链接】BigDL 项目地址: https://gitcode.com/gh_mirrors/bi/BigDL

BigDL是一个开源深度学习框架,其推出的Self-Speculative Decoding技术能够显著提升大语言模型的推理速度。该技术无需额外的草稿模型或模型微调,就能为FP16和BF16模型带来显著的加速效果,是大语言模型推理优化的重要突破。

传统投机解码的局限

在传统的投机解码(Speculative Decoding)中,需要一个小型的草稿模型快速生成多个草稿令牌,然后由大型的目标模型并行验证这些令牌。虽然这种方法能够有效加速目标模型,但在实际应用中,很难维护甚至获得合适的草稿模型,尤其是当目标模型使用自定义数据进行微调时,寻找匹配的草稿模型更是难上加难。

Self-Speculative Decoding的创新之处

基于“self-speculative decoding”概念,BigDL的IPEX-LLM实现了无需单独草稿模型或模型微调的加速方案。其核心创新在于:自动将原始模型转换为INT4量化模型,并将该INT4模型作为幕后的草稿模型。这种设计巧妙地解决了传统投机解码对草稿模型的依赖问题,实现了**~30%的推理延迟加速**(在Intel GPU和CPU上分别针对FP16和BF16模型)。

工作原理简析

Self-Speculative Decoding的工作流程如下:

  1. 自动将原始FP16/BF16模型转换为INT4量化模型作为草稿模型
  2. 草稿模型快速生成候选令牌序列
  3. 原始高精度模型并行验证这些候选令牌
  4. 结合验证结果生成最终输出

这种方法充分利用了INT4模型的快速推理能力和原始模型的高精度优势,在保证输出质量的同时大幅提升了推理速度。

快速上手:启用Self-Speculative Decoding

使用IPEX-LLM的Self-Speculative Decoding非常简单,只需在加载模型时设置speculative=True参数即可。以下是基于Baichuan2模型的示例代码:

model = AutoModelForCausalLM.from_pretrained(model_path,
                                             optimize_model=True,
                                             torch_dtype=torch.float16,  # GPU使用float16
                                             load_in_low_bit="fp16",     # GPU使用fp16
                                             speculative=True,           # 启用投机解码
                                             trust_remote_code=True,
                                             use_cache=True)

对于CPU平台,则需要使用bfloat16精度:

model = AutoModelForCausalLM.from_pretrained(model_path,
                                             optimize_model=True,
                                             torch_dtype=torch.bfloat16,  # CPU使用bfloat16
                                             load_in_low_bit="bf16",      # CPU使用bf16
                                             speculative=True,            # 启用投机解码
                                             trust_remote_code=True,
                                             use_cache=True)

支持的模型与平台

IPEX-LLM的Self-Speculative Decoding目前已支持多种主流大语言模型,包括:

支持的硬件平台包括Intel CPU和Intel GPU,用户可以根据自己的硬件环境选择合适的配置。

性能优化建议

为了充分发挥Self-Speculative Decoding的性能优势,建议:

  1. 使用长输入序列(长度≥256),以最大化并行验证的效率
  2. 根据硬件类型选择合适的数据类型(GPU用FP16,CPU用BF16)
  3. 适当调整th_stop_draft参数(默认0.6),平衡生成速度和准确性
  4. 确保使用最新版本的IPEX-LLM,以获得最佳优化效果

总结

BigDL的Self-Speculative Decoding技术通过创新的INT4量化草稿模型设计,在无需额外模型的情况下实现了大语言模型推理速度的显著提升。这一技术不仅简化了部署流程,还为各种硬件平台上的大语言模型应用提供了性能保障。无论是科研实验还是生产环境,Self-Speculative Decoding都能成为提升效率的得力工具。

要开始使用这一技术,只需克隆BigDL仓库并参考相应的示例代码:

git clone https://gitcode.com/gh_mirrors/bi/BigDL

更多详细文档和示例可以在项目的官方文档中找到:docs/mddocs/Inference/Self_Speculative_Decoding.md

【免费下载链接】BigDL 【免费下载链接】BigDL 项目地址: https://gitcode.com/gh_mirrors/bi/BigDL

Logo

脑启社区是一个专注类脑智能领域的开发者社区。欢迎加入社区,共建类脑智能生态。社区为开发者提供了丰富的开源类脑工具软件、类脑算法模型及数据集、类脑知识库、类脑技术培训课程以及类脑应用案例等资源。

更多推荐