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

GPU云服务器

复制全文
下载 pdf
DeepSeek系列模型
GPU-基于xLLM部署DeepSeek-R1/V3模型
复制全文
下载 pdf
GPU-基于xLLM部署DeepSeek-R1/V3模型
本文主要介绍如何在2台ecs.hpcpni3ln.45xlarge实例中,通过xLLM推理引擎PD分离部署DeepSeek-R1/V3模型,提升模型推理服务的吞吐效率。​
背景信息​
xLLM​
xLLM是火山引擎全自研的高效推理框架,支持PD分离(Prefill、Decode)、弹性扩缩等特性,具备低时延、高吞吐与出色稳定性,其性能显著领先开源框架。​
DeepSeek-R1​
DeepSeek-R1是基于DeepSeek-V3-Base训练生成的推理模型。相较于DeepSeek-V3模型,DeepSeek-R1更擅长数学、代码和自然语言推理等复杂任务,其凭借模型开源、算法创新、极致性价比吸引全球注意。了解更多。​
DeepSeek-V3-0324​
DeepSeek-V3-0324是DeepSeek发布的V3小版本,其参数量达到685 B。相较于DeepSeek-V3模型,DeepSeek-V3-0324在推理能力、代码能力、语言能力上都有明显提升。了解更多。​
软件要求​
NVIDIA驱动:用来驱动NVIDIA GPU的程序。本文以535.161.08为例。​
操作步骤​
步骤一:准备环境​
  1. 创建GPU计算型实例。​
  • ​
    配置项配置项​
    推荐配置推荐配置​
    基础配置​
    ​
    计算规格​
    ecs.hpcpni3ln.45xlarge​
    说明​
    ecs.hpcpni3ln.45xlarge规格实例正在邀测中,如需试用,请提交工单或联系客户经理申请。​
    镜像​
    veLinux 1.0 with GPU Driver 535.161.08 and doca 64 bit​
    说明​
    由于xLLM框架基于veLinux 1.0镜像进行适配,建议您选用veLinux 1.0发行版本镜像,获得最佳性能提升。​
    实例数量​
    2​
    说明​
    本文创建的两台GPU实例,分别作为“Prefill节点”、“Decode节点”。​
    存储​
    • 规格:吞吐型SSD TL0云盘​
    • 容量:不低于1 TiB​
    说明​
    本文使用的DeepSeek-V3-0324模型参数量为685 B,您可以根据实际部署的模型参数量级,调整云盘容量。​
    网络配置​
    ​
    私有网络​
    两台实例需处于同一私有网络。​
    公网IP​
    勾选“分配弹性公网IP”。​
    ​
  1. 安装依赖的软件、工具。​
  1. 分别登录购买的两台GPU实例。了解更多。​
  1. 在两台实例中分别执行如下命令,安装、配置Docker。​
  • ​
    sudo apt install -y ca-certificates curl gnupg lsb-release​
    sudo mkdir -p /etc/apt/keyrings​
    curl -fsSL http://mirrors.ivolces.com/docker/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg​
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] http://mirrors.ivolces.com/docker/linux/debian buster stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null​
    sudo apt update​
    sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin​
    ​
  1. 在两台实例中分别执行如下命令,安装NVIDIA Container Toolkit。​
  • ​
    wget -c https://mirrors.ivolces.com/nvidia_all/debian10/x86_64/libnvidia-container1_1.14.3-1_amd64.deb​
    wget -c https://mirrors.ivolces.com/nvidia_all/debian10/x86_64/libnvidia-container-tools_1.14.3-1_amd64.deb​
    wget -c https://mirrors.ivolces.com/nvidia_all/debian10/x86_64/nvidia-container-toolkit-base_1.14.3-1_amd64.deb​
    wget -c https://mirrors.ivolces.com/nvidia_all/debian10/x86_64/nvidia-container-toolkit_1.14.3-1_amd64.deb​
    ​
    dpkg -i libnvidia-container1_1.14.3-1_amd64.deb​
    dpkg -i libnvidia-container-tools_1.14.3-1_amd64.deb​
    dpkg -i nvidia-container-toolkit-base_1.14.3-1_amd64.deb​
    dpkg -i nvidia-container-toolkit_1.14.3-1_amd64.deb​
    ​
  1. 在两台实例中分别执行如下命令配置Docker,使容器可以使用实例的GPU资源。​
  • ​
    sudo nvidia-ctk runtime configure --runtime=docker​
    sudo systemctl restart docker​
    ​
  1. (可选)初始化本地盘。​
  • 若您选用的实例规格搭配有本地盘,建议您执行如下命令将本地盘挂载到存储模型的目录“/data00”,提升模型加载速度。​
  1. 执行如下命令,创建GPT分区。​
  • ​
    sudo parted /dev/nvme0n1 --script mklabel gpt​
    sudo parted /dev/nvme0n1 --script mkpart primary ext4 0% 100%​
    ​
