什么是模型量化,有什么用,要怎么做? 从FP32计算精度变成更小的精度,加快推理速度。
ONNX(Open Neural Network Exchange)是一个开放的深度学习模型交换格式,主要特点和作用包括:
-
开放标准 • 由微软和 Facebook 等公司共同发起,已捐赠给 Linux 基金会。 • 定义了一套统一的 protobuf(Protocol Buffers)格式,用来描述神经网络的计算图、算子(Operators)及其参数。
-
跨框架互操作 • 可以把 PyTorch、TensorFlow、MXNet、Keras 等框架训练出的模型导出为
.onnx文件。 • 然后在任何支持 ONNX 的推理引擎上加载、运行,打破了模型与框架绑定的局限。 -
丰富的运算符生态 • ONNX 社区不断扩充算子(Conv、Gemm、BatchNorm、LSTM……)标准,涵盖绝大多数深度学习用例。 • 也支持自定义算子,满足特殊需求。
-
高效的推理引擎:ONNX Runtime • ONNX Runtime(由微软维护)针对 CPU、GPU、TensorRT、OpenVINO、ArmNN 等后端做了大量优化。 • 加载
.onnx模型后即可快速推理,不依赖原始训练框架。 -
在 FunASR 中的应用 • 我们先用 PyTorch 等框架训练或下载好 Paraformer、Punc、VAD 等模型,然后导出为 ONNX。 • 推理阶段不再依赖 PyTorch,直接用 ONNX Runtime 进行声学特征提取、编码器/解码器计算,大幅降低依赖并提升部署灵活性。
简单来说,ONNX 就是“先把模型存成一个通用文件(.onnx),再用高性能的 ONNX Runtime 来做推理”,可以让模型更容易在不同平台、不同硬件上部署和加速。