You need to enable JavaScript to run this app.
文档中心
云服务器

云服务器

复制全文
下载 pdf
AIGC实践
基于g4i实例部署优化后的RAG框架
复制全文
下载 pdf
基于g4i实例部署优化后的RAG框架
本文主要介绍,如何在ecs.g4i规格的实例中部署优化后的RAG框架,包含OCR、Embedding、Vector Database等核心组件,提升RAG推理效率。​
功能特色​
本实践使用了火山引擎第4代云服务器通用型g4i,该规格实例采用火山引擎自研最新DPU架构并搭载了第六代英特尔® 至强® 可扩展处理器(Granite Rapids),结合新一代硬件AI加速指令AMX-BF16(Intel Advanced Matrix Extensions)以及基于其上的IPEX框架优化,实现了系统级优化方案来加速RAG框架各核心组件推理速度。​
背景信息​
RAG​
Retrieval-Augmented Generation(RAG,检索增强生成)是一种将信息检索与文本生成相结合的技术,可用于提升生成式AI模型(例如大型语言模型LLM)的准确性和可靠性,减少模型幻觉。​
  • 信息检索:在生成答案前,RAG会利用检索系统,从大量的文本数据(例如本地文档、互联网、企业数据库等)中查找与输入的问题或提示相关的信息。​
  • 文本生成:在获取到相关检索结果后,RAG会将检索到的文档片段与用户问题结合输入生成式AI模型(例如大型语言模型LLM),模型会将这些检索到的信息作为额外的上下文信息,与输入的问题或提示一起进行处理,然后生成相应的回答或内容。​
OCR​
光学字符识别(Optical Character Recognition),这是一种将印刷或手写文本转换为机器可读文本的技术。它涉及从图像或文档中识别和提取字符,然后将其转换为计算机可处理的编码文本。本文以部署优化后的OCR工具MinerU为例,该工具将通过如下步骤识别PDF文本,每个步骤使用的模型均来自PDF-Extract-Kit,且均通过MinerU工具进行微调。所有步骤及其使用的模型如下所示:​
​
步骤​
模型​
布局检测​
  • LayoutLMv3:LayoutLMv3是微软亚洲研究院推出的,通过简化图像表征、统一掩码建模和词块对齐预训练,能高效处理文本与图像多模态信息的通用型文档AI预训练模型。​
  • YOLO:“You Only Look Once”是一种使用卷积神经网络进行目标检测的算法。YOLO是其中速度较快的物体检测算法之一。​
公式检测​
YOLO: “You Only Look Once”是一种使用卷积神经网络进行目标检测的算法。YOLO是其中速度较快的物体检测算法之一。​
表格识别​
  • TableMaster:将表识别任务分为表结构识别、文本行检测、文本行识别和框分配四个子任务​
  • StructEqTable:以端到端的方式执行表识别任务,表现出更强的识别性能,即使面对复杂的表也能提供良好的结果。​
公式识别​
UniMERNet:UniMERNet是一个深度学习模型,专注于数学公式的识别。​
OCR​
Paddle-OCR:PaddleOCR是基于深度学习框架PaddlePaddle开发的开源OCR工具库,提供文本检测、识别、方向分类等全流程能力。​
​
Embedding & Rerank​
在RAG系统中,Embedding(嵌入) 和 Rerank(重排序) 是提升检索质量的两个核心环节,分别承担不同的功能,共同确保模型能高效、准确地获取相关知识。​
​
操作​
说明​
Embedding​
嵌入,将文本(如问题、文档片段)转化为高维向量(Embedding),通过向量之间的“距离”(如余弦相似度)衡量文本语义的相关性,从而快速从海量文档中筛选出与问题相关的候选内容。​
Rerank​
重排序,对Embedding阶段返回的候选文档(Top N)进行二次排序,进一步提升相关性。​
​
向量数据库​
在RAG框架中,向量数据库(Vector Database)是连接信息检索与文本生成的核心组件,负责高效存储、管理和检索非结构化数据的语义向量表示,直接影响RAG系统的准确性、响应速度和可扩展性。​
OCR​
安装优化后的OCR​
  1. 购买ecs.g4i规格实例。本节采用的实例配置如下:​
  • 实例规格:ecs.g4i.8xlarge​
  • 镜像:Ubuntu 24.04 64 bit​
  • 网络:分配弹性公网IP​
  1. 执行如下命令,安装依赖。​
  • ​
    apt update​
    apt install docker.io​
    ​
  1. 执行如下命令,拉取基于ecs.g4i规格实例优化后的OCR镜像。​
  • ​
    docker pull cr-for-diting-nodelete-cn-beijing.cr.volces.com/practice-images/ai:ocr​
    ​
  1. 执行如下命令,启动Docker镜像。​
  • ​
    docker run -it cr-for-diting-nodelete-cn-beijing.cr.volces.com/practice-images/ai:ocr bash​
    ​
  1. 执行如下命令,运行镜像预置的Demo。​
  • ​
    cd MinerU/demo/ && python3 demo_new.py​
    ​
  1. 相关操作。​
  • 查看OCR结果:​
  • MinerU工具对PDF文件进行OCR操作后的结果,存储在/MinerU/demo/pdfs目录中,请在该目录中查看对应结果。​
  • 更换OCR目标:​
  1. 执行如下命令,进入OCR目标PDF文件所在目录。​
  • ​
    cd /MinerU/demo/pdfs​
    ​