说明​
请将/dev/nvme0n1替换为实际本地盘名称。​
  1. 执行如下命令,格式化分区文件系统类型为ext4。​
  • ​
    sudo mkfs.ext4 /dev/nvme0n1p1​
    ​
说明​
请将ext4替换为您期望使用的文件系统。​
  1. 执行如下命令,创建并将分区挂载至“/data00”挂载点。​
  • ​
    sudo mkdir -p /data00​
    sudo mount /dev/nvme0n1p1 /data00​
    ​
步骤二:部署、运行模型​
  1. 分别登录购买的两台GPU实例。了解更多。​
  1. 在两台实例中分别执行如下命令,拉取Docker镜像。​
  • ​
    华北2(北京)
    华东2(上海)
    ​
    ​
    docker pull ai-containers-cn-beijing.cr.volces.com/deeplearning/xllm:private_xllm_th24_cu124_xperf_0609​
    ​
    ​
    ​
  1. 在两台实例中分别执行如下命令,通过onion工具下载模型文件。​
  1. 执行如下命令,安装onion工具。​
  • ​
    curl -fsSL https://mirrors.ivolces.com/extra-tools/velinux/GPG-KEY-system | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/volc-extra-tools.gpg​
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/trusted.gpg.d/volc-extra-tools.gpg] http://mirrors.ivolces.com/extra-tools/velinux orion main" > /etc/apt/sources.list.d/volctools.list && apt update && apt install -y onion-ai-data​
    ​
  1. (可选)若您选用的实例规格搭配有本地盘且按上文指引完成初始化,执行如下命令,在本地盘中创建存储模型目录。​
  • ​
    mkdir -p /data00/models​
    cd /data00/models​
    ​
  1. 执行如下命令,下载DeepSeek-V3-0324模型文件。​
  • ​
    下载DeepSeek-R1模型
    下载DeepSeek-V3-0324模型
    ​
    ​
    oniond download model DeepSeek-R1-ENC-xLLM​
    oniond download model DeepSeek-R1-DRAFT-ENC-xLLM​
    ​
    ​
    ​
  1. 在对应节点实例中执行如下命令,下载环境配置文件。​
  • “Prefill节点”实例​
  • ​
    华北2(北京)
    华东2(上海)
    ​
    ​
    cd /root/​
    wget https://iaas-debug-beijing.tos-cn-beijing.ivolces.com/tool/xllm/prefill_enc.env​
    ​
    ​
    ​
  • “Decode节点”实例​
  • ​
    华北2(北京)
    华东2(上海)
    ​
    ​
    cd /root/​
    wget https://iaas-debug-beijing.tos-cn-beijing.ivolces.com/tool/xllm/decode_enc.env​
    ​
    ​
    ​
  1. 请提交工单或联系客户经理申请xLLM License,并将获取的license.lic文件上传至两台实例的/root/目录下。了解更多。​
  1. 在“Prefill节点”实例中,启动Docker容器和模型服务。​
  1. 执行如下命令,启动对应模型的Docker容器。​
  • ​
    DeepSeek-R1模型
    DeepSeek-V3-0324模型
    ​
    • 华北2(北京)​
    • ​
      docker run -it -d \​
      --gpus all \​
      --net=host \​
      --userns=host \​
      --shm-size=128g \​
      --privileged \​
      -v /data00/models/DeepSeek-R1-ENC-xLLM:/data/models/DeepSeek-R1-ENC-xLLM \​
      -v /data00/models/DeepSeek-R1-DRAFT-ENC-xLLM:/data/models/DeepSeek-R1-DRAFT-ENC-xLLM \​
      -v /root/license.lic:/app/xllm/license.lic \​
      -v /root/prefill_enc.env:/app/xllm/prefill_enc.env \​
      -v /var/run/nvidia-topologyd/:/var/run/nvidia-topologyd/ \​
      ai-containers-cn-beijing.cr.volces.com/serving/xllm:private_xllm_th24_cu124_xperf_0609​
      ​
    • 华东2(上海)​
    • ​
      docker run -it -d \​
      --gpus all \​
      --net=host \​
      --userns=host \​
      --shm-size=128g \​
      --privileged \​
      -v /data00/models/DeepSeek-R1-ENC-xLLM:/data/models/DeepSeek-R1-ENC-xLLM \​
      -v /data00/models/DeepSeek-R1-DRAFT-ENC-xLLM:/data/models/DeepSeek-R1-DRAFT-ENC-xLLM \​
      -v /root/license.lic:/app/xllm/license.lic \​
      -v /root/prefill_enc.env:/app/xllm/prefill_enc.env \​
      -v /var/run/nvidia-topologyd/:/var/run/nvidia-topologyd/ \​
      ai-containers-cn-shanghai.cr.volces.com/serving/xllm:private_xllm_th24_cu124_xperf_0609​
      ​
    ​
    ​
  1. 执行如下命令,获取容器ID。​
  • ​
    docker ps​
    ​
  1. 执行如下命令,进入容器。​
  • ​
    docker exec -it <CONTAINER_ID> bash​
    ​
