武卓

大语言模型(LLM)彻底改变了自然语言处理,推动了聊天机器人、摘要和内容生成等应用的发展。然而,推理效率依然是一个关键挑战,尤其在需要低延迟响应的场景下更为突出。

试想你在一家餐厅,经常点同样的菜。服务员不必每次都询问你的订单再传达给厨房,而是直接认出你常点的菜品并立即上菜,这样既缩短了等待时间,也加快了整个服务流程。

同样,在文本生成中,模型常常遇到输入提示中的重复模式。与每次都从零开始生成 token 不同,提示词检索解码技术能高效地识别并检索提示中的相关部分,从而加速推理过程。

传统的 LLM 解码技术是逐个 token 生成,这在实时应用中容易导致高延迟。比如,推测性解码技术通过利用草稿模型生成多个 token 候选项,再由一个更大、更准确的模型进行验证,从而显著提升推理速度,同时确保生成结果的准确性。

提示词检索解码在此基础上进一步优化:它省去了草稿模型,直接利用输入提示词中预先存在的内容,减少了重复计算。这种方法不仅降低了延迟,而且在面对重复或结构化查询时表现尤为高效。换句话说,模型无需每次都从头生成 token,而是能直接从提示词中提取已有的文本序列,从而大幅减少推理所需的时间。

如需深入了解推测性解码及其优化原理,请参阅相关博客

提示词检索解码的优势:

  • 低延迟:通过减少冗余的 token 预测,加速文本生成过程。
  • 针对重复查询的优化:适用于输入提示词呈现可预测模式的应用场景(例如常见问题、基于文档的问答)。
  • 轻量级实现:无需额外的草稿模型,从而简化部署流程。

通过将提示词检索解码集成到 OpenVINO GenAI API 中,开发者能够在保持准确性和效率的同时,实现文本生成任务的显著性能提升。

使用 OpenVINO 运行提示词检索解码的分步指南

下面,我们将演示如何使用 OpenVINO GenAI 一步步实现提示词检索解码。下面的指南将详细介绍必要的设置、模型准备和执行步骤,帮助你有效地利用这一优化技术。

目录

  1. 获取用于基于提示词检索解码的 LLM 推理的 OpenVINO GenAI 样例代码
  2. 设置 OpenVINO GenAI
  3. 下载和转换模型
  4. 运行提示词检索解码
  5. 结论

步骤 1:获取用于基于提示词检索解码的 LLM 推理的 OpenVINO GenAI 样例代码

了解如何使用 OpenVINO GenAI 实现基于提示词检索解码的 LLM 推理的最简单方式是查看代码仓库中的示例源代码。

下面是一个用于提示词检索解码的 Python 脚本示例:

def main():



    device = 'CPU'



    pipe = openvino_genai.LLMPipeline(args.model_dir, device, prompt_lookup=True)

 

    config = openvino_genai.GenerationConfig()

    config.max_new_tokens = 100

    # add parameter to enable prompt lookup decoding to generate `num_assistant_tokens` candidates per iteration

    config.num_assistant_tokens = 5

    # Define max_ngram_size

    config.max_ngram_size = 3



    # Since the streamer is set, the results will be printed

    # every time a new token is generated and put into the streamer queue.

    pipe.generate(args.prompt, config, streamer)

    print()

可以看出,仅用极少量代码和一些额外配置,就能在 OpenVINO GenAI 的 LLM 流水线中启用提示词检索解码功能。

步骤 2:设置 OpenVINO GenAI

首先,开发者需要安装 OpenVINO GenAI,该工具为生成式 AI 模型提供了优化的运行流水线。

  • 克隆 OpenVINO GenAI 的 GitHub 仓库

openvino.genai GitHub 仓库克隆 OpenVINO GenAI 的源代码。

  • 安装 OpenVINO GenAI

导航至提示词检索解码示例文件夹:
<your_path>\openvino.genai\samples\python\text_generation

准备一个 Python 虚拟环境并激活它然后安装 ../../deployment-requirements.txt 以运行示例

pip install --upgrade-strategy eager -r ../../export-requirements.txt

按照快速入门样例指南获取有关如何设置环境并使用 OpenVINO GenAI 进行推理的详细信息。一旦安装了 OpenVINO GenAI,下一步就是下载并转换模型以便进行推理。

步骤 3:下载和转换模型

在运行推理之前,必须先下载 LLM 模型,并将其转换为 OpenVINO 兼容的格式。例如,你可以使用以下命令下载并转换 Llama-3.1–8B 模型:

optimum-cli export openvino --model meta-llama/Llama-3.1-8B --weight-format int4 Llama-3.1-8B-ov

其中,“--weight-format int4” 表示将精度降低至 int4,以实现英特尔硬件上的优化性能。

  • 下载预优化的 OpenVINO 模型

另外,你也可以下载已经针对 OpenVINO 进行优化的模型,使用 CLI 可直接从此处下载:

huggingface-cli download OpenVINO/TinyLlama-1.1B-Chat-v1.0-int4-ov --local-dir TinyLlama-1.1B-Chat-v1

如果开发者小伙伴不方便从HuggingFace的网站直接下载模型的,也可以利用以下命令,直接从魔搭社区OpenVINO模型专区下载由OpenVINO预优化后的模型

modelscope download --model OpenVINO/ TinyLlama-1.1B-Chat-v1.0-int4-ov

此时,模型已经准备好通过提示词检索解码进行 OpenVINO GenAI 推理。

步骤 3:运行提示词检索解码示例

模型设置完毕后,我们可以使用提示词检索解码方法进行推理。请运行来自 OpenVINO GenAI 仓库的示例脚本:

python prompt_lookup_decoding_lm.py --model_dir Llama-3.1-8B-ov --prompt

该命令将:

  • 加载提示词检索解码机制。
  • 从提示词中提取匹配的 token 以加速推理。
  • 执行低延迟的文本生成。

提供的代码默认在 CPU 上运行,但只需在 prompt_lookup_decoding_lm.py 文件中将设备名称替换为 “GPU”,即可在 GPU 上运行。

device = 'GPU'

pipe = openvino_genai.LLMPipeline(args.model_dir, device, prompt_lookup=True)

你可以修改 “max_ngram_size” 和 “num_assistant_tokens” 的配置,来调整查找提示词匹配时使用的最大 n-gram 长度以及匹配成功后返回的候选序列长度。

在任务要求续写输入文档时,下面展示了在英特尔® 酷睿™ Ultra 200H AI PC 上提示词检索解码的工作原理。

小结

随着人工智能不断重塑各行各业,优化推理效率比以往任何时候都更加重要。提示词检索解码在降低延迟的同时还能保持高质量的文本生成,标志着一大飞跃。通过采用直接检索机制而非推测性解码的草稿模型,OpenVINO GenAI API 在性能和效率上均得到了提升,成为 AI PC、笔记本电脑以及边缘设备的理想选择。

这一创新使开发者能够构建更智能、更迅捷响应的 AI 应用,同时不影响生成结果的准确性。无论是实时聊天机器人、文档摘要还是企业级 AI 解决方案,将提示词检索解码整合到系统中都能在高需求环境中实现最佳性能。

OpenVINO 对 AI 效率的不断追求正在推动整个生态系统的进步,而提示词检索解码等新特性正预示着更大的发展潜力。我们鼓励开发者积极探索、实验,并为 OpenVINO 不断扩展的生成式 AI 工具套件贡献力量,共同驱动下一代 AI 应用的发展。

更多探索,请参阅以下资源:

Logo

为开发者提供丰富的英特尔开发套件资源、创新技术、解决方案与行业活动。欢迎关注!

更多推荐