人工智能导论 第 7 章 · 第七节
课程 › 第 7 章 › 第七节 部署工具部署流程ONNX 推理三种形态部署命令部署示例
第 7 章 人工智能实践 · 第七节

模型部署实践

把训好的模型变成别人能用的服务
本 节 知 识 点
  1. 57三种常用部署工具
  2. 58开发与部署的五个阶段
  3. 59用 ONNX 做推理验证
  4. 60三种部署形态
  5. 61部署命令速览
  6. 62MobileNetV2 推理示例
57
第 7 章 · 第七节

三种常用部署工具

两个是服务程序,一个是通用的模型格式。

第 57 页 常用的模型部署工具

服务程序把模型跑起来,格式负责搬运模型

工具是什么怎么用
TensorFlow Serving为 TensorFlow 模型做的服务程序模型存成 SavedModel 格式,用 Docker 启动
TorchServe为 PyTorch 模型做的服务程序先把模型打包成 .mar 文件,再启动服务
ONNX和框架无关的模型文件格式从训练框架导出,交给各种推理引擎运行
服务程序

一直开着,别人发来一张图或一段文字,它就调用模型算出结果送回去。

模型格式

不管用哪个框架训练,导出成这个格式,别的程序都能读懂。

ONNX 只是一种文件格式,本身不是完整的部署方案,还要配上推理引擎才能跑起来。推理引擎是专门运行模型的程序,比如第 59 页用到的 onnxruntime。

关键术语

ONNXOpen Neural Network Exchange
开放神经网络交换格式,2017 年由微软和 Facebook 发起。
推理Inference
拿训练好的模型对新数据算出结果,也就是使用模型。

打个比方

服务程序像一家开着门的餐馆,客人点单,后厨做好端出来。ONNX 像一种标准的外卖餐盒,不管哪家店做的菜,装进去都能送到别处加热。

知道更多TorchServe 已停止更新

2025 年 8 月,TorchServe 的代码仓库被设为只读,官方说明不再更新,也不再修补安全漏洞。它的打包、启动流程仍可以拿来学习,做实际项目时要选还在维护的工具。

58
第 7 章 · 第七节

开发与部署的五个阶段

从训练出模型,到上线以后的日常看护。

第 58 页课件

重 点上线以后还要一直看护

第五个阶段运行治理要一直做下去,盯着日志、监控和告警。用户的数据变了、业务要求变了,模型就要重新训练、重新发布,图下方那条回流的箭头说的就是这件事。

关键术语

灰度发布Canary Release
新版本先给一小部分用户用,没问题再逐步放给所有人。
回滚Rollback
新版本出了问题,马上换回上一个能用的版本。

打个比方

新菜上市,餐馆先在一家分店试卖一周,顾客反应好再推到所有分店,卖出问题就马上换回老菜单。灰度发布和回滚就是这两招。

59
第 7 章 · 第七节

用 ONNX 做推理验证

加载模型、整理输入、计算,再把得分变成概率。

第 59 页 这段程序做了哪几件事

以 MobileNetV2 识别一张图片为例

  1. 加载模型 用 onnxruntime 读入 .onnx 文件,查看它要什么样的输入。
  2. 整理输入 图片转成红绿蓝三色,缩放到 224 × 224 像素,按训练时用的平均值和波动幅度统一尺度,再按“第几张图、哪一种颜色、第几行、第几列”的顺序排好。
  3. 执行推理 把整理好的数交给模型,得到 1000 个类别各自的得分。
  4. 整理结果 用 SoftMax 把得分变成概率,挑出最大的前 5 个,换成类别名。
类别得分SoftMax 之后的概率
萨摩耶2.00.66
博美犬1.00.24
荷兰毛狮犬0.10.10
表里的得分是演示用的,只取三个类别:先算 e(约 2.718)的“得分”次方,再各自除以它们的总和,三个概率加起来等于 1。

关键术语

