HuggingFace Transformers 模型导出到 ONNX 格式
0. 引言
ONNX 是一种开放格式,用于表示机器学习模型。ONNX 定义了一组通用运算符(机器学习和深度学习模型的构建基块)和通用文件格式,使 AI 开发人员能够将模型与各种框架、工具、运行时和编译器一起使用。了解更多信息
官网地址: https://onnx.ai/
1. 使用 Optimum
在生产环境中部署 🤗 Transformers 模型通常需要将模型导出为可在专用运行时和硬件上加载和执行的序列化格式,或者可以从中受益。
🤗 Optimum 是 Transformer 的扩展,它允许通过其 exporters 模块将模型从 PyTorch 或 TensorFlow 导出为 ONNX 和 TFLite 等序列化格式。🤗 Optimum还提供了一组性能优化工具,以最高效率在目标硬件上训练和运行模型。
今天尝试使用 🤗 Optimum 将 Transformer 模型导出🤗到 ONNX。
ONNX(开放神经网络交换)是一种开放标准,它定义了一组通用运算符和通用文件格式,用于表示各种框架(包括 PyTorch 和 TensorFlow)中的深度学习模型。当模型导出为 ONNX 格式时,这些运算符用于构造计算图(通常称为中间表示),该图表示通过神经网络的数据流。
通过公开具有标准化运算符和数据类型的图形,ONNX 可以轻松地在框架之间切换。例如,可以在 PyTorch 中训练的模型导出为 ONNX 格式,然后导入到 TensorFlow 中(反之亦然)。
导出为 ONNX 格式后,模型可以:
-
通过图形优化和量化等技术针对推理进行了优化。
-
通过 ORTModelForXXX 类与 ONNX 运行时一起运行,这些类遵循与您在 Transformer 中🤗习惯使用的 API 相同的 AutoModel API。