高效执行:在Intel GPU上利用IPEX-LLM进行本地BGE嵌入

241 阅读2分钟
# 高效执行:在Intel GPU上利用IPEX-LLM进行本地BGE嵌入

## 引言

在当前数据驱动的世界中,嵌入技术在信息检索、问答系统以及推荐引擎等应用中起到了关键作用。为了提高嵌入任务的性能,特别是在低延迟环境下,本文将介绍如何在Intel GPU上使用IPEX-LLM来优化LangChain的嵌入任务。

## 主要内容

### 1. 环境准备

**Windows 用户**- 确保你的系统配有Intel Arc A系列GPU。
- 根据[Windows安装指南](#)完成GPU驱动更新(可选)并安装Conda。

**Linux 用户**- 访问[Linux安装指南](#),安装GPU驱动、Intel® oneAPI Base Toolkit 2024.0和Conda。

### 2. 设置

在安装好前提条件的基础上,创建并激活Conda环境,然后安装必要库:

```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/ 作为额外的索引。

3. 运行时配置

为达到最佳性能,特别是当你使用Intel Core Ultra集成GPU或Intel Arc A系列GPU时,建议设置如下环境变量:

import os

# 针对Intel Core Ultra集成GPU用户
os.environ["SYCL_CACHE_PERSISTENT"] = "1"
os.environ["BIGDL_LLM_XMX_DISABLED"] = "1"

# 针对Intel Arc A系列GPU用户
os.environ["SYCL_CACHE_PERSISTENT"] = "1"

4. 基础使用方法

将设备设置为"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"},  # 使用API代理服务提高访问稳定性
    encode_kwargs={"normalize_embeddings": True},
)

sentence = "IPEX-LLM is a PyTorch library for running LLM on Intel CPU and GPU."
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或Intel Arc A300系列上运行模型,可能需要几分钟时间进行编译。
  • 兼容性问题:确保驱动和工具链版本匹配。

总结和进一步学习资源

学习如何在不同的环境中优化并运行ML模型非常重要。以下资源可以帮助你进一步学习:

参考资料

  1. IPEX-LLM官方文档
  2. LangChain 在嵌入任务中的应用
  3. Intel GPU驱动与工具安装

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

---END---