核心要点

  • 能区分容器 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 依赖
  2. CI 构建镜像 push registry
  3. K8s manifest/Helm 部署;KServe/BentoML 封装推理
  4. 金丝雀更新 image tag

注意:镜像体积(多阶段构建)、GPU 驱动与 CUDA 版本匹配、有状态训练需挂载 PVC。详见 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 上是常见多层隔离。

🔗 相似问题

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

没找到想看的面试题?把你想看的告诉我们 →

延伸学习

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