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