在英特尔GPU上使用IPEX-LLM实现本地嵌入
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.
本示例演示了如何在英特尔GPU上使用LlamaIndex执行嵌入任务,并采用ipex-llm优化。这在RAG、文档问答等应用中非常有用。
备注
您可以参考此处查看
IpexLLMEmbedding的完整示例。请注意,若要在英特尔GPU上运行,请在运行示例时于命令行参数中指定-d 'xpu'或-d 'xpu:<device_id>'。
要在英特尔GPU上受益于IPEX-LLM,需要完成工具安装和环境准备的几个前提步骤。
如果您是Windows用户,请访问在Windows上使用英特尔GPU安装IPEX-LLM指南,并按照安装先决条件更新GPU驱动程序(可选)并安装Conda。
如果您是Linux用户,请访问在配备英特尔GPU的Linux系统上安装IPEX-LLM,并按照安装先决条件的指引安装GPU驱动程序、英特尔® oneAPI基础工具包2024.0和Conda。
安装 llama-index-llms-ipex-llmllama-index-embeddings-ipex-llm
Section titled “Install llama-index-embeddings-ipex-llm”在完成先决条件安装后,您应该已经创建了一个包含所有先决条件的conda环境,激活您的conda环境并按如下方式安装llama-index-embeddings-ipex-llm:
conda activate <your-conda-env-name>
pip install llama-index-embeddings-ipex-llm[xpu] --extra-index-url https://pytorch-extension.intel.com/release-whl/stable/xpu/us/此步骤还将安装 ipex-llm 及其依赖项。
备注
你也可以使用
https://pytorch-extension.intel.com/release-whl/stable/xpu/cn/作为extra-indel-url。
为获得最佳性能,建议根据您的设备设置以下环境变量:
适用于配备英特尔酷睿Ultra集成显卡的Windows用户
Section titled “For Windows Users with Intel Core Ultra integrated GPU”在 Anaconda 提示符中:
set SYCL_CACHE_PERSISTENT=1set BIGDL_LLM_XMX_DISABLED=1适用于配备英特尔锐炫 A 系列 GPU 的 Linux 用户
Section titled “For Linux Users with Intel Arc A-Series GPU”# Configure oneAPI environment variables. Required step for APT or offline installed oneAPI.# Skip this step for PIP-installed oneAPI since the environment has already been configured in LD_LIBRARY_PATH.source /opt/intel/oneapi/setvars.sh
# Recommended Environment Variables for optimal performanceexport USE_XETLA=OFFexport SYCL_PI_LEVEL_ZERO_USE_IMMEDIATE_COMMANDLISTS=1export SYCL_CACHE_PERSISTENT=1备注
首次在英特尔集成显卡/英特尔锐炫 A300 系列或 Pro A60 上运行每个模型时,可能需要几分钟时间进行编译。
IpexLLMEmbedding
Section titled “IpexLLMEmbedding”在初始化 IpexLLMEmbedding 时设置 device="xpu" 将把嵌入模型部署在英特尔GPU上,并从IPEX-LLM优化中受益:
from llama_index.embeddings.ipex_llm import IpexLLMEmbedding
embedding_model = IpexLLMEmbedding( model_name="BAAI/bge-large-en-v1.5", device="xpu")请注意,
IpexLLMEmbedding目前仅针对 Hugging Face Bge 模型提供优化。如果您有多个英特尔GPU可用,可以设置
device="xpu:<device_id>",其中device_id从0开始计数。device="xpu"默认等于device="xpu:0"。
然后你可以正常执行嵌入任务:
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_embedding = embedding_model.get_text_embedding(sentence)print(f"embedding[:10]: {text_embedding[:10]}")
text_embeddings = embedding_model.get_text_embedding_batch([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.get_query_embedding(query)print(f"query_embedding[:10]: {query_embedding[:10]}")