简介

  • onnx相关笔记

onnx推理

  • ONNX的推理分别需要装两种框架
    1
    2
    
    pip install onnxruntime       # CPU 版本
    pip install onnxruntime-gpu   # GPU 版本
    
  • 而且需要在保存pytorch模型的时候也需要指定cpu和gpu。
  • 这里推理就不需要pytorch框架来支持了,尤其是在容器部署的时候pytorch框架安装包非常大这会导致部署的镜像也很大,如果推理去掉pytorch框架的情况下镜像大小也会减少很多,大大减少部署难度。

onnx概述

  • 深度学习算法大多通过计算数据流图来完成神经网络的深度学习过程。 一些框架(例如CNTK,Caffe2,Theano和TensorFlow)使用静态图形,而其他框架(例如 PyTorch 和 Chainer)使用动态图形。
  • 但是这些框架都提供了接口,使开发人员可以轻松构建计算图和运行时,以优化的方式处理图。 这些图用作中间表示(IR),捕获开发人员源代码的特定意图,有助于优化和转换在特定设备(CPU,GPU,FPGA等)上运行

  • ONNX 的本质只是一套开放的 ML 模型标准,模型文件存储的只是网络的拓扑结构和权重(其实每个深度学习框架最后保存的模型都是类似的),脱离开框架是没办法对模型直接进行 inference 的

  • 为什么使用通用IR
    • 现在很多的深度学习框架提供的功能都是类似的,但是在 API、计算图和 runtime 方面却是独立的,这就给 AI 开发者在不同平台部署不同模型带来了很多困难和挑战,ONNX 的目的在于提供一个跨框架的模型中间表达框架,用于模型转换和部署。ONNX 提供的计算图是通用的,格式也是开源的。