torch.jit.set_fusion_strategy¶
- torch.jit.set_fusion_strategy(strategy)[源代码]¶
设置在融合期间可以发生的特殊化类型和数量。
用法:提供一对 (类型,深度) 的列表,其中类型是“STATIC”或“DYNAMIC”之一,深度是整数。
- 行为 - 静态与动态
在 STATIC 融合中,融合的运算符被编译为具有固定输入形状。形状是根据一些初始分析运行来确定的。在 DYNAMIC 融合中,融合的运算符被编译为具有可变输入形状,因此可以有多种形状。
在这两种情况下,我们还会在新的步幅行为、设备或数据类型上重新编译。
- 行为 - 回退函数和深度
当输入不匹配专门编译的运算符所需的格式时,它将运行回退函数。回退函数将根据观察到的张量形状递归地进行编译和专门化。由于编译可能很慢,因此提供了“深度”参数来限制可以编译的专门化数量,然后放弃重新编译并回退到完全未融合、未专门化的实现。
(类型,深度) 对的列表控制专门化类型和专门化数量。例如:[(“STATIC”,2),(“DYNAMIC”,2)] 表示前两种专门化将使用静态融合,接下来的两种专门化将使用动态融合,并且满足这 4 种选项中任何一种的输入都将运行未融合的实现。
注意:将来,如果添加了更多融合后端,可能会为特定融合器提供更细粒度的 API。