告别命令行:用Python脚本封装trtexec,实现ONNX模型批量自动转换Engine文件
在AI模型部署的日常工作中,我们经常需要将训练好的ONNX模型转换为TensorRT的engine文件。这个过程看似简单,但当面对以下场景时,手动操作就显得力不从心:
- 需要批量转换数十个不同结构的ONNX模型
- 同一模型需要测试FP16/INT8等不同精度模式
- 要对比不同workspace大小对转换结果的影响
- 需要记录每次转换的详细日志和性能数据
本文将介绍如何用Python编写一个自动化脚本,将这些重复性工作全部交给程序处理。这个方案特别适合需要管理多个模型版本或频繁测试不同参数的AI工程师。
1. 环境准备与基础工具链
1.1 TensorRT工具链配置
确保系统中已安装以下组件并正确配置环境变量:
bash复制# 验证CUDA安装
nvcc --version
# 验证TensorRT安装
dpkg -l | grep tensorrt # Ubuntu
# 或检查Windows环境变量中的TensorRT路径
注意:不同版本的TensorRT对CUDA和cuDNN有特定要求,建议参考NVIDIA官方文档匹配版本。
1.2 trtexec基础使用
trtexec是TensorRT自带的命令行工具,基本转换命令如下:
bash复制trtexec --onnx=model.onnx --saveEngine=model.trt --fp16 --workspace=4096
常用参数说明:
| 参数 | 说明 | 典型值 |
|---|---|---|
--onnx |
输入ONNX模型路径 | model.onnx |
--saveEngine |
输出engine文件路径 | model.trt |
--fp16 |
启用FP16精度 | - |
--int8 |
启用INT8量化 | - |
--workspace |
GPU显存工作空间大小(MB) | 1024-8192 |
--explicitBatch |
显式批处理模式 | - |
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Python自动化脚本设计
2.1 脚本架构设计
我们设计一个具备以下功能的Python脚本:
- 模型遍历:自动扫描指定目录下的ONNX文件
- 参数配置:支持不同精度模式和workspace设置
- 子进程调用:安全执行trtexec命令
- 错误处理:捕获并记录转换失败情况
- 日志生成:保存详细的转换报告
python复制import subprocess
import glob
import os
from datetime import datetime
class TRTConverter:
def __init__(self, input_dir, output_dir):
self.input_di
