单个最快算子为何不组成最快引擎

TensorRT 构建涉及图变换、融合、kernel、内存布局和量化,这些选择互相影响。一个单独计时更快的 kernel,放进完整图后可能破坏融合或增加搬运;低精度选择还可能超过应用可接受误差。原文因此将优化对象从局部 tactic 扩展到完整构建路线。

默认启发式来自代表性模型。为一个新模型补例外可能让另一个模型回退,规则不断叠加也难维护。Global Performance Tuner 的出发点是允许不同模型和部署环境走不同路线,而不是把所有成功经验硬塞进同一默认策略。

候选可达性与搜索选择是两件事

Part 1 将编译器抽象为生成候选的 builder 与选择候选的 search。即使搜索完美,也选不到构建器从未生成的引擎。例如按通道数阈值提前过滤某个 convolution tactic,会让包含它的最佳端到端方案不可达。反过来,扩大候选空间而只按局部计时选择,也可能错判完整引擎表现。

可配置路线提供不同 pass 与调度选择组合。每个完整候选按给定参考数据、误差度量与容差验证输出,再测端到端时间;只在满足准确率条件的集合里选择更快者。原文的“全局”描述扩展后的解空间,不是证明实现穷举了所有可能程序。构建时间预算也会限制实际探索。

精度约束与测量环境决定结论

数学模型假设执行环境固定,但实际 GPU 频率、温度、功耗和系统负载都会引入测量噪声。文章讨论重复测量及噪声假设,是为了说明时间函数的含义,不能直接把一个短基准的最低值当稳定收益。

我的理解是,这个框架适合已有固定构建路线遇到模型特定回退时,用来区分“候选根本没出现”和“候选被错误评估”。Part 1 主要给出概念与数学解释,没有提供可转用的 tuner 加速数字;具体搜索算法和使用方法留在后续材料。准确率数据覆盖、容差选择与搜索预算决定可接受引擎的边界,不能用通过有限验证代替所有输入上的数值保证。

来源:原始工程文章