旧版 notebook¶
现有许多 notebook 演示了 Torch-TensorRT 中可用的不同模型转换、功能和前端。
Notebooks¶
使用 Torch-TensorRT 编译 CitriNet¶
Citrinet 是一种用于语音转文本识别任务的声学模型。它是 QuartzNet 的一个版本,扩展了 ContextNet,利用子词编码(通过 Word Piece 分词)和 Squeeze-and-Excitation (SE) 机制,因此比 QuartzNet 模型更小。Citrinet 模型接收音频片段,并将其转录为字母、字节对或词片序列。
此 notebook 演示了使用 Torch-TensorRT 优化预训练的 CitriNet 模型的步骤,并运行它以测试所获得的加速效果。
使用 Torch-TensorRT 编译 EfficientNet¶
EfficientNet 是一种前馈 CNN,旨在通过使用“一种使用简单而高效的复合系数统一扩展深度/宽度/分辨率所有维度的缩放方法”,实现比替代架构更好的性能和准确性。
此 notebook 演示了使用 Torch-TensorRT 优化预训练的 EfficientNet 模型的步骤,并运行它以测试所获得的加速效果。
使用 Hugging Face BERT Transformer 的掩码语言建模 (MLM),由 Torch-TensorRT 加速¶
“BERT 是一个在大规模英文语料库上以自监督方式预训练的 Transformer 模型。通过这种方式,模型学习了英语语言的内在表示,然后可以用于提取对下游任务有用的特征:例如,如果您有一个带标签的句子数据集,您可以使用 BERT 模型产生的特征作为输入来训练一个标准分类器。” (https://hugging-face.cn/bert-base-uncased)
此 notebook 演示了在来自 Hugging Face 的预训练 BERT transformer 上使用 Torch-TensorRT 编译 TorchScript 模块的步骤,并运行它以测试所获得的加速效果。
使用 Torch-TensorRT 在 C++ 中部署模型¶
此示例展示了如何加载一个预训练的 ResNet-50 模型,将其转换为 Torch-TensorRT 优化的模型(通过 Torch-TensorRT Python API),将模型保存为 torchscript 模块,最后使用 PyTorch C++ API 加载和部署该模型。
使用 Torch-TensorRT 编译 ResNet50¶
此 notebook 演示了在预训练的 ResNet-50 网络上使用 Torch-TensorRT 编译 TorchScript 模块的步骤,并运行它以测试所获得的加速效果。
在 Torch-TensorRT 中使用动态形状¶
在 Torch-TensorRT 中使用动态形状张量非常简单。假设您正在使用 torch_tensorrt.compile(...)
函数来编译一个 torchscript 模块。该函数的一个参数是 input
:它根据预期的形状、数据类型和张量格式来定义模块的输入:torch_tensorrt.Input.
在本演练中,我们只需要三个关键字参数:min_shape、opt_shape 和 max_shape。
torch_tensorrt.Input(
min_shape=(1, 224, 224, 3),
opt_shape=(1, 512, 512, 3),
max_shape=(1, 1024, 1024, 3),
dtype=torch.int32
format=torch.channel_last
)
...
在此示例中,我们将使用一个简单的 ResNet 模型来演示此 API 的用法。
在 Torch-TensorRT 中使用 FX 前端¶
此示例旨在演示使用 FX 方便地将 PyTorch 模型降级到 TensorRT 的整体流程。
使用 Torch-TensorRT 的 FX 前端编译 PyTorch 模型¶
此示例旨在演示通过 FX 和现有的基于 FX 的工具将 PyTorch 模型降级到 TensorRT 的整体流程。
使用 Torch-TensorRT 编译 LeNet¶
此 notebook 演示了在一个简单的 LeNet 网络上使用 Torch-TensorRT 编译 TorchScript 模块的步骤。
在 Torch-TensorRT 中使用量化加速深度学习模型¶
模型量化是一种流行的优化方法,它能减小模型大小,从而加速推理,也为在计算能力较低的设备(如 Jetson)上部署提供了可能性。简而言之,量化是一个将输入值
从一个较大集合映射到较小集合中的输出值的过程。在本 notebook 中,我们演示了在 Torch-TensorRT 中量化深度学习模型时可以采用的工作流程。该 notebook 以 Mobilenetv2 为例,在 Imagenet 数据集的一个子集(名为 Imagenette,包含 10 个类别)上进行分类任务。
使用 Torch-TensorRT 进行目标检测 (SSD)¶
此 notebook 演示了在预训练的 SSD 网络上使用 Torch-TensorRT 编译 TorchScript 模块的步骤,并运行它以测试所获得的加速效果。
使用 Torch-TensorRT 在 INT8 中部署量化感知训练模型¶
量化感知训练 (QAT) 通过量化权重和激活层来模拟训练过程中的量化。这有助于减少将 FP32 训练的网络转换为 INT8 以进行更快推理时的精度损失。QAT 在图中引入了额外的节点,这些节点将用于学习权重和激活层的动态范围。在本 notebook 中,我们演示了在 Torch-TensorRT 中从训练到推理 QAT 模型的以下步骤。