Calibration file
1 简介
我们在使用Tensorrt的隐形量化时,需要生成一个cache文件,用于onnx生成engine文件使用。如果我们使用trtexec
来将onnx文件生成为和我们的GPU相关的隐形量化后的engine文件时需要参数 参考A.2.1.2. Serialized Engine Generation A.2.1.4. Commonly Used Command-line Flags
例如
1 | trtexec --onnx=test.onnx --calib=test.cache --int8 --saveEngine=test.engine |
上面的命令就是使用到了隐形量化的cahe文件。这个文件如何生成的参考我之前的文章 TensorRT INT8量化代码
这里只是补充说明一下生成的cache文件内容
一个校准文件(就是我们上面的test.cache文件)存储每个网络张量的激活量表。激活量表是使用从校准算法生成的动态范围来计算的,换句话说,ABS(max_dynamic_range) / 127.0f
。
校准文件名为CalibrationTable<NetworkName>
,其中<NetworkName]
是您的网络名称,例如mnist
。该文件位于TensorRT-x.x.x.x/data/mnist
目录中,其中x.x.x.x
是您安装的TensorRT
版本。
CalibrationTable
内容包括:
1 | TRT-7000-EntropyCalibration2 |
这里:
<TRT xxxx>-<xxxxxxx>
TensorRT版本后面是校准算法,例如EntropyCalibration2
。
<layer name>
:值对应于网络中每个张量校准期间确定的浮点激活标度。
CalibrationTable
文件是在运行校准算法的构建阶段生成的。创建校准文件后,可以在后续运行时读取该文件,而无需再次运行校准。您可以为readCalibrationCache()
提供实现,以便从所需位置加载校准文件。如果读取的校准文件与校准器类型(用于生成文件)和TensorRT版本兼容,则构建器将跳过校准步骤并使用校准文件中的每个张量尺度值。