AI服务器MLOps配置:用Docker和MLflow管好训练环境

AI服务器做MLOps配置,核心不是一次性装齐所有平台,而是先把GPU容器运行环境和实验跟踪服务跑通。
本文面向单台或少量GPU服务器,从零完成Docker GPU支持、MLflow服务部署和训练任务接入跟踪,每一步都有命令和验证方式。
如果服务器数量多、需要Kubernetes调度,本文的Compose方案只适合作为起步验证。

先确认GPU和容器环境

在动手配置前,先确认驱动和显卡状态正常,否则后面所有容器步骤都会失败。

nvidia-smi

输出中能看到显卡型号、驱动版本和显存占用,说明驱动正常。
接着检查Docker是否已安装:

docker --version

如果提示命令不存在,先按系统发行版安装Docker。
这里不展开系统安装,默认Docker已可用。
准备条件还包括:至少一张NVIDIA显卡,服务器能访问镜像仓库,磁盘预留20GB以上用于镜像和实验数据。

装好NVIDIA容器运行时

普通Docker容器默认看不到GPU,需要安装NVIDIA Container Toolkit并配置为Docker的运行时。
以Ubuntu系统为例:

sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

配置完成后验证GPU容器是否可用:

docker run --rm --gpus all nvidia/cuda:12.2.0-base-ubuntu22.04 nvidia-smi

如果容器内能打印出和宿主机一致的显卡信息,
说明运行时配置成功。这一步失败时不要继续往下走,
先检查/etc/docker/daemon.json中是否出现nvidia运行时配置,
以及Docker服务是否重启成功。

用Docker Compose部署MLflow跟踪服务

MLflow是常用的实验跟踪和模型登记工具,适合作为MLOps的第一块拼图。
在服务器上建一个目录存放配置:

mkdir -p /opt/mlops/mlflow && cd /opt/mlops/mlflow

创建docker-compose.yml,用SQLite存储元数据,适合单机起步:

services:
  mlflow:
    image: ghcr.io/mlflow/mlflow:v2.11.3
    container_name: mlflow
    restart: unless-stopped
    ports:
      - "5000:5000"
    volumes:
      - ./mlruns:/mlruns
    command: >
      mlflow server
      --backend-store-uri sqlite:////mlruns/mlflow.db
      --default-artifact-root /mlruns/artifacts
      --host 0.0.0.0
      --port 5000

启动服务并检查状态:

docker compose up -d
docker compose ps
curl -s http://127.0.0.1:5000/health

health接口返回正常即表示服务可用。
浏览器访问http://服务器IP:5000能看到MLflow界面。注意镜像版本不要随意写成latest,固定版本便于后续复现;
端口5000若被占用,改成其他端口并同步修改训练代码中的跟踪地址。

在训练容器里接入跟踪

MLOps配置的关键是让训练任务自动上报参数、指标和产物。
以Python训练脚本为例,在训练镜像中安装MLflow客户端:

pip install mlflow==2.11.3

训练脚本开头指定跟踪服务地址,并记录一次实验:

import mlflow

mlflow.set_tracking_uri("http://127.0.0.1:5000")
mlflow.set_experiment("gpu-train-demo")

with mlflow.start_run():
    mlflow.log_param("lr", 0.001)
    mlflow.log_metric("loss", 0.42)
    mlflow.log_artifact("model.pt")

如果用Docker运行训练任务,记得带上--gpus all,并把跟踪地址改为宿主机可访问的地址。
运行后在MLflow界面中能看到实验记录,说明接入成功。训练容器内不要写127.0.0.1指向宿主机,容器里的回环地址指向容器自身,应使用宿主机IP或Compose服务名。

常见报错和避坑

  • 容器内nvidia-smi报permission denied:检查是否以--gpus all启动,以及当前用户是否在docker组中。
  • MLflow界面打不开:先docker compose logs mlflow查看启动日志,常见原因是SQLite路径权限或端口冲突。
  • 训练脚本连不上跟踪服务:确认训练容器和MLflow服务网络互通,防火墙放行5000端口,跟踪地址不要用容器内部回环地址。
  • 实验数据越积越多:SQLite适合单机验证,数据量增长后建议换成MySQL或PostgreSQL作为后端存储,迁移前做好mlruns目录备份。
  • 不要在生产训练容器里直接pip install后不固定版本,建议把依赖写进镜像构建文件,保证环境可复现。

验证整套配置是否可用

按顺序做三项检查:宿主机nvidia-smi正常;
GPU测试容器能输出显卡信息;
训练脚本运行后在MLflow界面出现对应的实验和指标。
三项都通过,说明AI服务器MLOps的基础链路已经跑通。
后续再考虑加入模型登记、自动化流水线和监控告警,不必一次配全。

如果训练任务需要多台服务器协同,单机Compose方案不够用,应转向Kubernetes加GPU调度器;
如果只是验证流程和记录实验,本文配置足够支撑起步。

分享到:
上一篇
AI服务器AIOps配置:从指标采集到告警落地的实操路径
下一篇
AI服务器上如何用Docker与Ollama搭好LLMOps运行环境
1
系统公告

关于香港云优质服务器IP地址更换的通知

尊敬的客户: 因原IP运营商大幅涨价,为避免成本转嫁至用户,我司决定更换IP服务商。本次更换后,您的续费价格将保持不变,且新IP网络质量与服务标准不受影响。新IP已分配至后台,即刻生效(更换的新IP都是香港原生IPv4)。 涉及 IP 段: 45.192.x.x 旧 IP 停用时间: 2026 年 12 月 1 日
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意