部署Ray服务
Ray是一个用于构建和运行可扩展的Python应用程序(特别是AI和机器学习工作负载)的开源分布式计算框架,其定位是一个通用的分布式编程框架,提供了统一的分布式底盘,能帮助用户将自己的程序快速分布式化。该项目基于Ray框架对Embedding/Reranker请求进行分流处理并对接RAG服务,显著提升Embedding/Reranker速度。
环境准备
- Python 3.10及以上。
- Ray 2.31.0及以上。
- 使用pip3安装相关python包(pip3 install -r requirements.txt)。
- numactl。
- 下载所需Embedding/Reranker模型的gguf文件。
- 如需使用二进制cmd启动Embedding模型,则需要准备llama.cpp二进制。
- 如需使用Docker启动Embedding模型,则需要准备llama.cpp镜像。
开始部署
- 克隆项目到本地。
git clone --branch v2.0.0 https://gitee.com/kunpeng_compute/KunpengRAG.git cd KunpengRAG/deployment/ray-compute/
- 修改llamacpp_config.yaml文件,进行用户自定义配置。用户选择Embedding/Reranker模型启动方式:Docker、cmd或external,根据以下步骤进行自定义配置。
Docker:
- 下载镜像。
- 鲲鹏920处理器:swr.cn-north-4.myhuaweicloud.com/kunpeng-ai/llama.cpp:920-kunpeng
- 鲲鹏920新型号处理器:swr.cn-north-4.myhuaweicloud.com/kunpeng-ai/llama.cpp:920B-kunpeng
- 在llamacpp_config.yaml中配置“start_mode”为“docker”。
- 在llamacpp_config.yaml中model_configs配置“model_type”为“embedding”或者“reranker”。
- 在llamacpp_config.yaml中配置“docker_image”为“swr.cn-north-4.myhuaweicloud.com/kunpeng-ai/llama.cpp:full-kunpeng”。
- 在llamacpp_config.yaml中配置“docker_configs”模块下Embedding/Reranker模型所需参数,model_configs可扩展,用户可以根据需求自行配置启动Embedding模型数量。
下面的例子中,添加一组model_configs即可启动一个Embedding/Reranker模型。
docker_configs: - model_configs: server_ip: yourIP # 服务绑定的IP地址 container_port: 11439 # 容器内部端口 host_port: 11439 # 主机映射端口 cpuset: "0-31" # 绑定的CPU核心 model_type: "embeddings" # 模型类型 embedding或者reranker threads: 32 ubatch_size: 1024 max_model_input_chunks: 512 # 最大输入chunk数量 - model_configs: server_ip: yourIP # 服务绑定的IP地址 container_port: yourPort # 第二个容器内部端口 host_port: yourPort # 第二个主机映射端口 cpuset: "32-63" # 绑定到另一组CPU核心 model_type: "embeddings" threads: 32 ubatch_size: 1024 max_model_input_chunks: 512 # 最大输入chunk数量cmd:
- 准备llama.cpp二进制文件。
- 在llamacpp_config.yaml中配置“start_mode”为“cmd”。
- 在llamacpp_config.yaml中model_configs配置“model_type”为“embedding”或者“reranker”。
- 添加服务器环境变量#export LD_LIBRARY_PATH = llama-server路径。
- 在llamacpp_config.yaml中配置“llamacpp_path”为实际的llama-server路径。
- 在llamacpp_config.yaml中配置llamacpp_configs下Embedding/Reranker模型所需参数,model_configs可扩展,用户可以根据需求自行配置启动Embedding/Reranker模型数量。
- 下面的例子中,添加一组model_configs即可启动一个Embedding/Reranker模型。
llamacpp_configs: - model_configs: server_ip: yourIP # 服务绑定的IP地址 port: yourPort # 服务端口 cpuset: "0-31" # 绑定的CPU核心(空字符串表示不绑定) model_type: "embeddings" # 模型类型 embedding或者reranker threads: 32 # 线程数 ubatch_size: 1024 # 批处理大小 max_model_input_chunks: 512 # 最大输入chunk数量 - model_configs: server_ip: yourIP # 服务绑定的IP地址 port: yourPort # 第二个实例端口 cpuset: "32-63" # 绑定到另一组CPU核心 model_type: "embeddings" threads: 32 ubatch_size: 1024external:
- 通过Docker自行启动Embedding/Reranker模型,参考以下命令启动:
鲲鹏920处理器:swr.cn-north-4.myhuaweicloud.com/kunpeng-ai/llama.cpp:920-kunpeng
鲲鹏920新型号处理器:swr.cn-north-4.myhuaweicloud.com/kunpeng-ai/llama.cpp:920B-kunpeng
docker run \ --cpuset-cpus="0-31" \ # 容器绑核,绑定一个numa上 -v /root/models:/models \ # 挂载模型目录到容器 -p 11133:11133 # 映射容器的服务端口到主机端口 -c 512 # 模型可接收最大chunk数量 swr.cn-north-4.myhuaweicloud.com/kunpeng-ai/llama.cpp:full-kunpeng \ # 使用已构建好的llama.cpp镜像 --server \ # 启动api服务 -m /models/your_model.gguf \ # 指定模型路径 --embedding \ --port 11133 \ --threads 32 \ --host 0.0.0.0 \ --ubatch-size 1024 - 添加服务器环境变量#export LD_LIBRARY_PATH = llama-server路径(使用llama.cpp二进制启动需要)。
- 通过llama.cpp二进制启动Embedding/Reranker模型,参考以下启动命令:
numactl -C 32-63 \ # cpu绑核 /yourPath/llama.cpp/build/bin/llama-server \ # llama.cpp二进制文件 --model /your Path to your model.gguf # embedding/reranker模型文件 --port 11438 \ --embedding \ --threads 32 \ --host 90.90.82.204 \ --ubatch-size 1024 \
- 在llamacpp_config.yaml中配置“start_mode”为“external”。
- 在llamacpp_config.yaml中配置external_configs下Embedding/Reranker模型地址,server_url可扩展,用户可以根据需求自行配置Embedding模型数量。
- 下载镜像。
- 执行Ray脚本。
python3 deplicas_ray.py
执行完成后,脚本自动暴露服务,您可以通过以下地址访问:
http://<服务器IP>:<rag server服务端口(默认为8000)>
例如:http://192.168.1.100:8000
- 配置Ray地址到RAG服务。
打开RAG服务前端,配置ray服务http://<服务器IP>:<rag server服务端口(默认为8000)>/v1到embedding模型配置中。(/v1为openai embedding模型访问范式)。配置完毕后即可正常使用RAG服务。
父主题: 部署AI服务