SoftMaxSoftMax
把一组可正可负的得分变成一组加起来等于 1 的概率,得分越高,概率越大。
Top-5Top-5
概率最大的前五个候选。

重 点输入要和训练时一模一样

训练时怎么缩放、怎么统一尺度,推理时就得原样照做。红绿蓝的顺序弄反、尺度没统一,程序不会报错,但模型看到的是一张“怪图”,结果会很离谱。

知道更多为什么先在本地验证

导出成 ONNX 以后,先在自己电脑上拿几张图比一比。原来的模型和 ONNX 文件给出的结果一样,才说明导出没出问题,才能往服务器上放。

60
第 7 章 · 第七节

三种部署形态

本地、云端、边缘端,按场景权衡着选。

第 60 页课件

打个比方

医院把病历模型装在自己机房里,数据不出医院,是本地部署。网购 App 的推荐模型放在云上,大促时临时多租机器,是云端部署。手机相册在本机识别人脸,是边缘端部署。

重 点三样难以兼得

数据要多安全、结果要多快、花多少钱,这三件事很难同时做到最好。也可以组合起来用:设备上先粗筛,可疑的再送到云端细看。

随堂练习

流水线上的摄像头要在几十毫秒内判断零件合不合格,车间网络时好时坏。最适合哪种部署?

  1. 云端部署
  2. 边缘端部署
  3. 把图片寄给总部人工看
  4. 不部署
查看答案
答案 B。反应要快又不能依赖网络,模型装在摄像头旁边的设备上最合适。云端要经过网络来回,网络一卡就耽误了。
61
第 7 章 · 第七节

部署命令速览

几条命令各干一件事:启动服务、打包模型、导出格式。

第 61 页 这几条命令让电脑做什么

三个工具,各一条关键命令

  1. 启动 TensorFlow Serving 用 Docker 运行 TF Serving 的镜像,让容器读到本机存模型的文件夹,在 8501 端口等别人来请求。
  2. 给 TorchServe 打包 用 torch-model-archiver 把模型权重和一个处理程序打成一个 .mar 文件,启动服务时读它。
  3. 导出 ONNX 在训练框架里把模型存成 .onnx 文件,交给推理引擎去运行。
docker run -p 8501:8501 \
  --mount type=bind,source=/path/to/saved_model,target=/models/my_model \
  -e MODEL_NAME=my_model tensorflow/serving
端口谁在用特点
8500TF Serving 的 gRPC 接口传得快,适合大量请求
8501TF Serving 的 REST 接口好调试,各种语言都能调用
8080、8081TorchServe 的推理、管理接口一个接请求,一个管模型

关键术语

端口Port
一台电脑上区分不同服务的编号,像大楼总机后面的分机号。
RESTREST API
用网址加普通的网络请求来调用服务,浏览器、手机 App 都能直接发。
gRPCgRPC
谷歌推出的一种远程调用方式,传得快,适合服务器之间大量通信。

重 点命令不用背

这些命令随时能在文档里查到。要弄明白的是每条命令让电脑做了什么:启动一个服务,把模型打包,或者换一种文件格式。

62
第 7 章 · 第七节

MobileNetV2 推理示例

一张萨摩耶的照片,模型给出前五个候选。

第 62 页课件

重 点Top-5 的结果怎么读

第一名萨摩耶是 0.8175,第二名博美只有 0.0805。第一名远远领先,说明模型很有把握。如果前三名都在 0.3 左右,就说明它拿不准。

关键术语

MobileNetV2MobileNetV2
谷歌 2018 年推出的轻量图像识别网络,只有三百多万个参数,为手机这类设备设计。

随堂练习

图中 Top-5 的五个概率加起来约是多少?

  1. 正好是 1
  2. 约 0.95,其余约 0.05 分给了另外 995 类
  3. 约 0.5
  4. 大于 1
查看答案
答案 B。五个数加起来是 0.9485。1000 个类别都分到了概率,剩下的分散在其余 995 类上。
保山学院·人工智能教研室·曹鼎鼎