第七章 模型部署 Deploying Pytorch to Production 之二
ONNX部署方案
ONNX GitHub地址
开放神经网络交换(Open Neural Network Exchange)简称ONNX是微软和Facebook提出用来表示深度学习模型的开放格式。所谓开放就是ONNX定义了一组和环境,平台均无关的标准格式,来增强各种AI模型的可交互性。
ONNX文件不仅仅存储了神经网络模型的权重,同时也存储了模型的结构信息以及网络中每一层的输入输出和一些其它的辅助信息。 ONNX使用的是Protobuf这个序列化数据结构去存储神经网络的权重信息。
Protobuf是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。
ONNXf几个组件:
- 可扩展计算图模型的定义
- 标准数据类型的定义
- 内置运算符的定义
示例代码片断
# 转换模型为onnx
model = vgg16(pretrained=True)
example_input = torch.rand(1, 3, 224, 224)
onnx_model = torch.onnx.export(model, example_input, "vgg16.onnx")
# 加载
import onnx
model = onnx.load("vgg16.onnx")
onnx.checker.check_model(model)
onnx.helper.printable_graph(model.graph)
移动端库方案
现在智能移动端基本上随处可见,因此也有相关的智能移动端的库支持AI模型的部署。
Pytorch Mobile为iOS,Android和Linux等移动端应用提供了相关的预处理和集成需要的接口。
网友评论