趣味のPython・深層学習

中級者のための実装集

PyTorch推論時間の高速化

PyTorchモデルの推論時間を最適化する | たった1行のコードで2倍の高速化

機械学習コンペティションでは、しばしば推論時間に厳しい制限があります。例えば、1100サンプルに対して120分以内にCPUで推論を完了しなければならない場合などです。このような状況下では、モデルの推論効率を最大限高める必要があります。 幸いなことに、PyTorchには推論時間を大幅に短縮するための簡単な方法が用意されています。

# モデルをロード
model = torch.load(MODEL_PATH, map_location=torch.device('cpu'))

# 推論用にモデルを最適化するマジックコード
model = torch.jit.optimize_for_inference(torch.jit.script(model.eval()))

このたった1行のコードにより、モデルが推論用に最適化されます。torch.jit.script()でモデルを計算グラフに変換し、torch.jit.optimize_for_inference()で推論に特化した最適化が行われます。 実際にEfficientVit-B1モデルで試した結果、100サンプルのサブセットに対する推論時間が612秒から301秒に短縮され、なんと51%もの高速化が実現しました。 機械学習コンペティションでは推論時間への要求が厳しいため、このような最適化はモデルのパフォーマンスを大きく左右します。 今回紹介した手法はたった1行のコードで実装できますが、その効果は計り知れません。PyTorchを使ってモデルを構築する際は、是非この最適化手法を取り入れて、推論パフォーマンスを最大化させましょう。