MoE
前回、C++で実装したTensorRTプラグインを使ったMoEの推論処理の推論速度を比較する。 比較対象は、 Dense MoE Sparse MoE (自前実装CUDAカーネル) Sparse MoE (CUTLASS Grouped GEMM) の3パターンとする。 比較条件 SwinTransformerのStage 0/1をMoE化 Stag…
前回、Pythonで実装したエンジンビルドスクリプトで保存した.engineを読み込んで、TensorRTで推論する処理をC++で実装する。 推論処理 TensorRTのライブラリの使用がメインである。 デフォルトで、CUDA Graphを有効にしている。 CUDA Graphは、プラグインでC…
前回、実装したプラグインを使用して、カスタムノードを含むONNXをTensorRT の serialized engineに変換する。 dlshogiでは、C++でエンジンビルドを実装しているが、今回はPythonのtensorrtライブラリを使用して実装する。 生成したserialized engineを後でC…
前回、ONNXにエクスポートしたカスタムノードに対応する処理をTensorRTのプラグインで実装する。 TensorRTのプラグイン 公式ドキュメントに記載されている通り、プラグインクラスとプラグイン クリエーターを実装する。 プラグインがREGISTER_TENSORRT_PLUGI…
前回、PyTorchで実装したMoE対応のSwinTransformerモデルをTensorRTで推論できるように、ONNXにエクスポートする。最低限、grouped_mmのみをカスタムオペレータとすればよいが、router + dispatch + expert + combineを分離するとTensorRTのグラフとpluginの…
dlshogiのモデルはパラメータを増やすほど精度が向上することが60ブロック768フィルタのサイズまで確認できている。 しかし、探索速度が落ちるため、対局した際の強さは、40ブロック512フィルタのモデルには及ばない。MoE(Mixture of Experts)は、パラメータ…