说明​
请将/MinerU/demo/pdfs替换为实际PDF文件所在目录。​
  1. 执行如下命令,运行OCR Demo。​
  • ​
    python3 demo_new.py​
    ​
性能数据​
本节展示了使用ecs.g4i.8xlarge规格实例部署优化后的OCR模型,在开启AMX加速前后,OCR操作耗时信息。​
​
实例规格​
未加速​
AMX加速​
ecs.g4i.8xlarge​
49.42 s​
23.73s​
​
Embedding & Rerank​
安装优化后的Embedding & Rerank​
  1. 部署Embedding & Rerank并启动Docker镜像。​
  • ​
    使用预置模型的镜像部署
    使用普通镜像部署
    ​
    1. 购买ecs.g4il规格实例。本节采用的实例配置如下:​
    • 实例规格:ecs.g4i.16xlarge​
    • 镜像:Ubuntu 24.04 with LLM Knowledge Base 64 bit​
    • 网络:分配弹性公网IP​
    1. 执行如下命令,开启AMX加速Embedding & Rerank操作。​
    • ​
      sed -i 's|ghcr.io/huggingface/text-embeddings-inference:cpu-1.6|iaas-cpu-inference-benchmark-cn-beijing.cr.volces.com/rag/tei-cpu:bytedance_fix|g' /root/opea_chatqna/compose.yaml​
      ​
    1. 执行如下命令,启动知识库Docker镜像。​
    • ​
      cd opea_chatqna​
      docker compose up -d​
      ​
    1. 待所有的服务均为可用状态后(提示绿色),表示您的 AI 知识库启动成功。​
    ​
  1. 运行Docker中预置的Embedding & Rerank操作Demo。​
  1. 点此下载测试PDF文件并上传至目标实例。​
  1. 在nke-10k-2023.pdf文件所在目录中执行如下命令,将nke-10k-2023.pdf文件上传到dataprep服务中。​
  • ​
    curl -X POST -H "Content-Type: multipart/form-data" -F "files=@./nke-10k-2023.pdf" http://localhost:6007/v1/dataprep/ingest​
    ​
  • 回显如下所示时,表示操作成功。​
  • ​
    {"status":200,"message":"Data preparation succeeded"}​
    ​
  1. 创建benchmark测试文件。​
  1. 执行如下命令,创建benchmark.yaml文件。​
  • ​
    vim benchmark.yaml​
    ​
  1. 按i键进入编辑模式,并复制如下内容至文件。​
  • 脚本内容​
    ​
  1. 按esc键退出编辑模式,输入:wq按回车键,保存并退出文件。​
  1. 执行如下命令,运行性能测试Demo。​
  • ​
    华北2(北京)
    华东2(上海)
    华南1(广州)
    亚太东南(柔佛)
    ​
    ​
    TOS_BUCKET="https://iaas-debug-beijing.tos-cn-beijing.ivolces.com"​
    if [ ! -d 'GenAIEval' ]; then​
    wget $TOS_BUCKET/tool/cpu-serving/GenAIEval.tar​
    tar -xf GenAIEval.tar​
    rm -f GenAIEval.tar​
    fi​
    cp benchmark.yaml GenAIEval/evals/benchmark​
    cd GenAIEval/evals/benchmark​
    python3 benchmark.py​
    ​
    ​
    ​
  1. 执行如下命令,获取性能数据。​
  • ​
    cat /root/virt-benchmark-dev/ubuntu24.04/bin/rag/ragbench_out/chatqnafixed_20250730_173320/1_metrics.json ​
    ​
