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