在使用容器计算服务 ACS(Container Compute Service)算力时,您无需深入了解底层硬件,也无需涉及GPU节点管理和配置即可开箱即用。ACS部署简单、支持按量付费,非常适合用于LLM推理任务,可以有效降低推理成本。本文介绍如何使用ACS算力部署生产可用的DeepSeek满血版模型推理服务。
背景介绍
前提条件
已创建ACS集群,配置的地域和可用区支持GPU资源。具体操作,请参见创建ACS集群。
已使用kubectl连接Kubernetes集群。具体操作,请参见获取集群kubeconfig并通过kubectl工具连接集群。
GPU实例规格和成本预估
DeepSeek-R1满血版模型在ACS上不加任何加速,通过消耗16卡时即可完成推理服务部署。ACS GPU单实例部署推荐使用96 GiB显存的资源配置:GPU:16卡(单卡96G显存), CPU:64 vCPU,Memory:512 GiB。您可以参考规格推荐表和GPU计算类型卡型规格来选择合适的实例规格。关于如何计算ACS GPU实例产生的费用,请参见计费说明。
在使用ACS GPU实例时,实例规格同样遵循ACS Pod规格规整逻辑。
ACS Pod默认提供30 GiB的免费的临时存储空间(EphemeralStorage),本文中使用的推理镜像占用空间较大。如果该存储空间大小无法满足您的需求,您可以自定义增加临时存储空间大小。详细操作,请参见增加临时存储空间大小。
操作步骤
步骤一:准备DeepSeek-R1-GPTQ-INT8模型文件
大语言模型因其庞大的参数量,需要占用大量的磁盘空间来存储模型文件。建议您使用NAS存储卷或OSS存储卷来持久化存储模型文件,以下步骤以使用OSS存储DeepSeek-R1-GPTQ-INT8模型文件作为示例。
请提交工单,获取模型文件和YAML部署配置信息。
模型文件:DeepSeek-R1-GPTQ-INT8。
GPU型号:请将标签
alibabacloud.com/gpu-model-series: <example-model>
替换为ACS支持的GPU具体型号。详细内容,请参见指定ACS GPU算力。基础镜像:请将
containers[].image: <从PDSA获取基础镜像>
替换为实际镜像地址。拉取镜像所需的Secret:获取并创建Secret,再将
imagePullSecrets[].name: <从PDSA获取Secret>
替换为实际Secret名称。
(可选)若通过本地下载的方式获取模型文件,在OSS中创建目录,将模型上传至OSS。
关于ossutil工具的安装和使用方法,请参见安装ossutil。
ossutil mkdir oss://<your-bucket-name>/models/DeepSeek-R1-GPTQ-INT8 ossutil cp -r /mnt/models/DeepSeek-R1-GPTQ-INT8 oss://<your-bucket-name>/models/DeepSeek-R1-GPTQ-INT8
创建PV和PVC:为目标集群配置名为llm-model的存储卷PV和存储声明PVC。具体操作,请参见静态挂载OSS存储卷。
控制台操作示例kubectl操作示例以下为示例PV的基本配置信息:
配置项
说明
存储卷类型
OSS
名称
llm-model
访问证书
配置用于访问OSS的AccessKey ID和AccessKey Secret。
Bucket ID
选择上一步所创建的OSS Bucket。
OSS Path
选择模型所在的路径,如/models/DeepSeek-R1-GPTQ-INT8
以下为示例PVC的基本配置信息:
配置项
说明
存储声明类型
OSS
名称
llm-model
分配模式
选择已有存储卷。
已有存储卷
单击选择已有存储卷链接,选择已创建的存储卷PV。
以下为示例YAML:
apiVersion: v1 kind: Secret metadata: name: oss-secret stringData: akId: <your-oss-ak> # 配置用于访问OSS的AccessKey ID akSecret: <your-oss-sk> # 配置用于访问OSS的AccessKey Secret --- apiVersion: v1 kind: PersistentVolume metadata: name: llm-model labels: alicloud-pvname: llm-model spec: capacity: storage: 30Gi accessModes: - ReadOnlyMany persistentVolumeReclaimPolicy: Retain csi: driver: ossplugin.csi.alibabacloud.com volumeHandle: llm-model nodePublishSecretRef: name: oss-secret namespace: default volumeAttributes: bucket: <your-bucket-name> # bucket名称 url: <your-bucket-endpoint> # Endpoint信息,如oss-cn-hangzhou-internal.aliyuncs.com otherOpts: "-o umask=022 -o max_stat_cache_size=0 -o allow_other" path: <your-model-path> # 本示例中为/models/DeepSeek-R1-GPTQ-INT8/ --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: llm-model spec: accessModes: - ReadOnlyMany resources: requests: storage: 30Gi selector: matchLabels: alicloud-pvname: llm-model
步骤二:基于ACS GPU算力部署模型文件
执行下列命令,基于vLLM模型推理框架部署R1模型的推理服务。
该推理服务暴露与OpenAI兼容的HTTP API。下列命令将模型参数文件视作是一种特殊类型的数据集合,挂载到推理服务容器的指定位置(/data/DeepSeek-R1-GPTQ-INT8)。
--max-model-len
设置了该模型最大可处理的Token长度,增大该配置项可获得更好的模型对话效果,但是可能会占用更多GPU显存资源(使用DeepSeek-R1-GPTQ-INT8模型建议上下文最大长度在128000左右,并结合--gpu-memory-utilization
进行调整)。apiVersion: apps/v1 kind: Deployment metadata: name: deepseek-r1 namespace: default labels: app: deepseek-r1 spec: replicas: 1 selector: matchLabels: app: deepseek-r1 strategy: type: RollingUpdate rollingUpdate: maxSurge: 25% maxUnavailable: 25% template: metadata: labels: app: deepseek-r1 alibabacloud.com/compute-class: gpu # 指定GPU型号为example-model,请按实际情况填写,如T4 alibabacloud.com/gpu-model-series: <example-model> spec: imagePullSecrets: - name: <从PDSA获取Secret> containers: - name: llm-ds-r1 image: <从PDSA获取基础镜像> imagePullPolicy: IfNotPresent command: - sh - -c - "vllm serve /data/DeepSeek-R1-GPTQ-INT8 --port 8000 --trust-remote-code --served-model-name ds --max-model-len 128000 --quantization moe_wna16 --gpu-memory-utilization 0.98 --tensor-parallel-size 16" resources: limits: alibabacloud.com/gpu: "16" cpu: "64" memory: 512Gi requests: alibabacloud.com/gpu: "16" cpu: "64" memory: 512Gi volumeMounts: - name: llm-model mountPath: /data/DeepSeek-R1-GPTQ-INT8 - name: shm mountPath: /dev/shm restartPolicy: Always terminationGracePeriodSeconds: 30 volumes: - name: llm-model persistentVolumeClaim: claimName: llm-model - name: shm emptyDir: medium: Memory sizeLimit: 32Gi --- apiVersion: v1 kind: Service metadata: name: deepseek-r1 spec: type: ClusterIP selector: app: deepseek-r1 ports: - protocol: TCP port: 8000 targetPort: 8000
步骤三:验证推理服务
使用
kubectl port-forward
在推理服务与本地环境间建立端口转发。请注意
kubectl port-forward
建立的端口转发不具备生产级别的可靠性、安全性和扩展性,因此仅适用于开发和调试目的,不适合在生产环境使用。更多关于Kubernetes集群内生产可用的网络方案的信息,请参见Ingress管理。kubectl port-forward svc/deepseek-r1 8000:8000
预期输出:
Forwarding from 127.0.0.1:8000 -> 8000 Forwarding from [::1]:8000 -> 8000
发送模型推理请求。
curl http://localhost:8000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "ds", "messages": [ { "role": "user", "content": "给闺女写一份来自未来2035的信,同时告诉她要好好学习科技,做科技的主人,推动科技,经济发展;她现在是3年级" } ], "max_tokens": 1024, "temperature": 0.7, "top_p": 0.9, "seed": 10 }'
预期输出:
{"id":"chatcmpl-53613fd815da46df92cc9b92cd156146","object":"chat.completion","created":1739261570,"model":"deepseek-r1","choices":[{"index":0,"message":{"role":"assistant","content":"<think>\n好的,用户需要给他的3年级女儿写一份来自未来的2035年的信,同时传达三个关键信息:好好学习科技,做科技的主人,推动科技,经济发展。首先,我得考虑信的语气应该是温暖而充满希望的,同时又要体现出未来的科技感。\n\n考虑到女儿现在是三年级,内容不能太复杂,语言要简单易懂。同时,要让女儿感受到科技的重要性,激发她对科技的兴趣。可能需要从她日常生活出发,举一些她可能接触过的例子,比如电子产品、互联网等,这样她更容易产生共鸣。\n\n接下来,我得思考如何结构这封信。可能从欢迎她收到这封信开始,然后介绍未来科技的发展,比如智能机器人、智能家居等。然后重点强调学习科技的重要性,鼓励她成为科技的主人,参与科技发展。最后,表达对她的期望和祝福。\n\n在内容上,要突出科技对生活的影响,比如智能助手、智能家居、新能源汽车等,这些都是孩子可能听说过的,但具体细节可能需要简化,避免过于技术化,保持趣味性。\n\n同时,信中要提到科技对经济的影响,比如经济增长、创造就业机会等,但要以一种积极、鼓励的方式呈现,让女儿感受到科技带来的好处,而不是单纯的数字游戏。\n\n最后,结尾部分要温暖,表达对她的骄傲和期待,鼓励她勇敢追求未来,成为科技的引领者。\n\n总的来说,这封信需要兼顾教育性、趣味性和鼓励性,用简单明了的语言,结合具体的未来科技例子,让女儿在轻松的阅读中感受到科技的魅力和学习的重要性。\n</think>\n\n亲爱的未来2035年的你:\n\n你好!\n\n首先,我要告诉你一个好消息——地球已经进入了一个全新的时代!2035年,科技已经不再是科幻小说里的故事,而是我们 everyday life 的一部分。今天,我写这封信,想告诉你一些关于未来的秘密,以及你应该如何在这个科技飞速发展的世界里生活和学习。\n\n### 1. **科技就在你身边**\n 在2035年,科技已经无处不在。我们每个人都能拥有一台智能助手,就像一个 always-available 的老师,随时为你解答问题。你可以用一个简单的应用程序,就能控制家里的智能家居设备——开关灯、调节温度、甚至做饭,全靠你的指令!\n \n 还有,你可能已经听说到了——智能机器人。这些机器人不仅能帮助我们完成繁琐的工作,还能在学习和娱乐中大显身手。它们可以陪你聊天、陪你学习,甚至还能帮你解决数学难题!想象一下,当你遇到一道难题时,机器人会耐心地一步一步地教你解题方法,是不是很棒?\n\n### 2. **学习科技的重要性**\n 在未来的2035年,科技已经成为了推动社会发展的主要动力。每一个行业都在被科技改变:医生可以用先进的医疗设备 early detect 病症;教师可以通过在线课堂让学生们足不出户就能学习全球的知识;农民可以用智能设备精准地管理田地,确保每一棵树都得到最好的照顾。\n\n 所以,我要告诉你,学习科技是每一个孩子最重要的任务。科技不仅能让你掌握更多的知识,还能让你成为未来的主人。你将有机会去创造新的科技,改变我们的生活!\n\n### 3. **做科技的主人**\n 在2035年,科技的世界需要每个人的力量。你不需要是某个公司的高管,只需要是你自己。你可以用你的智慧和双手,去推动科技的发展。比如,你可以在学校里参与科技创新比赛,设计出更智能的机器人;你可以在家里发明一些小发明,让生活更方便。\n\n 重要的是,你要有勇气去尝试新事物,去探索未知的世界。科技的世界是无限广阔的,每一个人都能在这里找到自己的位置。\n\n### 4. **关于经济**\n 未来的2035年,经济会因为科技的发展而变得更加繁荣。智能城市将会让我们的生活更加高效,新能源汽车将会让我们的出行更加环保,医疗科技将会让我们的健康得到更好的保障。\n\n 所以,当你站在这个时代的起点时,你要知道,科技不仅是改变我们生活的方式,更是创造未来的机会。\n\n### 5. **我的期望**\n 我希望未来的你能够热爱科技,理解科技,掌握科技。你不仅要学会使用科技,还要理解其中的原理,知道它背后的故事。当你长大后,你可能会成为科技领域的领军人物,引领我们走向一个更加光明的未来。\n\n 未来的世界需要你!你准备好迎接挑战了吗?\n\n最后,我要告诉你,你已经比现在的任何人都更聪明,更勇敢,更有潜力。未来的路虽然很长,但只要你愿意努力,就一定能够实现自己的梦想。\n\n亲爱的未来2035年的你,加油!\n\n你的爷爷","tool_calls":[]},"logprobs":null,"finish_reason":"stop","stop_reason":null}],"usage":{"prompt_tokens":40,"total_tokens":1034,"completion_tokens":994,"prompt_tokens_details":null},"prompt_logprobs":null}
(可选)步骤四:清理环境
如果不再需要使用本文档中部署的模型推理服务,请及时清理环境。
清理模型推理工作负载和服务。
kubectl delete deployment deepseek-r1 kubectl delete service deepseek-r1
清理PV和PVC。
kubectl delete pvc llm-model kubectl delete pv llm-model
预期输出:
persistentvolumeclaim "llm-model" deleted persistentvolume "llm-model" deleted
相关文档
阿里云容器计算服务 ACS(Container Compute Service)已经集成到容器服务 Kubernetes 版,您可以通过ACK托管集群Pro版快速使用ACS提供的容器算力。关于ACK使用ACS GPU算力的详细内容,请参见ACK使用ACS GPU算力示例。
基于ACK部署DeepSeek的相关内容,请参见:
关于DeepSeek R1/V3模型的详细介绍,请参见:
- 本页导读 (0)
- 背景介绍
- DeepSeek-R1模型
- vLLM
- 容器计算服务ACS
- 前提条件
- GPU实例规格和成本预估
- 操作步骤
- 步骤一:准备DeepSeek-R1-GPTQ-INT8模型文件
- 步骤二:基于ACS GPU算力部署模型文件
- 步骤三:验证推理服务
- (可选)步骤四:清理环境
- 相关文档