在将PyTorch模型转换为图时,控制流可能导致图断裂。使用符号整数(SymInts)可以表示动态形状,允许模型根据输入动态调整。代理张量和直接使用输入张量两种方法各有优缺点,代理张量语法更规范,但可能效率较低。
TVM 更新至 0.21.0 版本,中文文档已同步。TVM 是一个支持多种硬件的深度学习编译框架。使用 TVMScript 创建 TensorIR 函数可以简化代码,支持动态形状和与 Python 的交互。Tensor Expression 提供了更简洁的计算描述方式。
torch.export()用于提前编译Python可调用对象,生成功能图。它利用TorchDynamo进行字节码追踪,AOT Autograd功能化图形,并通过torch.fx.graph提供图形表示。ExportedProgram包含GraphModule和图签名,支持动态形状和序列化。使用export_for_training()可处理非功能操作,但存在无法追踪的代码和缺失的假内核等限制。
本文介绍了PyTorch-XLA、TensorFlow图执行和PyTorch 2图执行等混合方法,Modular AI引擎支持动态形状,执行模型更快。使用桶和填充策略进行缓解时,XLA的编译时间显著降低,但Modular AI引擎在各种平台上的模型执行时间仍然比TensorFlow+XLA快2倍至4倍。
Modular开发了一种新方法来解决AI基础设施中碎片化的点解决方案问题。他们创建了一个“单一真相来源”,允许专家内核作者在架构和用例之间构建单个可组合,可扩展和可移植的代码库。该方法支持快速重用模式和代码,适用于问题的优化子变体,并易于在特殊情况下采用异类硬件功能。Modular的矩阵乘法和其他内核完全支持动态形状,并支持许多现有系统难以处理的其他形式的动态性。Modular方法提供了广泛的操作符通用融合,无需手动编写和维护变体,从而实现了通用性和可扩展性,无需重新编译系统,也无需成为编译器工程师。
本文介绍了在TensorRT中处理动态形状的方法,强调在导出ONNX模型时需指定动态维度。建议使用显式批处理模式和优化配置以提升性能,并提供了设置输入形状和构建引擎的示例代码。
完成下面两步后,将自动完成登录并继续当前操作。