说明​
请将<CONTAINER_ID>替换为实际ID值。​
  1. 执行如下命令,启动对应模型服务。​
  • ​
    DeepSeek-R1模型
    DeepSeek-V3-0324模型
    ​
    ​
    project_dir=/app/xllm​
    cd $project_dir​
    export PYTHONPATH=$project_dir:$PYTHONPATH​
    export LD_LIBRARY_PATH=$project_dir:$LD_LIBRARY_PATH​
    ​
    NUM_GPU=`nvidia-smi -L | wc -l`​
    export XLLM_MODEL_MP_SIZE=$NUM_GPU​
    export XLLM_PARALLEL_LOCAL_WORLD_SIZE=$NUM_GPU​
    export XLLM_PARALLEL_TP_SIZE=$NUM_GPU​
    ​
    LOCAL_ADDR=$(ip -4 addr show eth0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}')​
    export VETURBORPC_LOCAL_ADDR=${LOCAL_ADDR}​
    ​
    export XLLM_MODEL_NAME=deepseek-r1​
    export XLLM_MODEL_VERSION=250120​
    ​
    DEEPSEEK_MODEL_DIR=/data/models/DeepSeek-R1-ENC-xLLM​
    DEEPSEEK_DRAFT_MODEL_DIR=/data/models/DeepSeek-R1-DRAFT-ENC-xLLM​
    export XPERF_TUNER_CONFIG_LOAD_PATH=$DEEPSEEK_MODEL_DIR/saved_model/gemm_config​
    export XLLM_DRAFT_MODEL_MODEL_DIR=$DEEPSEEK_DRAFT_MODEL_DIR​
    ​
    XLLM_ENV_PATH=/app/xllm/prefill_enc.env​
    ​
    ./private_xllm.bin \​
    --model-dir $DEEPSEEK_MODEL_DIR \​
    --env-path $XLLM_ENV_PATH \​
    --driver-type splitwise_prefill \​
    --num-server-procs 4 \​
    --port 62000​
    ​
    ​
    ​
  1. 在“Decode节点”实例中,启动其Docker容器和模型服务。​
  1. 执行如下命令,启动对应模型的Docker容器。​
  • ​
    DeepSeek-R1模型
    DeepSeek-V3-0324模型
    ​
    • 华北2(北京)​
    • ​
      docker run -it -d \​
      --gpus all \​
      --net=host \​
      --userns=host \​
      --shm-size=128g \​
      --privileged \​
      -v /data00/models/DeepSeek-R1-ENC-xLLM:/data/models/DeepSeek-R1-ENC-xLLM \​
      -v /data00/models/DeepSeek-R1-DRAFT-ENC-xLLM:/data/models/DeepSeek-R1-DRAFT-ENC-xLLM \​
      -v /root/license.lic:/app/xllm/license.lic \​
      -v /root/decode_enc.env:/app/xllm/decode_enc.env \​
      -v /var/run/nvidia-topologyd/:/var/run/nvidia-topologyd/ \​
      ai-containers-cn-beijing.cr.volces.com/serving/xllm:private_xllm_th24_cu124_xperf_0609​
      ​
    • 华东2(上海)​
    • ​
      docker run -it -d \​
      --gpus all \​
      --net=host \​
      --userns=host \​
      --shm-size=128g \​
      --privileged \​
      -v /data00/models/DeepSeek-R1-ENC-xLLM:/data/models/DeepSeek-R1-ENC-xLLM \​
      -v /data00/models/DeepSeek-R1-DRAFT-ENC-xLLM:/data/models/DeepSeek-R1-DRAFT-ENC-xLLM \​
      -v /root/license.lic:/app/xllm/license.lic \​
      -v /root/decode_enc.env:/app/xllm/decode_enc.env \​
      -v /var/run/nvidia-topologyd/:/var/run/nvidia-topologyd/ \​
      ai-containers-cn-shanghai.cr.volces.com/serving/xllm:private_xllm_th24_cu124_xperf_0609​
      ​
    ​
    ​
  1. 执行如下命令,获取容器ID。​
  • ​
    docker ps​
    ​
  1. 执行如下命令,进入容器。​
  • ​
    docker exec -it <CONTAINER_ID> bash​
    ​
