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