torch.jit.optimize_for_inference¶
- torch.jit.optimize_for_inference(mod, other_methods=None)[source][source]¶
执行一系列优化过程,以便对模型进行推理优化。
如果模型尚未被冻结,optimize_for_inference 将自动调用 torch.jit.freeze。
除了应该在任何环境下都能加速模型的通用优化之外,推理准备过程还会内置构建特定的设置,例如 CUDNN 或 MKLDNN 的存在,并且将来可能会进行一些在一个机器上加速但在另一个机器上减速的转换。因此,在调用 optimize_for_inference 后不支持序列化,且不保证其可用性。
这仍然处于原型阶段,并且可能导致您的模型变慢。目前主要针对的用例是 CPU 上的视觉模型,在 GPU 上的针对性较少。
示例(优化包含 Conv->Batchnorm 的模块)
import torch in_channels, out_channels = 3, 32 conv = torch.nn.Conv2d( in_channels, out_channels, kernel_size=3, stride=2, bias=True ) bn = torch.nn.BatchNorm2d(out_channels, eps=0.001) mod = torch.nn.Sequential(conv, bn) frozen_mod = torch.jit.optimize_for_inference(torch.jit.script(mod.eval())) assert "batch_norm" not in str(frozen_mod.graph) # if built with MKLDNN, convolution will be run with MKLDNN weights assert "MKLDNN" in frozen_mod.graph
- 返回类型