鲲鹏社区首页
中文
注册
开发者
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

部署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镜像。

开始部署

  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:

    1. 下载镜像。
      • 鲲鹏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
    2. 在llamacpp_config.yaml中配置“start_mode”“docker”
    3. 在llamacpp_config.yaml中model_configs配置“model_type”“embedding”或者“reranker”
    4. 在llamacpp_config.yaml中配置“docker_image”“swr.cn-north-4.myhuaweicloud.com/kunpeng-ai/llama.cpp:full-kunpeng”
    5. 在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:

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

    1. 通过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
    2. 添加服务器环境变量#export LD_LIBRARY_PATH = llama-server路径(使用llama.cpp二进制启动需要)。
    3. 通过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  \
    4. 在llamacpp_config.yaml中配置“start_mode”“external”
    5. 在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服务。