MLflow 部署到 Kubernetes 集群:从训练到上线的最短路径
发布时间:2026/9/4 12:11:01 作者:尧图编辑部 阅读量:1,286

MLflow 部署到 Kubernetes 集群从训练到上线的最短路径【免费下载链接】mlflowThe open source AI engineering platform for agents, LLMs, and ML models. MLflow enables teams of all sizes to debug, evaluate, monitor, and optimize production-quality AI applications while controlling costs and managing access to models and data.项目地址: https://gitcode.com/GitHub_Trending/ml/mlflow把 MLflow 部署到 Kubernetes是把实验里训练好的模型变成集群上可调用的服务的最短路径。MLflow 负责记录训练元数据并打包模型与依赖Kubernetes 负责容器编排与弹性调度Kubeflow 则在这之上提供流水线编排与 KServe 推理服务两类组件。这篇指南走一遍最小可运行闭环Helm 装 Tracking Server、一条命令构建模型镜像、最小 Deployment 上线最后把部署记录回写到 Run让元数据链路闭合。一次上线的完整链路先看训练端要产出什么一个带元数据的 Run外加一个模型工件。import mlflow with mlflow.start_run(run_namechurn-demo): mlflow.log_param(alpha, 0.5) model train(alpha0.5) # 你的训练逻辑 mlflow.log_metric(accuracy, evaluate(model)) mlflow.pyfunc.log_model(model, namemodel)runs:/RUN_ID/model这类 URI 指向的模型工件会连同推理代码、依赖和环境要求一起打包后续构建镜像时不需要再手动整理环境。三个组件的分工可以这样理解组件负责的事不擅长的事MLflow元数据记录、模型打包、Registry 版本管理容器编排、弹性伸缩Kubernetes资源调度、扩缩容、声明式状态实验元数据、模型版本Kubeflow训练流水线、KServe 推理服务团队级实验管理最小可运行环境用 Helm 把 Tracking Server 装进集群MLflow 官方维护了一份生产级 Helm chart见 charts/ 目录的 README自带 Ingress、Secret 接入、PVC、Prometheus 指标与 GC CronJobKubernetes 1.23、Helm 3.8 即可使用helm install mlflow oci://ghcr.io/mlflow/charts/mlflow \ --namespace mlflow --create-namespace \ --set mlflow.backendStoreUripostgresql://user:passpg:5432/mlflow \ --set mlflow.artifactsDestinations3://bucket/mlflow两个关键参数的意图元数据库指向外部 PostgreSQLSQLite 只适合共享试用artifact 根目录指向 S3 兼容对象存储。想快速体验可以先按 README 的 Quick Start 用 SQLite PVC 跑通再切到上面的生产配置。装完后把训练脚本里的--tracking-uri指向集群入口即可训练端不需要其他改动。训练任务的资源申请写法Kubeflow Pipelines 里把训练封装成组件时用set_resources声明资源申请Pod 与 Run 的绑定靠一个环境变量传递component(base_imagepython:3.11-slim) def train(): os.environ[MLFLOW_RUN_ID] os.environ.get(KUBEFLOW_RUN_ID, ) run_train_script() # 内部完成 log_param / log_model train_op train() train_op.set_resources(requests{cpu: 2, memory: 4Gi}, limits{cpu: 2, memory: 4Gi})注意两点Kubeflow 的 RunID 由KUBEFLOW_RUN_ID环境变量提供用它做 Run 名或 tag之后就能从流水线界面直接跳回 MLflowGPU 任务在limits里加nvidia.com/gpu即可无需引入额外的 TFJob。从镜像到上线的最短路径一条命令构建模型镜像mlflow models build-docker读取模型工件并生成推理容器镜像核心逻辑在 mlflow/models/docker_utils.pymlflow models build-docker -n churn-model:v1 -r ./images \ -m runs:/RUN_ID/model docker tag churn-model:v1 registry.example.com/churn-model:v1 docker push registry.example.com/churn-model:v1最小 Deployment 清单上线阶段可以先不引入 KServe直接写一个最小 Deployment 把跑通变成最短路径需要流量管理与自动扩缩容时再迁移到 KServe 的 InferenceServiceKubeflow 自带组件apiVersion: apps/v1 kind: Deployment metadata: name: churn-model spec: replicas: 1 selector: { matchLabels: { app: churn-model } } template: metadata: { labels: { app: churn-model } } spec: containers: - name: model image: registry.example.com/churn-model:v1 ports: [{ containerPort: 5000 }] resources: requests: { cpu: 1, memory: 2Gi }把部署记录接回元数据上线之后把部署状态回写到 Run 和模型版本形成双向追溯。MLflow 的部署目标由插件统一实现BaseDeploymentClient代码见 mlflow/deployments/from mlflow.tracking import MlflowClient client MlflowClient() client.set_tag(run_id, deployment.image, churn-model:v1) client.set_tag(run_id, deployment.replicas, 1) client.set_model_tag(runs:/RUN_ID/model, serving, active)后续用client.get_model_versions查询版本与 tag即可回答线上 v1 对应哪次实验、什么参数、什么指标。生产化的几个落点凭证数据库 URI 用backendStoreUriFrom从 K8s Secret 读取S3 凭证同样走 Secret避免明文写进 values 文件镜像拉取失败先检查节点到私有仓库的imagePullSecrets配置再看 Pod 日志确认是认证还是网络问题资源竞争多个推理副本用podAntiAffinity打散到不同节点避免同节点争抢依赖排查镜像内推理报错时先核对训练环境与镜像内置依赖是否一致详见 tracking 模块的文档与部署 FAQ下一步方向基于 chart 自带的 Prometheus 指标接入告警规则给 Model Registry 配置权限收敛再把训练、部署串成定时流水线。【免费下载链接】mlflowThe open source AI engineering platform for agents, LLMs, and ML models. MLflow enables teams of all sizes to debug, evaluate, monitor, and optimize production-quality AI applications while controlling costs and managing access to models and data.项目地址: https://gitcode.com/GitHub_Trending/ml/mlflow创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考