🐻❄️实战:解析onnx模型保存为engine文件|from scratch
模型转换流程
模型转换是一个繁琐而重要的过程,它将第三方框架中的模型(例如 ONNX 格式)转换为可在 NVIDIA 设备上运行的模型,被称为引擎(Engine)。这个过程需要在代码中实例化多个对象,并按照一定顺序逐步配置参数。虽然繁琐,但每一步都至关重要。以下是关键步骤的摘要,如果你有兴趣,可以逐步手动实现这些步骤。
通过创建一个 Builder 对象来配置和构建 Config 和 Network。
接着,创建一个 Parser 对象,使用它来解析 ONNX 模型,并将模型的参数和权重信息复制到 Network 中。
接下来,使用 Builder 的
buildSerializedNetwork方法,传入 Network 和 Config 对象,生成一个序列化的 Execution Plan。最后,将这个 Execution Plan 序列化,并保存到文件中。
实战代码
整个代码目录如下:
├── config
│ └── Makefile.config
├── Makefile
├── models
│ ├── engine
│ │ └── sample.engine
│ └── onnx
│ └── sample.onnx
└── src
├── cpp
│ ├── main.cpp
│ ├── model.cpp
│ ├── model.hpp
│ ├── utils.cpp
│ └── utils.hpp
└── python
└── generate_onnx.pyMakefile.config
Makefile.configmain.cpp
main.cppmodel.cpp
model.cppmodel.hpp
model.hpputils.cpp
utils.cpputils.hpp
utils.hppgenerate_onnx.py
generate_onnx.pyMakefile
MakefileLast updated
Was this helpful?