TensorRT C++ API でネイティブに記述されたモデル (caffe、tensorflow などの他のフレームワークから解析されていない) で半精度推論を実行しようとしています。私の知る限り、この問題の公開された実例はありません。私が見つけた最も近いものは、TensorRT 4.0.0.3でリリースされた sampleMLP サンプル コードですが、リリース ノートには fp16 のサポートはないと書かれています。
私のおもちゃのサンプル コードは、このリポジトリにあります。これには、API で実装されたアーキテクチャと推論ルーチンに加えて、トレーニング済みの重みの辞書を wtd TensorRT 形式に変換するために使用する Python スクリプトが含まれています。
私のおもちゃのアーキテクチャは、1 つの畳み込みだけで構成されています。目標は、fp32 と fp16 の間で同様の結果を得ることですが、妥当な精度の損失を除きます。コードは fp32 で動作するようですが、fp16 推論の場合に得られるのは、まったく異なる桁数 (~1e40) の値です。変換中に何か間違ったことをしているようです。
問題を理解するための助けをいただければ幸いです。
ありがとう、
へ