Model Deployment
模型部署是指将已训练模型投入生产,以便对新数据进行预测。内容涵盖云端和边缘端目标、导出、发布和监控。
模型部署是将训练好的机器学习模型投入生产环境的过程。在生产环境中,应用会向模型发送新数据,并根据模型预测采取行动。部署涵盖选择模型的运行位置、将模型转换为目标运行时支持的格式、通过 API 或应用连接输入和输出、安全地发布新版本,以及在真实用户依赖模型后监控其行为。在笔记本中表现出色的模型,在部署之前仍只是一次实验;部署是机器学习运维 (MLOps)中数据科学开始面对延迟、成本、正常运行时间和安全性等软件工程约束的阶段。
模型的部署位置#
- 云端部署:模型运行在 REST 或 gRPC 端点背后的服务器上,通常由模型服务系统处理请求批处理,并根据需求扩展副本。它适用于大型模型和流量变化较大的场景,但每个请求都需要经过一次网络往返。
- 边缘部署:模型运行在采集数据的设备上,例如手机、摄像头、机器人或 NVIDIA Jetson 模块。输入不会离开设备,因此隐私更有保障;模型也能在离线状态下继续运行,但受限于内存和功耗,通常需要压缩模型。
- 无服务器部署:平台按需启动实例,并在空闲时将实例数量缩减至零;这样可以在没有请求时免除费用,但第一个请求会遇到冷启动延迟。
- 批处理部署:通过定时任务一次性对大型数据集进行评分,例如每晚生成产品推荐;这类场景更看重吞吐量,而不是单个请求的处理速度。
Ultralytics Platform会将训练好的 YOLO 模型部署到专用端点,支持42 个区域中的任意区域,每个区域都有自己的 URL 和监控功能;默认资源规格的端点在空闲时会缩容至零。目标平台的选择取决于应用的几个问题,Ultralytics Academy 的课程选择部署目标会详细讲解这些问题:
为生产环境准备模型#
训练框架注重灵活性,因此生产模型通常会导出为推理引擎可高效运行的格式,例如具有可移植性的 ONNX、适用于 NVIDIA GPU 的 TensorRT、适用于 Intel 硬件的 OpenVINO,或者用于手机的 LiteRT 和 Core ML。当目标设备资源有限时,可以使用模型量化和模型剪枝进一步缩小模型。随后,将导出的模型及其预处理代码与固定版本的依赖项打包在一起,通常放入 Docker容器,以确保它在笔记本、服务器或 Kubernetes集群上的运行方式一致。导出训练好的检测器,并在发布前加载导出的文件快速检查,操作如下:
from ultralytics import YOLO
# Load a trained model (replace with your own best.pt)
model = YOLO("yolo26n.pt")
# Export to ONNX, a portable format that many inference engines run
path = model.export(format="onnx")
print(f"Deployable model: {path}")
# Smoke-test the exported file with the same API before shipping it
onnx_model = YOLO(path)
results = onnx_model("https://ultralytics.com/images/bus.jpg")
results[0].save(filename="bus_onnx.jpg")导出调用会返回新 yolo26n.onnx 文件的路径,保存的图像则确认导出的文件能够加载并进行检测。团队还会在验证集上比较导出模型与原始模型的准确率和速度,因为格式转换和降低精度可能会轻微改变输出。
发布新模型版本#
新模型版本会存储在模型注册表中,并逐步发布,因为离线指标无法涵盖所有生产环境条件。在影子部署中,新模型会接收一份实时流量副本,而当前模型仍负责回答用户请求,因此可以在不承担风险的情况下对比两个模型。接着,金丝雀发布会将少量真实流量路由到新版本;只有当错误率、延迟和预测质量均保持正常时,才会逐步扩大流量占比。A/B 测试则用于衡量新版本对业务结果的影响。让先前版本始终保持可部署状态,可以通过更改配置回滚,而不必紧急重新构建:
模型部署与相关术语的区别#
- 模型训练:从数据集中学习模型权重。模型部署从训练完成的权重开始。
- 模型服务:用于响应预测请求的运行时层。它是模型部署的一部分,部署还包括打包、发布和监控。
- 推理延迟:已部署模型计算每个单独预测所需的时间,也是部署必须满足的主要要求之一。
部署后的监控#
环境发生变化时,已部署模型可能会在毫无察觉的情况下退化。模型监控会跟踪延迟、吞吐量、错误率和硬件使用情况等运维指标,通常借助 Prometheus和 Grafana 等工具,同时监控输入和预测的统计信息。监控发现问题后,团队会标注新的失败案例、重新训练,并让新版本经过同一发布流程。输入统计信息可以最早发出预警:数据漂移(例如摄像头转到了新的角度,或照明条件变为冬季光线)会体现在这些统计信息中,早于生产数据真实标签到达并用于测量准确率的时间,早则几天,晚则几周。










