大規(guī)模AI推理再非難事:如何在Kubernetes上部署DeepSeek 原創(chuàng)
隨著人工智能的持續(xù)發(fā)展,高效、大規(guī)模部署AI驅(qū)動(dòng)應(yīng)用程序變得至關(guān)重要。而編排平臺(tái)Kubernetes在管理容器化AI工作負(fù)載、確??蓴U(kuò)展性、彈性以及降低管理難度等方面,無(wú)疑將發(fā)揮不可替代的作用。
在本文中,我們將共同了解如何在Kubernetes上部署DeepSeek,運(yùn)用其強(qiáng)大的AI推理模型DeepSeek-R1與Open WebUI集成以實(shí)現(xiàn)無(wú)縫交互。
一、為何選擇Kubernetes??
作為一款先進(jìn)的推理模型,DeepSeek將受益于Kubernetes提供的強(qiáng)大容器化與編排能力。Kubernetes憑借其成熟的生態(tài)系統(tǒng)以及專門(mén)針對(duì)復(fù)雜AI工作負(fù)載量身定制的廣泛功能,從Docker Swarm、Apache Mesos等一從同類產(chǎn)品中脫穎而出。以下是選擇Kubernetes的主要原因:
1.可擴(kuò)展性?
Kubernetes使用Horizontal Pod Autoscaler(HPA)與Cluster Autoscaler等工具簡(jiǎn)化了AI工作負(fù)載的擴(kuò)展流程。對(duì)于推理請(qǐng)求激增等常見(jiàn)場(chǎng)景,Kubernetes能夠自動(dòng)無(wú)縫擴(kuò)展pod與節(jié)點(diǎn),確保無(wú)需人工干預(yù)即可實(shí)現(xiàn)一致性能。
2.彈性?
Kubernetes可實(shí)現(xiàn)pod自動(dòng)重新調(diào)度與自我修復(fù)功能,借此保障更高彈性水平。一旦DeepSeek pod遭遇資源限制或節(jié)點(diǎn)故障等問(wèn)題,Kubernetes會(huì)快速檢測(cè)受到影響的pod并將其重新部署到健康節(jié)點(diǎn),最大限度縮短停機(jī)時(shí)間并保障持續(xù)可用性。
3.服務(wù)發(fā)現(xiàn)?
Kubernetes內(nèi)置基于DNS的服務(wù)發(fā)現(xiàn)與微服務(wù)無(wú)縫管理功能。DeepSeek的推理服務(wù)可由此輕松發(fā)現(xiàn)并接入以支持微服務(wù)(例如預(yù)處理模塊及日志記錄服務(wù)),全程無(wú)需復(fù)雜的手動(dòng)配置,段增強(qiáng)可維護(hù)性與靈活性。
4.持久存儲(chǔ)?
Kubernetes PersistentVolumeClaims (PVCs)可有效處理AI模型存儲(chǔ)、訓(xùn)練數(shù)據(jù)集及檢查點(diǎn),確保關(guān)鍵數(shù)據(jù)即使在更新、pod重啟或者節(jié)點(diǎn)故障期間也始終保持一致性與可用性。在Kubernetes的支持下,DeepSeek模型更新或者推理pod擴(kuò)展將真正實(shí)現(xiàn)無(wú)縫化、無(wú)中斷。
5.負(fù)載均衡?
Kubernetes提供內(nèi)置負(fù)載均衡功能,可在多個(gè)副本之間高效分配工作負(fù)載。此功能對(duì)于DeepSeek在多個(gè)實(shí)例間均勻分配推理請(qǐng)求、優(yōu)化資源利用率并顯著降低響應(yīng)延遲至關(guān)重要。
雖然Docker Swarm等替代方案的使用體驗(yàn)更簡(jiǎn)單,但Kubernetes擁有管理DeepSeek等復(fù)雜AI模型所必需的獨(dú)特功能完備優(yōu)勢(shì),確保了可擴(kuò)展性、穩(wěn)健性與操作簡(jiǎn)便性。
二、在Kubernetes上部署DeepSeek?
1. 設(shè)置Kubernetes集群?
在本設(shè)置中,我們將建立一個(gè)三節(jié)點(diǎn)Kubernetes集群,具體包含以下節(jié)點(diǎn):
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
deepseek-control-plane Ready control-plane 6d5h v1.32.0
deepseek-worker Ready <none> 6d5h v1.32.0
deepseek-worker2 Ready <none> 6d5h v1.32.0
即使Kubernetes節(jié)點(diǎn)不使用GPU,DeepSeek-R1也仍可正常運(yùn)行,只是響應(yīng)速度會(huì)受到影響。這里建議大家使用GPU加速以獲取最佳性能,特別是在處理復(fù)雜推理任務(wù)時(shí)請(qǐng)務(wù)必配備GPU。
你可以使用以下工具在本地設(shè)置Kubernetes集群:
- KIND (Kubernetes IN Docker)?
- Minikube?
- MicroK8s?
如果部署在云平臺(tái)上,則可使用Ingress對(duì)象以安全訪問(wèn)設(shè)置,并通過(guò)配備身份驗(yàn)證與TLS安全機(jī)制的Web界面對(duì)外公開(kāi)服務(wù)。
2. 使用Ollama部署DeepSeek-R1?
這里使用Ollama在Kubernetes 中部署DeepSeek-R1,Ollama負(fù)責(zé)處理AI模型推理。以下是Ollama部署過(guò)程中的Kubernetes manifest信息:
apiVersion: apps/v1
kind: Deployment
metadata:
name: ollama
labels:
app: ollama
spec:
replicas: 1
selector:
matchLabels:11
app: ollama
template:
metadata:
labels:
app: ollama
spec:
containers:
- name: ollama
image: ollama/ollama:latest
ports:
- containerPort: 11434
volumeMounts:
- mountPath: /root/.ollama
name: ollama-storage
env:
- name: OLLAMA_MODEL
value: deepseek-r1:1.5b
- name: OLLAMA_KEEP_ALIVE
value: "-1"
- name: OLLAMA_NO_THINKING
value: "true"
- name: OLLAMA_SYSTEM_PROMPT
value: "You are DeepSeek-R1, a reasoning model. Provide direct answers without detailed reasoning steps or <think> tags."
volumes:
- name: ollama-storage
emptyDir: {}
3. 將Ollama作為服務(wù)公開(kāi)?
為了讓其他服務(wù)與Ollama通信,這里需要定義一項(xiàng)NodePort服務(wù):
apiVersion: v1
kind: Service
metadata:
name: ollama-service
spec:
selector:
app: ollama
ports:
- protocol: TCP
port: 11434
targetPort: 11434
type: NodePort
4. 部署Open WebUI?
為了獲得交互式體驗(yàn),這里集成了Open WebUI,它會(huì)接入Ollama并提供用戶友好的界面。具體部署方式如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: openweb-ui
labels:
app: openweb-ui
spec:
replicas: 1
selector:
matchLabels:
app: openweb-ui
template:
metadata:
labels:
app: openweb-ui
spec:
containers:
- name: openweb-ui
image: ghcr.io/open-webui/open-webui:main
env:
- name: WEBUI_NAME
value: "DeepSeek India - Hardware Software Gheware"
- name: OLLAMA_BASE_URL
value: "http://ollama-service:11434"
- name: OLLAMA_DEFAULT_MODEL
value: "deepseek-r1:1.5b"
ports:
- containerPort: 8080
volumeMounts:
- name: openweb-data
mountPath: /app/backend/data
volumes:
- name: openweb-data
persistentVolumeClaim:
claimName: openweb-ui-pvc
5. 在DeepSeek-R1上運(yùn)行推理?
要測(cè)試部署,我們可以在Ollama容器內(nèi)執(zhí)行命令:
kubectl exec -it deploy/ollama -- bash
ollama run deepseek-r1:1.5b
此命令將啟動(dòng)與AI模型的交互式會(huì)話,且允許直接輸入查詢。
三、訪問(wèn)Open WebUI?
在部署完成后,即可創(chuàng)建指向URL的入口對(duì)象以訪問(wèn)Open WebUI。
???http://deepseek.gheware.com/auth?
用戶通過(guò)此界面,即可在聊天環(huán)境中與DeepSeek-R1進(jìn)行交互。
總結(jié)?
通過(guò)在Kubernetes上部署DeepSeek,我們建立起可擴(kuò)展、彈性強(qiáng)且可用于生產(chǎn)的AI推理系統(tǒng)。Kubernetes負(fù)責(zé)高效協(xié)調(diào)DeepSeek-R1,確保通過(guò)Open WebUI順利運(yùn)行模型并與用戶交互。此外,大家還可添加GPU加速、自動(dòng)擴(kuò)展并使用Prometheus及Grafana監(jiān)控,以進(jìn)一步擴(kuò)展這套基礎(chǔ)架構(gòu)。
對(duì)AI從業(yè)者來(lái)說(shuō),Kubernetes將為DeepSeek-R1等推理模型的部署和管理奠定良好基礎(chǔ),真正讓推理大模型走入尋常百姓家。
原文標(biāo)題:??DeepSeek on Kubernetes: AI-Powered Reasoning at Scale?,作者:Rajesh Gheware
