プログラミングシェアするLINE!TensorRTをtensorflowとpycudaと一緒に使っているこのチュートリアルをやってみた。modelsをUFFへの変換を可能にする。modelsから構築できる。Engineをビルドする。TensorRTをインポートする前にTensorFlowを最初にインポートする必要がある。gpuへの(からの)データ転送用にPyCUDAを、データのストア用にNumPyを使う。toolkitをインポートする。modelsの詳細はこのサイトを参照。loaderを定義する。layerをpaddingしていることに留意する。paddingを要求する。modelを返す関数の中にトレーニングパイプラインを定義する。loaderをロードして訓練を開始する。TensorBoardで訓練を視覚化できるようにモデルにはサマリーが含まれている。modelに変換する。streamと名前を定義する必要がある。engineをビルドできるUFFモデルストリームが用意できたので、先ずはTensorRT用のlogger作成から始める。trt.infer.ConsoleLogger(trt.infer.LogSeverity.ERROR)次に、UFFパーサーを作って所望のインプット/アウトプットノードを特定する。streamといくつかの設定(最大バッチサイズと最大作業サイズ)をエンジンをビルドするユーティリティ関数にパスする。20)ここでパーサーは用済みなので破壊することができる。dataloaderからテストケースを得る(それをFP32に変換する)。0x7f6917a27c18>それから、エンジン用のランタイムと実行内容を作成する。engine.create_execution_context()次に、GPUとCPUに推論結果を保存するための記憶領域をメモリに割り当てる。これらの割り当てサイズは、インプット/予想アウトプット×バッチサイズになる。output.nbytes)エンジンは、バインディング(GPUメモリへのポインター)を要求する。PyCUDAは、メモリ割り当ての結果をintにキャスティングすることでこの事を可能にしてくれる。int(d_output)]推論実行のためにcudaストリームを作成する。cuda.Stream()次に、データをGPUに転送して、推論を実行して。threadsstream.synchronize()推論結果を得るのにnp.argmaxを使うことができる。1エンジンは後で使えるように保存することもできる。engine.serialize())Truetensorrt.utils.load_engineを使って後でエンジンをロードすることが可能。"./tf_mnist.engine")最後に、コンテクスト、エンジン、ランタイムを破壊する。context.destroy()engine.destroy()new_engine.destroy()runtime.destroy()PyCUDA、TensorRT、TensorFlowを集中的に勉強しようと思っている今日この頃。