私有化部署 DeepSeek-R1 方案,狂省85%云成本

在本教程中,我们将初步尝试在阿里云ACK上托管DeepSeek-R1模型,并使用Karpenter阿里云Provider动态扩缩GPU节点资源。

通过Karpenter的自动化调度能力,我们可以根据需求灵活调整计算资源(如竞价实例),确保模型推理高效运行,同时优化成本。

01.为什么在K8s上私有化部署DeepSeek-R1模型

在阿里云 ACK 上部署 DeepSeek 模型,主要有以下几个关键优势:

首先,许多大企业在部署AI模型时,通常有数据私有化的要求,特别是涉及敏感数据或关键业务时。

其次,Kubernetes提供了灵活的底层计算资源管理能力,企业可以根据自身需求进行资源调度、分配和优化。通过阿里云ACK集群,企业能够精细化管理计算资源,并进行自定义配置,以确保模型训练和推理任务能够在最适合的GPU资源上高效运行。

此外,本地部署还能够有效避免频繁的宕机和服务不可用问题(如下图),保障系统的高可用性。同时,不受敏感词等外部限制,增强了灵活性和自主性。

02.创建ACK集群

本文使用Terraform快速创建ACK,使用的区域为ap-northeast-2(首尔)。

03/

安装Karpenter

参考官方安装文档安装Karpenter(仅需完成前5步即可):

https://docs.cloudpilot.ai/karpenter/alibabacloud/v0.1/getting-started/set-up-a-cluster-and-add-karpenter

同时,部署如下NodePool和NodeClass,定义弹性GPU节点的配置:

# nodepool.yaml   apiVersion: karpenter.sh/v1   kind: NodePool   metadata:     name: ecsnodepool   spec:     disruption:       budgets:         - nodes: 95%       consolidationPolicy: WhenEmptyOrUnderutilized       consolidateAfter: 1m     template:       spec:         requirements:           - key: node.kubernetes.io/instance-type             operator: In             values:             - "ecs.gn7i-c8g1.2xlarge"             - "ecs.gn7i-c16g1.4xlarge"             - "ecs.gn7i-2x.8xlarge"             - "ecs.gn7i-4x.8xlarge"             - "ecs.gn7i-c32g1.8xlarge"             - "ecs.gn7i-c48g1.12xlarge"             - "ecs.gn7i-c56g1.14xlarge"             - "ecs.gn7i-c32g1.16xlarge"             - "ecs.gn7i-c32g1.32xlarge"           - key: kubernetes.io/arch             operator: In             values: [ "amd64" ]           - key: kubernetes.io/os             operator: In             values: ["linux"]           - key: karpenter.sh/capacity-type             operator: In             values: ["spot"]         nodeClassRef:           group: "karpenter.k8s.alibabacloud"           kind: ECSNodeClass           name: defaultnodeclass    ---    # nodeclass.yaml    apiVersion: karpenter.k8s.alibabacloud/v1alpha1   kind: ECSNodeClass   metadata:     name: defaultnodeclass   spec:     systemDisk:       size: 300       categories:         - cloud         - cloud_ssd         - cloud_efficiency         - cloud_essd         - cloud_auto         - cloud_essd_entry     vSwitchSelectorTerms:       - tags:           karpenter.sh/discovery: "deepseek" # replace with your cluster name     securityGroupSelectorTerms:       - tags:           karpenter.sh/discovery: "deepseek" # replace with your cluster name     imageSelectorTerms:       # ContainerOS only support x86_64 linux nodes, and it's faster to initialize       - alias: AlibabaCloudLinux3
  • nodepool中的 node.kubernetes.io/instance-type 定义候选的节点类型,这里使用A10 GPU。

  • 使用 karpenter.sh/capacity-type 将节点计费类型设置为 Spot,**相比按需计费可节省85%****,甚至低于包年费用(375,853.84元)。**未来结合 HPA 的自动扩缩容策略,预计还能降低更多成本。

数据来源:spot.cloudpilot.ai

NOTE: 查询计费数据详情,请访问:

https://spot.cloudpilot.ai/alibabacloud?instance=ecs.gn7i-c32g1.32xlarge#region=ap-northeast-2

安装好Karpenter后,运行如下命令即可:

kubectl apply -f nodepool.yaml             kubectl apply -f nodeclass.yaml   

检查nodepool status,READY为True即可:

NAME          NODECLASS          NODES   READY   AGE   ecsnodepool   defaultnodeclass   1       True    3h10m   

在业务流量高峰期,系统可充分利用 GPU 资源以满足计算需求,而在请求低谷时,闲置的资源仍在运行则会造成不必要的成本浪费。

假设1天内仅有8小时处于流量高峰,那么通过采用弹性策略,用户可以根据实际负载动态调整资源,在处于低负载的16小时中自动缩容 Pod 至 0,释放空闲的 GPU 资源,至少可以减少 60% 云成本。

04/

部署DeepSeek-R1模型

1.创建YAML文件

创建deepseek.yaml,内容如下,也可以将 deepseek-ai/DeepSeek-R1-Distill-Qwen-32B 修改为任意你想要的其他模型:

