使用ACS快速部署运行在PPU上的DeepSeek V3/R1推理服务
本文介绍如何使用ACS快速搭建运行在PPU上的DeepSeek V3/R1推理服务。
准备工作
已完成首次使用容器计算服务,需要开通容器计算服务ACS,并为其授权相应云资源的访问权限。
已开通OSS服务。本文使用OSS存储卷来持久化存储模型文件。
创建ACS集群
本步骤介绍如何通过配置主要参数快速创建一个ACS集群。
关于创建ACS集群的详细配置参数说明,请参见创建ACS集群。
登录容器计算服务控制台,在左侧导航栏选择集群列表。
在集群列表页面,单击页面左上角的创建集群。
在创建集群页面,进行如下配置。其余配置项使用默认设置即可。
配置项
说明
示例值
集群名称
填写集群的名称。
ACS-PPU-Inference地域
选择集群所在的地域。
华北6(乌兰察布)单击确认配置,在满足所有依赖检查后,单击创建集群。
集群的创建时间需要约5-10分钟。
创建存储卷
大语言模型因其庞大的参数量,需要占用大量的磁盘空间来存储模型文件,建议您创建NAS存储卷或OSS存储卷来持久化存储模型文件。具体信息,请参见使用ACS快速构建大语言模型数据存储卷。
下载DeepSeek-V3-bf16模型文件,地址:https://hf-mirror.com/opensourcerelease/DeepSeek-V3-bf16/tree/main
下载DeepSeek-R1-bf16模型文件,地址: https://hf-mirror.com/opensourcerelease/DeepSeek-R1-bf16/tree/main
下载DeepSeek-V3 FP8模型文件, 地址:https://hf-mirror.com/deepseek-ai/DeepSeek-V3/tree/main
下载DeepSeek-R1 FP8模型文件, 地址: https://hf-mirror.com/deepseek-ai/DeepSeek-R1/tree/main
PPU从inference-xpu-pytorch 25.05版本vLLM推理镜像(vLLM0.8.5)开始,支持原生DeepSeek V3/R1 FP8模型和INT8 W8A8量化模型。
PPU从inference-xpu-pytorch 25.08版本开始 (vLLM0.9.1),支持DeepSeek-V3.1模型,vLLM Server启动命令与以下启动DeepSeek-R1一致。
部署推理服务
使用kubectl命令行工具或直接在阿里云ACS控制台操作,使用PPU GPU算力创建一个Deployment来部署大模型推理任务。建议您使用VPC方式加速拉取AI容器镜像,减少镜像拉取的时间。
在ACS控制台集群列表页面,单击集群名称ACS-PPU-Inference。在左侧导航栏,选择,点击使用YAML创建资源。
以OSS存储卷为例,分别部署DeepSeek-R1-bf16模型、原生DeepSeek-R1 FP8模型、DeepSeek-R1 INT8量化模型服务。填入如下YAML后,点击创建。
说明只有使用inference-xpu-pytorch 25.05版本vLLM推理镜像(vLLM0.8.5)启动vllm server服务需要增加
--no-enable-prefix-caching参数,其他参数请根据实际业务情况进行调整。建议您使用VPC方式加速拉取AI容器镜像,减少镜像拉取的时间。
DeepSeek-R1-bf16模型
apiVersion: apps/v1 kind: Deployment metadata: labels: app: llm-test name: llm-test namespace: default spec: progressDeadlineSeconds: 6000 replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: app: llm-test template: metadata: labels: alibabacloud.com/compute-class: gpu alibabacloud.com/gpu-model-series: PPU810E alibabacloud.com/compute-qos: default app: llm-test spec: imagePullSecrets: - name: acs-image-secret #需要和上述步骤一创建Secret的name一致 containers: - command: - sh - -c - vllm serve /mnt/llms_data/DeepSeek-R1-bf16/ --tensor-parallel-size 16 --gpu-memory-utilization 0.98 --max-model-len 5500 --trust-remote-code --no-enable-prefix-caching # /mnt/llms_data/DeepSeek-R1-bf16/ #为模型在pod中的路径 image: egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/inference-xpu-pytorch:25.05-v1.5.1-vllm0.8.5-torch2.6-cu126-20250604 imagePullPolicy: IfNotPresent name: llm-test resources: limits: cpu: 176 memory: 1800G alibabacloud.com/ppu: 16 ephemeral-storage: 200Gi requests: cpu: 176 memory: 1800G alibabacloud.com/ppu: 16 ephemeral-storage: 200Gi terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: - mountPath: /mnt #OSS挂载路径 name: data - mountPath: /dev/shm name: cache-volume - mountPath: /ppu-data name: ephemeral dnsPolicy: ClusterFirst restartPolicy: Always schedulerName: default-scheduler securityContext: {} terminationGracePeriodSeconds: 30 volumes: - name: data persistentVolumeClaim: claimName: deepseek-oss #deepseek-oss为通过OSS创建的存储声明 - name: cache-volume emptyDir: medium: Memory sizeLimit: 500G - name: ephemeral emptyDir: sizeLimit: 200G --- apiVersion: v1 kind: Service metadata: annotations: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "internet" service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version: ipv4 labels: app: llm-test name: svc-llm namespace: default spec: externalTrafficPolicy: Local ports: - name: serving port: 8000 protocol: TCP targetPort: 8000 selector: app: llm-test type: LoadBalancer原生DeepSeek-R1 FP8模型
apiVersion: apps/v1 kind: Deployment metadata: labels: app: llm-test name: llm-test namespace: default spec: progressDeadlineSeconds: 6000 replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: app: llm-test template: metadata: labels: alibabacloud.com/compute-class: gpu alibabacloud.com/gpu-model-series: PPU810E alibabacloud.com/compute-qos: default app: llm-test spec: imagePullSecrets: - name: acs-image-secret #需要和上述步骤一创建Secret的name一致 containers: - command: - sh - -c - vllm serve /mnt/llms_data/DeepSeek-R1/ --tensor-parallel-size 16 --gpu-memory-utilization 0.98 --trust-remote-code --quantization moe_wna16 --no-enable-prefix-caching # /mnt/llms_data/DeepSeek-R1/ #为模型在pod中的路径 image: egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/inference-xpu-pytorch:25.05-v1.5.1-vllm0.8.5-torch2.6-cu126-20250604 imagePullPolicy: IfNotPresent name: llm-test resources: limits: cpu: 176 memory: 1800G alibabacloud.com/ppu: 16 ephemeral-storage: 200Gi requests: cpu: 176 memory: 1800G alibabacloud.com/ppu: 16 ephemeral-storage: 200Gi terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: - mountPath: /mnt #OSS挂载路径 name: data - mountPath: /dev/shm name: cache-volume - mountPath: /ppu-data name: ephemeral dnsPolicy: ClusterFirst restartPolicy: Always schedulerName: default-scheduler securityContext: {} terminationGracePeriodSeconds: 30 volumes: - name: data persistentVolumeClaim: claimName: deepseek-oss #deepseek-oss为通过OSS创建的存储声明 - name: cache-volume emptyDir: medium: Memory sizeLimit: 500G - name: ephemeral emptyDir: sizeLimit: 200G --- apiVersion: v1 kind: Service metadata: annotations: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "internet" service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version: ipv4 labels: app: llm-test name: svc-llm namespace: default spec: externalTrafficPolicy: Local ports: - name: serving port: 8000 protocol: TCP targetPort: 8000 selector: app: llm-test type: LoadBalancer重要如需使用inference-xpu-pytorch 25.06版本vLLM推理镜像(vLLM0.8.5)运行vllm server服务,需要修改DeepSeek-R1 FP8模型
config.json文件。在
config.json文件找到quantization_config相关的内容:"quantization_config": { "activation_scheme": "dynamic", "fmt": "e4m3", "quant_method": "fp8", "weight_block_size": [ 128, 128 ] },将
quantization_config替换为以下内容:"quantization_config": { "bits": 8, "group_size": 128, "desc_act": false, "quant_method": "gptq-fp8", "sym": true },如需使用inference-xpu-pytorch 25.08版本运行vllm server服务,则不需要修改DeepSeek-R1 FP8模型
config.json文件,命令无需添加--quantization moe_wna16参数。
DeepSeek-R1 INT8量化模型
说明PPU从inference-xpu-pytorch 25.05版本vLLM推理镜像(vLLM0.8.5)开始,支持DeepSeek V3/R1模型AWQ(w4a16)、GPTQ(w4a16、w8a16)、per-token/per-channel a8w8(int8)量化方案。 在vLLM0.8.5上运行通过AWQ和GPTQ量化的模型需要添加
--quantization moe_wna16参数,W8A8-Channel-INT8量化模型的运行步骤与非量化模型相同。apiVersion: apps/v1 kind: Deployment metadata: labels: app: llm-test name: llm-test namespace: default spec: progressDeadlineSeconds: 6000 replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: app: llm-test template: metadata: labels: alibabacloud.com/compute-class: gpu alibabacloud.com/gpu-model-series: PPU810E alibabacloud.com/compute-qos: default app: llm-test spec: imagePullSecrets: - name: acs-image-secret #需要和上述步骤一创建Secret的name一致 containers: - command: - sh - -c - vllm serve /mnt/llms_data/DeepSeek-R1-GPTQ-INT8/ --tensor-parallel-size 16 --gpu-memory-utilization 0.98 --trust-remote-code --no-enable-prefix-caching --quantization moe_wna16 # /mnt/llms_data/DeepSeek-R1-GPTQ-INT8/ #为模型在pod中的路径 image: egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/inference-xpu-pytorch:25.05-v1.5.1-vllm0.8.5-torch2.6-cu126-20250604 imagePullPolicy: IfNotPresent name: llm-test resources: limits: cpu: 176 memory: 1800G alibabacloud.com/ppu: 16 ephemeral-storage: 200Gi requests: cpu: 176 memory: 1800G alibabacloud.com/ppu: 16 ephemeral-storage: 200Gi terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: - mountPath: /mnt #OSS挂载路径 name: data - mountPath: /dev/shm name: cache-volume - mountPath: /ppu-data name: ephemeral dnsPolicy: ClusterFirst restartPolicy: Always schedulerName: default-scheduler securityContext: {} terminationGracePeriodSeconds: 30 volumes: - name: data persistentVolumeClaim: claimName: deepseek-oss #deepseek-oss为通过OSS创建的存储声明 - name: cache-volume emptyDir: medium: Memory sizeLimit: 500G - name: ephemeral emptyDir: sizeLimit: 200G --- apiVersion: v1 kind: Service metadata: annotations: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "internet" service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version: ipv4 labels: app: llm-test name: svc-llm namespace: default spec: externalTrafficPolicy: Local ports: - name: serving port: 8000 protocol: TCP targetPort: 8000 selector: app: llm-test type: LoadBalancer说明其中GPU相关Annotation请见ACS Pod实例概述。
PPU规格,请参见PPU Pod规格表。
第一次创建需要拉取镜像,大约需要20分钟左右,您可以在目标集群工作负载 > 容器组 > 事件下查看Pod的运行状态。

Pod 为Running状态即为创建成功,Pod拉起后会自动拉起vLLM serving服务,您可以在目标集群工作负载 > 容器组 > 日志下查看log,有如下输出则说明服务启动成功。

验证推理服务
在容器计算服务控制台中网络 > 服务,可以看到之前创建的svc-llm服务,该服务的外部IP地址(External IP)即为推理服务的公网IP。
在客户端测试vLLM推理对话功能的操作如下。
# 将IP改为上一步中创建的服务的外部IP地址 # model为模型在pod中的路径 curl http://IP:8000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "/mnt/llms_data/DeepSeek-R1-bf16/", "messages": [ {"role": "system", "content": "你是个友善的AI助手。"}, {"role": "user", "content": "介绍一下深度学习。"} ]}'预期输出:
