みなさんこんにちは。私は推論速度とモデルサイズの両方を最適化するために、トランスフォーマー系のニューラルネットワークの最適化に取り組んできましたが、そろそろ行き詰まってしまった感覚があり、何か助言をいただけると嬉しいです。これまでに、重みをFP16に変換しました(サイズが約2倍縮小)。その後、推論速度のためにONNX Runtimeで書き出して最適化し、非構造・構造の両方によるプルーニング、さらにONNXグラフの最適化も試しましたが、どれも大きな追加の効果は得られず、モデルあたり依然として約162 MBのままです。ここまで来ると、次のステップとして、低ランク因数分解(SVD/LoRAスタイルの圧縮)、より攻めた量子化(GPTQ、AWQ、またはSmoothQuantのようなINT8/INT4)、小さな学生モデルへの知識蒸留、あるいはTensorRTやFlashAttentionのような、よりハードウェア/ランタイムに特化した最適化などを検討していますが、FP16+プルーニングの後に、本当に現実的な改善につながるのはどれなのか確信が持てません。この段階で、すでに試した以外の「トランスフォーマー圧縮で実際にうまくいきやすい」アプローチは何なのか、また、低ランク手法は事後(ポスト)トレーニングでも本当に有効なのか、それともこの段階での実質的な大きな勝ち筋は蒸留/量子化だけになりがちなのか、ぜひ教えてください。
[link] [comments]