说明​
请将<CONTAINER_ID>替换为实际ID值。​
  1. 待“Prefill节点”实例中容器和模型服务启动成功后,执行如下命令,启动模型服务。​
  • ​
    DeepSeek-R1模型
    DeepSeek-V3-0324模型
    ​
    ​
    project_dir=/app/xllm​
    cd $project_dir​
    export PYTHONPATH=$project_dir:$PYTHONPATH​
    export LD_LIBRARY_PATH=$project_dir:$LD_LIBRARY_PATH​
    ​
    NUM_GPU=`nvidia-smi -L | wc -l`​
    export XLLM_MODEL_MP_SIZE=$NUM_GPU​
    export XLLM_PARALLEL_LOCAL_WORLD_SIZE=$NUM_GPU​
    ​
    export XLLM_MODEL_NAME=deepseek-r1​
    export XLLM_MODEL_VERSION=250120​
    ​
    DEEPSEEK_MODEL_DIR=/data/models/DeepSeek-R1-ENC-xLLM​
    DEEPSEEK_DRAFT_MODEL_DIR=/data/models/DeepSeek-R1-DRAFT-ENC-xLLM​
    export XPERF_TUNER_CONFIG_LOAD_PATH=$DEEPSEEK_MODEL_DIR/saved_model/gemm_config​
    export XLLM_DRAFT_MODEL_MODEL_DIR=$DEEPSEEK_DRAFT_MODEL_DIR​
    ​
    LOCAL_ADDR=$(ip -4 addr show eth0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}')​
    export SPLITWISE_PREFILL_ROUTING_CONFIG__ROUTING_STRATEGY="p2c"​
    export SPLITWISE_PREFILL_ROUTING_CONFIG__PICK_N=3​
    export SPLITWISE_DRIVER_PORT=62001​
    export SPLITWISE_KV_CACHE_RECEIVER_PORT=62002​
    export SPLITWISE_PREFILL_LENGTH_THRESHOLD=0​
    export SPLITWISE_KV_TRANSFER_BACKEND=veturborpc​
    export SPLITWISE_PREFILL_ROUTING_CONFIG__ROUTING_TABLE_UPDATER_CONFIG__TYPE="env_based"​
    export SPLITWISE_PREFILL_ROUTING_CONFIG__ROUTING_TABLE_UPDATER_CONFIG__ADDRS_VAR_NAME="PREFILL_ADDRS"​
    prefill_ip=<prefill_node_ip>​
    export PREFILL_ADDRS="${prefill_ip}:62001"​
    export SPLITWISE_DECODE_ADDR=${LOCAL_ADDR}​
    export SPLITWISE_KV_CACHE_RECEIVER_ADDR=${LOCAL_ADDR}​
    export VETURBORPC_LOCAL_ADDR=${LOCAL_ADDR}​
    ​
    ​
    XLLM_ENV_PATH=/app/xllm/decode_enc.env​
    ​
    ./private_xllm.bin \​
    --model-dir $DEEPSEEK_MODEL_DIR \​
    --env-path $XLLM_ENV_PATH \​
    --driver-type splitwise_decode \​
    --num-server-procs 4 \​
    --port 62000​
    ​
    ​
    ​
