TensorRTのお話

紹介

NVIDIA社作成の推論を最適化するツールです。

ネットワーク構造をインポートし、レイヤをFusionしたりMergeしたり、、、 Dropoutみたいな学習しか使わないレイヤを削除したりできますね。

これが紹介ページです。
NVIDIA TensorRT | NVIDIA Developer

何やってるの??

ネットワーク構造を最適化し、レイヤごとに最も速いカーネル関数を当てはめてます。

こんな感じのことやってます。 f:id:Pg_boc:20191027120752p:plain

  • Layer & Tensor Fusion
    レイヤ間で最適化。くっつけたり削除したり。。Concatなんかは消される。

  • Kernel Auto Tuning
    各レイヤはCUDAで書かれてるんですけど、データベースかどっかから登録されてるカーネル関数の一覧から最も速いカーネル関数を選ぶ。
    もちろんデバイス依存だけど。

  • Dynamic Tensor Memory
    メモリ節約しようよというスタンス(だと思う)

  • Multi Stream Execution
    並列で処理できるところは並列でやりましょう!!

  • Precision Calibration
    演算精度を変えます。単精度(FP32)→半精度(FP16)とかFP32→整数型(INT8)
    FP16にしたらTensorCoreでINT8より速くなりますよね、でも最近のだとTensorCoreはINT8も対応してるとか?

対応してる機械学習フレームワーク

  • Caffe

  • TensorFlow、Keras

  • ONNX
    PytorchやMXNet、Chainerは一旦ONNXに変換してから、、です。

やってみたいこと

Jetson Nano上で動画推論させたいのでTensorRTで変換させてみたいです。はい。

がんばりまーす。