apiVersion: v1   kind: Namespace   metadata:     name: deepseek   ---   apiVersion: apps/v1   kind: Deployment   metadata:     name: deepseek-deployment     namespace: deepseek     labels:       app: deepseek   spec:     replicas: 1     selector:       matchLabels:         app: deepseek     template:       metadata:         labels:           app: deepseek       spec:         tolerations:           - key: "nvidia.com/gpu"             operator: "Exists"             effect: "NoSchedule"         volumes:         - name: cache-volume           hostPath:             path: /tmp/deepseek             type: DirectoryOrCreate         # vLLM needs to access the host's shared memory for tensor parallel inference.         - name: shm           emptyDir:             medium: Memory             sizeLimit: "2Gi"         containers:         - name: deepseek           image: cloudpilotai-registry.cn-hangzhou.cr.aliyuncs.com/cloudpilotai/vllm-openai:latest           command: ["/bin/sh", "-c"]           args: [             "vllm serve deepseek-ai/DeepSeek-R1-Distill-Qwen-32B --max_model_len 2048 --tensor-parallel-size 4"           ]           env:           # - name: HF_ENDPOINT           #   value: https://hf-mirror.com           - name: HF_HUB_ENABLE_HF_TRANSFER             value: "0"           # - name: VLLM_USE_MODELSCOPE           #   value: "True"           ports:           - containerPort: 8000           resources:             requests:               nvidia.com/gpu: "4"             limits:               nvidia.com/gpu: "4"           volumeMounts:           - mountPath: /root/.cache/huggingface             name: cache-volume           - name: shm             mountPath: /dev/shm   ---   apiVersion: v1   kind: Service   metadata:     name: deepseek-svc     namespace: deepseek   spec:     ports:     - name: http       port: 80       protocol: TCP       targetPort: 8000     # The label selector should match the deployment labels & it is useful for prefix caching feature     selector:       app: deepseek     type: ClusterIP   

其中 --tensor-parallel-size 4 表示使用单机4卡GPU并行推理(也可以改为单卡,速度会慢一点)。

此处附上不同参数模型对显卡和显存的要求,大家可以根据要求选择合适GPU计算资源:

2.部署YAML

运行如下命令,部署业务:

kubectl apply -f deepseek.yaml

此时,Karpenter会根据要求的4卡GPU,创建4卡的Spot单节点(4卡并行,提升Token响应速度):

$ kubectl get nodeclaim -A   NAME                TYPE                      CAPACITY   ZONE              NODE                          READY   AGE   ecsnodepool-knc9p   ecs.gn7i-c32g1.32xlarge   spot       ap-northeast-2c   ap-northeast-2.172.16.2.174   True    136m   

等待一段时间后,查看相关Pod日志,显示如下内容即Ready:

...   INFO 02-05 05:16:52 launcher.py:27] Route: /invocations, Methods: POST   INFO:     Started server process [7]   INFO:     Waiting for application startup.   INFO:     Application startup complete.   ...   

3.使用UI聊天交互

首先运行如下命令,将服务在本地暴露:

kubectl port-forward svc/deepseek-svc -n deepseek 8080:80

然后,访问网页:https://app.nextchat.dev/,点击左下角配置:

依次选择和输入:

  • OpenAI

  • http://localhost:8080

  • deepseek-ai/DeepSeek-R1-Distill-Qwen-32B

  • deepseek-ai/DeepSeek-R1-Distill-Qwen-32B

最后,通过聊天窗口即可使用 DeepSeek-R1模型:

体验A10 4卡,响应速度还是很快的!

结论

经过初步体验,在Kubernetes环境下结合Karpenter,能够快速启动LLM所需的GPU节点资源。此教程仅为初步体验,要实现生产级别的安装和部署,还需要结合一些解决方案,克服以下几个问题:

  1. 镜像加速:避免长时间无法拉取镜像,如使用Dragonfly等。

  2. 模型文件加载加速:防止模型文件下载时间过长。

  3. 超大模型支持:通常超大模型需要多个节点才能运行,需要通过vLLM进行多节点多GPU推理的配置。

  4. 弹性扩缩容:根据请求量动态调整Pod数量,以应对请求波动;在长时间无请求时,将Pod缩容至0,并释放空闲的GPU资源,进一步节省成本。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

在这里插入图片描述

### DeepSeek-R1 私有化部署指南 对于希望在本地环境中运行 DeepSeek-R1 的用户来说,存在两种主要的方式:通过官方命令行工具以及利用 HTTP API 接口。 #### 使用 Ollama 工具启动 DeepSeek-R1 针对较大模型版本如70B参数量级别的Llama DeepSeek R1,虽然可以采用 `ollama` 命令来尝试启动服务,但由于资源消耗巨大并不建议于个人设备上执行此操作[^1]: ```bash ollama run deepseek-r1:70b ``` #### 利用 HTTP API 实现交互 相比之下,较小规模的模型比如7亿参数版更适合作为入门级选项用于学习目的。一旦完成安装配置过程之后,可以通过发送 POST 请求给指定端点来进行文本生成任务。下面是一个简单的例子展示怎样向已部署的服务提交查询请求并获取响应数据[^2]: ```json POST /api/generate HTTP/1.1 Host: localhost:11434 Content-Type: application/json { "model": "deepseek-r1:7b", "prompt": "Why is the sky blue?", "stream": false } ``` 为了实现上述功能,在实际操作前还需要确保已经正确设置了环境变量,并按照官方说明完成了必要的软件包下载与初始化工作。具体步骤通常包括但不限于以下几个方面: - 安装依赖库和服务程序; - 下载预训练权重文件; - 配置网络通信参数; - 启动后台进程监听API调用; 请注意以上信息基于现有资料整理而成,随着项目迭代更新可能会有所变化。因此强烈建议访问最新发布的官方文档以获得最权威指导。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值