说明​
请将<prefill_node_ip>替换为“Prefill节点”实例私网IP地址。​
  1. 在容器中,启动HTTP Proxy服务。​
  1. 执行如下命令,进入/app目录。​
  • ​
    cd /app/​
    ​
  1. 执行如下命令,下载HTTP Proxy。​
  • ​
    华北2(北京)
    华东2(上海)
    ​
    ​
    wget https://iaas-debug-beijing.tos-cn-beijing.ivolces.com/tool/xllm/ark_http_0827.zip​
    ​
    ​
    ​
  1. 执行如下命令,解压HTTP Proxy。​
  • ​
    unzip ark_http_0827.zip​
    ​
  1. 执行如下命令,启动HTTP Proxy。​
  • ​
    cd ark_http_proxy​
    export http_forward_grpc_host=0.0.0.0​
    export http_forward_grpc_port=62000​
    uvicorn openai_api_server:app \​
    --host 0.0.0.0 \​
    --port 80 \​
    --workers 8​
    ​
步骤三:调用模型​
  1. 执行如下命令调用模型,确保部署的模型可以正常进行推理。​
  • ​
    decode_ip=192.xxx.x.2​
    curl http://${decode_ip}/v1/chat/completions -H "Content-Type: application/json" -d '{​
    "model": "xllm",​
    "messages": [​
    {​
    "role": "user",​
    "content": "Please prove the Riemann Hypothesis."​
    }​
    ],​
    "max_tokens": 100,​
    "temperature": 0.7​
    }'​
    ​
  • 参数说明:​
  • 本文仅说明验证使用到的参数信息,更多参数详情可查看DeepSeek API文档。​
  • ​
    参数名​
    说明​
    取值样例​
    decode_ip​
    请填写“Decode节点”实例私网IP地址。​
    192.xxx.x.2​
    model​
    使用的模型。​
    xllm​
    messages​
    对话的消息列表。​
    • role:该消息的发起角色。​
    • content:消息的内容。​
    -​
    max_tokens​
    指定一次请求中模型生成Completion的最大Token数。取值:​
    • 介于1到8192间的整数。​
    • 默认值为4096。​
    100​
    temperature​
    采样温度,值越高(例如1)会使输出更随机,而值越低(例如0.2)会使其更加集中和确定。取值:介于0和2之间。​
    0.7​
    ​
​
最近更新时间:2025.08.28 15:56:40
这个页面对您有帮助吗?
有用
有用
无用
无用