关于 model-deployment
model-deployment 是用于将机器学习模型部署到生产环境的技能,面向 MLOps 流程。它以 Docker 和 Kubernetes 管理模型版本、滚动更新及按流量扩缩容。
主要功能
- 01从模型工件构建 Docker 镜像
- 02部署模型到 Kubernetes
- 03通过标签管理模型版本
- 04滚动更新与回滚部署
- 05按流量自动扩缩容
适用场景
- 01将训练完成的模型部署为在线推理服务
- 02模型重新训练后更新现有部署
- 03在 MLOps 流程中管理版本并回滚
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ alphaonedev/ openclaw-graph --skill model-deployment安装后在 Claude Code 中输入/model-deployment确认已加载。
详细介绍
模型部署
用途
此技能使用容器(例如 Docker)和编排工具(例如 Kubernetes)将机器学习模型自动部署到生产环境,确保 ML 模型服务具备可扩展性和可靠性。
适用场景
- 需要将训练好的 ML 模型容器化并部署到生产环境,以便进行实时推理。
- 因模型重新训练或性能问题而更新现有部署。
- 在需要轻松对模型进行版本管理、监控和回滚的 MLOps 流水线中。
- 与 AWS EKS 或 Google GKE 等云服务商集成,使用托管式编排。
主要功能
- 根据模型制品构建 Docker 镜像,并将其部署到 Kubernetes 集群。
- 通过标签支持模型版本管理,并处理滚动更新,实现零停机部署。
- 与 TensorFlow 或 PyTorch 等 ML 框架集成,通过 API 提供模型服务。
- 管理资源分配,例如 Kubernetes Pod 中的 CPU/GPU 请求,如
resources: limits: cpu: 2。 - 使用 Kubernetes Horizontal Pod Autoscalers,根据流量自动扩缩容。
使用模式
使用此技能时,首先将模型准备为适合 Docker 的格式,然后构建并部署。请务必设置用于身份验证的环境变量,例如用于访问 Kubernetes 的 $KUBECONFIG。
模式 1:基本部署
- 将模型导出为保存的文件(例如
model.h5),并编写 Dockerfile。 - 在本地或 CI/CD 中构建镜像。
- 应用 Kubernetes 部署 YAML 文件来编排容器。
模式 2:更新现有部署
- 为新模型版本添加标签,并重新构建 Docker 镜像。
- 使用 kubectl 应用更改,并指定新的镜像标签。
- 监控发布状态,并在需要时使用内置命令回滚。
开始前务必确认集群访问正常;运行 kubectl get nodes 检查连接情况。
常用命令/API
使用以下 CLI 命令执行核心操作。对于 API 交互,请参考 Kubernetes REST API 端点。
-
构建并标记 Docker 镜像:
docker build -t mymlmodel:v1 .
此命令会根据当前目录创建镜像。 -
将镜像推送到镜像仓库:
docker push mymlmodel:v1
需要通过$DOCKER_REGISTRY_TOKEN环境变量进行身份验证。 -
部署到 Kubernetes:
kubectl apply -f deployment.yaml
其中 deployment.yaml 包含:
apiVersion: apps/v1
kind: Deployment
metadata: name: myml-deployment
spec: replicas: 3, template: spec: containers: - name: model-server image: mymlmodel:v1 -
扩缩部署:
kubectl scale deployment myml-deployment --replicas=5 -
用于查询部署的 API 端点:
使用 Kubernetes API:GET /apis/apps/v1/namespaces/default/deployments,并通过$KUBE_API_TOKEN中的 bearer token 进行身份验证。
对于配置格式,请使用 Kubernetes YAML 文件,例如:
apiVersion: v1
kind: Service
metadata: name: model-service
spec: selector: app: mymlmodel, ports: - protocol: TCP port: 80
集成说明
通过在流水线 YAML 中添加步骤,将此技能与 GitHub Actions 或 Jenkins 等 CI/CD 工具集成。例如,在 GitHub Actions 中:
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- run: docker build -t mymlmodel:${{ github.sha }} .
- run: kubectl apply -f k8s/deployment.yaml --context=$KUBE_CONTEXT
为机密设置环境变量,例如用于访问代码仓库的 $GITHUB_TOKEN 和用于选择集群的 $KUBE_CONTEXT。确保 ML 流水线输出采用标准格式(例如 pickle 格式的模型文件),以便与 Docker 无缝集成。
错误处理
主动处理常见错误。如果 docker build 因“no such file”失败,请检查 Dockerfile 路径和必需文件。对于 Kubernetes 错误(如“image pull failed”),请通过 $DOCKER_REGISTRY_TOKEN 检查镜像仓库凭据。
- 错误:Pod 未就绪 – 通过
kubectl logs <pod-name>检查日志,并确保部署 YAML 中的资源配置相匹配,例如添加resources: requests: memory: "1Gi"。 - 错误:身份验证失败 – 正确设置环境变量,例如运行
export KUBECONFIG=~/.kube/config,并使用kubectl get pods测试。 - 对于 API 错误(如 401 Unauthorized),请使用
$KUBE_API_TOKEN中刷新后的令牌重试,并在脚本中使用指数退避。
自动化脚本中始终应包含 try-catch,例如:
import subprocess
try:
subprocess.run(["kubectl", "apply", "-f", "deployment.yaml"], check=True)
except subprocess.CalledProcessError as e:
print(f"Deployment failed: {e}")
图关系
- 相关集群:aimlops
- 相关标签:mlops、deployment、containers
- 关联技能:model-training(用于部署前)、monitoring(用于部署后的可观测性)