说明​
请将/root/virt-benchmark-dev/ubuntu24.04/bin/rag/ragbench_out/chatqnafixed_20250730_173320/1_metrics.json替换为实际测试数据所在文件。​
  • 回显示例:​
  • ​
    {​
    "chatqna-xeon-backend-server_average_latency_per_request": 13.670678080748985,​
    "tei-embedding-server_average_latency_per_request": 0.029958314499999972,​
    "vllm-service_average_latency_per_request": 13.525004148483276,​
    "tei-reranking-server_average_latency_per_request": 0.10077269599999998,​
    "retriever-redis-server_average_latency_per_request": 0.002257339499919908​
    }​
    ​
性能数据​
本节展示了使用ecs.g4i.16xlarge规格实例,在开启AMX加速前后,Embedding & Rerank耗时信息如下所示。​
​
请求数​
Embedding耗时(ms)​
​
Rerank耗时(ms)​
​
​
未加速​
AMX加速​
未加速​
AMX加速​
1​
314.25​
41.19​
345.42​
106.23​
2​
312.39​
31.87​
335.5​
111.36​
4​
305.6​
32.94​
366.95​
108.77​
8​
377.13​
52.33​
383.89​
159.54​
16​
721.81​
65.13​
586.86​
233.23​
32​
1909.94​
104.76​
882.99​
431.02​
64​
4600.33​
169.6​
915.75​
884.31​
128​
9475.15​
228.16​
912.41​
1913.32​
​
向量数据库​
安装优化后的向量数据库​
说明​
本节为您提供了算子级别加速的Milvus的向量数据库,暂不支持数据库级别加速。​
  1. 购买ecs.g4i规格实例。本节采用的实例配置如下:​
  • 实例规格:ecs.g4i.4xlarge​
  • 镜像:Ubuntu 24.04 64 bit​
  • 网络:分配弹性公网IP​
  1. 执行如下命令,安装依赖。​
  • ​
    apt update​
    apt install docker.io​
    ​
  1. 执行如下命令,拉取基于ecs.g4i规格实例优化后的向量数据库镜像。​
  • ​
    docker pull cr-for-diting-nodelete-cn-beijing.cr.volces.com/practice-images/vectordb:amx​
    ​
  1. 执行如下命令,启动Docker镜像。​
  • ​
    docker run -itd --name vectordb --privileged --network host cr-for-diting-nodelete-cn-beijing.cr.volces.com/practice-images/vectordb:amx bash​
    ​
  1. 执行如下命令,进入容器。​
  • ​
    docker exec -it vectordb bash​
    ​
  1. 通过ann-benchmark测试算子性能。​
  1. 执行如下命令,下载测试资源。​
  • ​
    cd ~/ann-benchmarks/data​
    wget http://ann-benchmarks.com/nytimes-256-angular.hdf5​
    ​
  1. 执行如下命令,运行测试。​
  • ​
    conda activate hnswlib && cd /root && bash bench-hnswlib.sh​
    conda activate faiss && cd /root && bash bench-faiss.sh​
    ​
性能数据​
本节展示了使用ecs.g4i.4xlarge规格实例,在开启AMX加速前后,向量数据库每秒可以处理的查询请求数信息。​
​
指标​
未加速​
AMX加速​
hnswlib​
使用Hierarchical Navigable Small World(HNSW)算法构建索引。​
​
​
qps-recall-95​
95%召回率时,每秒可以处理的查询请求数。​
12921.64 ​
18725.88 ​
qps-recall-99​
99%召回率时,每秒可以处理的查询请求数。​
3177.78 ​
4974.79 ​
faiss-indexflatip​
使用Facebook AI Similarity Search (FAISS) 算法构建索引。​
​
​
qps​
100%召回率时,每秒可以处理的查询请求数。​
6296.99 ​
12285.91 ​
​
测试结论​
使用搭载第六代英特尔® 至强® 可扩展处理器(Granite Rapids)的通用型g4i规格实例部署RAG架构,在开启高级矩阵扩展加速引擎(AMX指令集)后,RAG架构各核心组件均有可观的性能提升。因此,在追求性价比、丰富实例资源场景下,您可以使用搭载第六代英特尔® 至强® 可扩展处理器(Granite Rapids)的实例规格(例如通用型g4i)代替GPU实例,获取最优性价比的高效RAG推理方案。​
最近更新时间:2025.12.08 16:00:12
这个页面对您有帮助吗?
有用
有用
无用
无用