核心要点

  • 能区分容器 vs 虚拟机及在 ML 中的用途

  • 理解 Docker 封装训练/推理环境

  • 知道 K8s 编排多副本 serving 与 GPU 调度

  • 能说明镜像版本化与 CI/CD 集成

简要回答

容器(Docker)打包 ML 依赖与代码为可移植镜像;Kubernetes 编排调度、扩缩容与 GPU 共享,实现环境一致与弹性 serving。

标准回答

一、先给出结论和背景

  • 虚拟化(VM):Hypervisor 隔离完整 OS,强隔离、较重,适合多租户硬隔离。
  • 容器(Container):共享宿主机内核,轻量、秒级启动,镜像分层缓存——ML 主流选择

二、拆开关键步骤和判断点

  • MLOps 的支持:| 能力 | 说明 |
    |------|------|
    | 环境一致 | 开发/CI/生产同一镜像,消除「本地能跑」 |
    | 可移植 | 云/本地/边缘同一 artifact |
    | 版本化 | 镜像 tag 对应模型+代码版本 |
    | 编排 | K8s Deployment/HPA 自动扩缩容 |
    | GPU | NVIDIA device plugin 调度 GPU 容器 |
    | 微服务 | 预处理、推理、后处理拆分解耦 |
  • 典型流程:1. Dockerfile pin CUDA + Python 依赖
  1. CI 构建镜像 push registry
  2. K8s manifest/Helm 部署;KServe/BentoML 封装推理
  3. 金丝雀更新 image tag

三、补上落地边界和取舍

  • 注意:镜像体积(多阶段构建)、GPU 驱动与 CUDA 版本匹配、有状态训练需挂载 PVC。详见 MLOps 入门部署实践

面试里要把 容器化与虚拟化如何支撑 MLOps 实践 放到训练到上线的链路里说:离线指标只是第一步,还要补特征一致性、版本管理、灰度实验、监控漂移和回滚方案。这样能证明你理解的是生产系统,而不是只会背流程图。

回答思路

  • 【定义】用一句话说清「容器化与虚拟化如何支撑 MLOps 实践」

  • 【原理】讲清关键机制或步骤(2~3 点)

  • 【例子】举一个真实项目、论文或产品中的例子

  • 【对比】与易混淆概念或替代方案比较(如有)

  • 【收尾】总结适用场景 + 一个局限或风险

延伸学习

延伸阅读:部署实践MLOps 入门。工具:BentoMLPyTorch。术语:MLOps可观测性

常见误区

⚠️ 常见踩坑

误区一:容易答偏的地方:把容器当成虚拟机用(每容器塞 systemd);镜像不设 tag 用 latest;忽视 GPU 资源 request/limit。

追问

追问 1训练用容器有何坑?

分布式训练需 hostNetwork/NCCL 调优;大数据集用 PVC 或 S3 fuse 而非打进镜像;checkpoint 写持久卷防 pod 重启丢失。

追问 2Serverless 容器适合 ML 吗?

轻量 CPU 模型、低频调用可行(冷启动加 provisioned concurrency)。大 GPU 模型、低延迟高 QPS 仍用常驻 K8s Deployment。

追问 3VM 何时仍需要?

强合规隔离、不同客户硬隔离、特殊驱动(部分裸金属 GPU 性能更优)。容器跑在 VM 上是常见多层隔离。

🔗 相似问题

同一考点的不同问法,换着练更稳

延伸学习

按主题分类的相关资源,便于系统复习