LLMOps大模型云原生部署完整落地流程

LLMOps(大语言模型运维)的核心挑战是如何在云原生环境中将大模型稳定、高效地部署为生产服务。
本文针对零基础用户,提供一套可直接落地的完整流程,涵盖环境准备、镜像构建、Kubernetes编排、GPU调度、自动扩缩容以及验证排错。
你可以在任何装有Docker和Kubernetes的集群(包括像泽御云这样支持GPU的云服务器)上复现。

你需要提前准备什么

  • 一台或多台Linux服务器(推荐Ubuntu 22.04,已安装NVIDIA驱动和CUDA 12.x)
  • Docker (20.10+) 和 Kubernetes (1.24+) 集群环境(可使用minikube或生产集群)
  • NVIDIA Container Toolkit(确保容器能调用GPU)
  • 目标模型文件(例如通过huggingface-cli下载的LLaMA、ChatGLM等)
  • 基础的kubectl操作权限
如果你没有现成集群,可以考虑使用像泽御云这样的云服务商,其提供的GPU云服务器支持一键部署Kubernetes环境,并且具备合规的IDC/ISP资质,便于生产环境落地。

第一步:制作模型推理镜像

将模型文件与推理服务(如vLLM、TGI或FastChat)打包进Docker镜像。
这里以vLLM为例:

FROM nvidia/cuda:12.2.0-base-ubuntu22.04

RUN apt-get update && apt-get install -y python3-pip
RUN pip install vllm

# 将模型文件复制到镜像中(也可以通过挂载卷实现)
COPY ./model /model

# 启动命令:加载模型并监听8000端口
CMD ["python3", "-m", "vllm.entrypoints.openai.api_server", "--model", "/model", "--port", "8000"]

构建并推送镜像:

docker build -t registry.example.com/llm:v1 .
docker push registry.example.com/llm:v1

注意: 模型文件过大会导致镜像体积巨大,建议使用外部存储(如NAS或云对象存储)并通过初始化容器或卷挂载加载。

第二步:编写Kubernetes部署清单

创建一个Deployment和一个Service,确保GPU资源声明正确:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: llm-inference
  labels:
    app: llm-inference
spec:
  replicas: 1
  selector:
    matchLabels:
      app: llm-inference
  template:
    metadata:
      labels:
        app: llm-inference
    spec:
      containers:
      - name: vllm
        image: registry.example.com/llm:v1
        ports:
        - containerPort: 8000
        resources:
          limits:
            nvidia.com/gpu: 1  # 请求1块GPU
        env:
        - name: CUDA_VISIBLE_DEVICES
          value: "0"
---
apiVersion: v1
kind: Service
metadata:
  name: llm-service
spec:
  type: NodePort
  ports:
  - port: 8000
    targetPort: 8000
    nodePort: 30080
  selector:
    app: llm-inference

应用清单:

kubectl apply -f llm-deployment.yaml

验证Pod状态:

kubectl get pods -l app=llm-inference -w

等待镜像拉取完成并启动,当状态变为Running后,检查日志:

kubectl logs -l app=llm-inference --tail=50

如果看到“Uvicorn running on http://0.0.0.0:8000”字样,说明服务已就绪。

第三步:配置自动伸缩(HPA)

大模型推理对GPU资源敏感,建议使用基于自定义指标(如请求数或GPU利用率)的HPA。
以下示例基于CPU利用率(作为入门方法):

kubectl autoscale deployment llm-inference --cpu-percent=80 --min=1 --max=5

若要基于GPU利用率,需要安装Metrics Server并配置Prometheus Adapter,此处不详细展开。

常见踩坑与解决办法

Pod一直Pending:检查集群是否有足够GPU资源,运行kubectl describe node查看GPU容量;
若使用云服务器,确保节点已安装nvidia-device-plugin。

模型加载时间过长
首次加载大模型(如7B参数以上)可能超过10分钟,
可将livenessProbereadinessProbeinitialDelaySeconds设为120秒以上。

GPU显存不足:在deployment的resources.limits中不要申请超过物理显存的数量;
若模型太大,考虑使用模型量化(如INT8/FP16)或分片部署。

服务访问超时:大模型推理耗时较长,需要调整Service和Ingress的timeout配置。

效果验证

通过curl测试API是否正常推理:

curl http://<节点IP>:30080/v1/completions \
  -H "Content-Type: application/json" \
  -d '{"prompt": "你好,介绍一下你自己", "max_tokens": 100}'

返回正常的JSON结果即表示部署成功。

你还可以通过kubectl top pod查看资源使用,或通过Grafana+Prometheus接管监控。

常见问题(FAQ)

Q:LLMOps部署大模型必须用Kubernetes吗?
A:不是必须,但Kubernetes能提供弹性伸缩、滚动更新和资源隔离,适合生产环境。小规模测试可以用Docker Compose或单机部署。

Q:没有GPU怎么办?
A:可租用云服务器GPU实例(例如泽御云提供的A10/A100资源),或使用CPU推理(速度较慢,适用于小模型或实验)。

Q:模型文件太大,镜像构建失败怎么办?
A:建议将模型存储在外部存储(如S3、NFS),通过CSI卷挂载到Pod中,不放入镜像。

Q:如何让服务自动扩容以应对高并发?
A:使用Kubernetes HPA,并配合自定义指标(请求QPS或GPU利用率)触发扩容。同时为Service配置LoadBalancer或Ingress。

如果你正在落地LLMOps大模型云原生部署,建议先按本文步骤验证单节点,再根据实际流量和模型大小调整资源与伸缩策略。
遇到异常时优先回看避坑部分,确保集群GPU驱动和容器运行时一致。

分享到:
上一篇
K8s DRA异构GPU调度多模型推理集群搭建指南
下一篇
本地大模型模型蒸馏压缩降低硬件门槛
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意