TadaoYamaokaの開発日記

個人開発しているスマホアプリや将棋AIの開発ネタを中心に書いていきます。

MoE

dropless MoE(Mixture of Experts)を試す その6(推論速度比較)

MoE

前回、C++で実装したTensorRTプラグインを使ったMoEの推論処理の推論速度を比較する。 比較対象は、 Dense MoE Sparse MoE (自前実装CUDAカーネル) Sparse MoE (CUTLASS Grouped GEMM) の3パターンとする。 比較条件 SwinTransformerのStage 0/1をMoE化 Stag…

dropless MoE(Mixture of Experts)を試す その5(推論処理)

MoE

前回、Pythonで実装したエンジンビルドスクリプトで保存した.engineを読み込んで、TensorRTで推論する処理をC++で実装する。 推論処理 TensorRTのライブラリの使用がメインである。 デフォルトで、CUDA Graphを有効にしている。 CUDA Graphは、プラグインでC…

dropless MoE(Mixture of Experts)を試す その4(エンジンビルド)

MoE

前回、実装したプラグインを使用して、カスタムノードを含むONNXをTensorRT の serialized engineに変換する。 dlshogiでは、C++でエンジンビルドを実装しているが、今回はPythonのtensorrtライブラリを使用して実装する。 生成したserialized engineを後でC…

dropless MoE(Mixture of Experts)を試す その3(プラグイン)

MoE

前回、ONNXにエクスポートしたカスタムノードに対応する処理をTensorRTのプラグインで実装する。 TensorRTのプラグイン 公式ドキュメントに記載されている通り、プラグインクラスとプラグイン クリエーターを実装する。 プラグインがREGISTER_TENSORRT_PLUGI…

dropless MoE(Mixture of Experts)を試す その2(ONNXエクスポート)

MoE

前回、PyTorchで実装したMoE対応のSwinTransformerモデルをTensorRTで推論できるように、ONNXにエクスポートする。最低限、grouped_mmのみをカスタムオペレータとすればよいが、router + dispatch + expert + combineを分離するとTensorRTのグラフとpluginの…

dropless MoE(Mixture of Experts)を試す

MoE

dlshogiのモデルはパラメータを増やすほど精度が向上することが60ブロック768フィルタのサイズまで確認できている。 しかし、探索速度が落ちるため、対局した際の強さは、40ブロック512フィルタのモデルには及ばない。MoE(Mixture of Experts)は、パラメータ…