Skip to content
LlamaIndex 文档版本 跟随上游 源快照 bed85b57 更新于 2026-10-18

OpenVINO™ 是一个用于优化和部署 AI 推理的开源工具包。OpenVINO™ Runtime 可以在各种硬件设备上运行同一优化模型。加速你的深度学习性能,适用于语言 + LLM、计算机视觉、自动语音识别等用例。

可以通过由 LlamaIndex 封装的 OpenVINOLLM 实体在本地运行 OpenVINO 模型:

在下面一行中,我们安装本演示所需的软件包:

%pip install llama-index-llms-openvino transformers huggingface_hub

设置完成后,我们来试试:

如果你在 Colab 中打开这个 Notebook,可能需要先安装 LlamaIndex 🦙。

!pip install llama-index
from llama_index.llms.openvino import OpenVINOLLM
def messages_to_prompt(messages):
    prompt = ""
    for message in messages:
        if message.role == "system":
            prompt += f"<|system|>\n{message.content}</s>\n"
        elif message.role == "user":
            prompt += f"<|user|>\n{message.content}</s>\n"
        elif message.role == "assistant":
            prompt += f"<|assistant|>\n{message.content}</s>\n"

    # ensure we start with a system prompt, insert blank if needed
    if not prompt.startswith("<|system|>\n"):
        prompt = "<|system|>\n</s>\n" + prompt

    # add final assistant prompt
    prompt = prompt + "<|assistant|>\n"

    return prompt

def completion_to_prompt(completion):
    return f"<|system|>\n</s>\n<|user|>\n{completion}</s>\n<|assistant|>\n"

模型加载

可以通过 OpenVINOLLM 方法指定模型参数来加载模型。

如果你有 Intel GPU,可以指定 device_map="gpu" 以在其上运行推理。

ov_config = {
    "PERFORMANCE_HINT": "LATENCY",
    "NUM_STREAMS": "1",
    "CACHE_DIR": "",
}

ov_llm = OpenVINOLLM(
    model_id_or_path="HuggingFaceH4/zephyr-7b-beta",
    context_window=3900,
    max_new_tokens=256,
    model_kwargs={"ov_config": ov_config},
    generate_kwargs={"temperature": 0.7, "top_k": 50, "top_p": 0.95},
    messages_to_prompt=messages_to_prompt,
    completion_to_prompt=completion_to_prompt,
    device_map="cpu",
)
response = ov_llm.complete("What is the meaning of life?")
print(str(response))

使用本地 OpenVINO 模型进行推理

可以使用 CLI 将模型导出为 OpenVINO IR 格式,并从本地文件夹加载模型。

!optimum-cli export openvino --model HuggingFaceH4/zephyr-7b-beta ov_model_dir

建议使用 --weight-format 应用 8 位或 4 位权重量化,以减少推理延迟和模型占用:

!optimum-cli export openvino --model HuggingFaceH4/zephyr-7b-beta --weight-format int8 ov_model_dir
!optimum-cli export openvino --model HuggingFaceH4/zephyr-7b-beta --weight-format int4 ov_model_dir
ov_llm = OpenVINOLLM(
    model_id_or_path="ov_model_dir",
    context_window=3900,
    max_new_tokens=256,
    model_kwargs={"ov_config": ov_config},
    generate_kwargs={"temperature": 0.7, "top_k": 50, "top_p": 0.95},
    messages_to_prompt=messages_to_prompt,
    completion_to_prompt=completion_to_prompt,
    device_map="gpu",
)

你还可以通过对激活值和 KV 缓存进行动态量化来进一步提升推理速度。这些选项可以通过 ov_config 启用,如下所示:

ov_config = {
    "KV_CACHE_PRECISION": "u8",
    "DYNAMIC_QUANTIZATION_GROUP_SIZE": "32",
    "PERFORMANCE_HINT": "LATENCY",
    "NUM_STREAMS": "1",
    "CACHE_DIR": "",
}

流式

使用 stream_complete 端点

response = ov_llm.stream_complete("Who is Paul Graham?")
for r in response:
    print(r.delta, end="")

使用 stream_chat 端点

from llama_index.core.llms import ChatMessage

messages = [
    ChatMessage(
        role="system", content="You are a pirate with a colorful personality"
    ),
    ChatMessage(role="user", content="What is your name"),
]
resp = ov_llm.stream_chat(messages)

for r in resp:
    print(r.delta, end="")

更多信息请参阅:

BytesRouter 是社区翻译站点,所有译文仅供参考,一切以官方英文原文为准。