核心要点
能区分容器 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 容器 |
| 微服务 | 预处理、推理、后处理拆分解耦 |
典型流程:
- Dockerfile pin CUDA + Python 依赖
- CI 构建镜像 push registry
- K8s manifest/Helm 部署;KServe/BentoML 封装推理
- 金丝雀更新 image tag
注意:镜像体积(多阶段构建)、GPU 驱动与 CUDA 版本匹配、有状态训练需挂载 PVC。详见 MLOps 入门、部署实践。
回答思路
【定义】用一句话说清「容器化与虚拟化如何支撑 MLOps 实践」
【原理】讲清关键机制或步骤(2~3 点)
【例子】举一个真实项目、论文或产品中的例子
【对比】与易混淆概念或替代方案比较(如有)
【收尾】总结适用场景 + 一个局限或风险
常见误区
⚠️ 常见踩坑
把容器当成虚拟机用(每容器塞 systemd);镜像不设 tag 用 latest;忽视 GPU 资源 request/limit。
追问
追问 1:训练用容器有何坑?
分布式训练需 hostNetwork/NCCL 调优;大数据集用 PVC 或 S3 fuse 而非打进镜像;checkpoint 写持久卷防 pod 重启丢失。
追问 2:Serverless 容器适合 ML 吗?
轻量 CPU 模型、低频调用可行(冷启动加 provisioned concurrency)。大 GPU 模型、低延迟高 QPS 仍用常驻 K8s Deployment。
追问 3:VM 何时仍需要?
强合规隔离、不同客户硬隔离、特殊驱动(部分裸金属 GPU 性能更优)。容器跑在 VM 上是常见多层隔离。
🔗 相似问题
同一考点的不同问法,换着练更稳
没找到想看的面试题?把你想看的告诉我们 →
延伸学习
按主题分类的相关资源,便于系统复习
