---
title: 部署Ray服务
description: "Ray是一个用于构建和运行可扩展的Python应用程序（特别是AI和机器学习工作负载）的开源分布式计算框架，其定位是一个通用的分布式编程框架，提供了统一的分布式底盘，能帮助用户将自己的程序快速分布式化。该项目基于Ray框架对Embedding/Reranker请求进行分流处理并对接RAG服务，显著提升Embedding/Reranker速度。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengrag/bestpractice/kunpengrag_21_0059.html
sourcePath: /source/zh/kunpengrag/bestpractice/kunpengrag_21_0059.html
indexId: 8a3f4d0c2da70507696058aee8508a2ebb272db267ace2ba35f228aca2134b7b58
---
# 部署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文件(https://hf-mirror.com/)
。
- 如需使用二进制cmd启动Embedding模型，则需要准备llama.cpp二进制。
- 如需使用Docker启动Embedding模型，则需要准备llama.cpp镜像。


#### 开始部署

1. 克隆项目到本地。

```
git clone --branch v2.0.0 https://gitee.com/kunpeng_compute/KunpengRAG.git
cd KunpengRAG/deployment/ray-compute/
```


2. 修改llamacpp_config.yaml文件，进行用户自定义配置。用户选择Embedding/Reranker模型启动方式：Docker、cmd或external，根据以下步骤进行自定义配置。
Docker：

  a. 下载镜像。

    - 鲲鹏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
  b. 在llamacpp_config.yaml中配置“start_mode”为“docker”。
  c. 在llamacpp_config.yaml中model_configs配置“model_type”为“embedding”或者“reranker”。
  d. 在llamacpp_config.yaml中配置“docker_image”为“swr.cn-north-4.myhuaweicloud.com/kunpeng-ai/llama.cpp:full-kunpeng”。
  e. 在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：

  a. 准备llama.cpp二进制文件。
  b. 在llamacpp_config.yaml中配置“start_mode”为“cmd”。
  c. 在llamacpp_config.yaml中model_configs配置“model_type”为“embedding”或者“reranker”。
  d. 添加服务器环境变量#export LD_LIBRARY_PATH = llama-server路径。
  e. 在llamacpp_config.yaml中配置“llamacpp_path”为实际的llama-server路径。
  f. 在llamacpp_config.yaml中配置llamacpp_configs下Embedding/Reranker模型所需参数，model_configs可扩展，用户可以根据需求自行配置启动Embedding/Reranker模型数量。
  g. 下面的例子中，添加一组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: 1024
```

external：

  a. 通过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
```


  b. 添加服务器环境变量#export LD_LIBRARY_PATH = llama-server路径（使用llama.cpp二进制启动需要）。
  c. 通过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  \
```


  d. 在llamacpp_config.yaml中配置“start_mode”为“external”。
  e. 在llamacpp_config.yaml中配置external_configs下Embedding/Reranker模型地址，server_url可扩展，用户可以根据需求自行配置Embedding模型数量。
3. 执行Ray脚本。

```
python3 deplicas_ray.py
```


  执行完成后，脚本自动暴露服务，您可以通过以下地址访问：

```
http://<服务器IP>:<rag server服务端口(默认为8000)>
```


  例如：http://192.168.1.100:8000

4. 配置Ray地址到RAG服务。
  打开RAG服务前端，配置ray服务http://<服务器IP>:<rag server服务端口(默认为8000)>/v1到embedding模型配置中。（/v1为openai embedding模型访问范式）。配置完毕后即可正常使用RAG服务。
