2018年4月2日月曜日

NVIDIAとGoogle、「TensorRT」と「TensorFlow 1.7」を統合

 GoogleとNVIDIAは2018年3月27日(米国時間)、「NVIDIA TensorRT」ソフトウェア(以下、TensorRT)と、Googleが開発しオープンソースソフトウェアとして公開している機械学習ライブラリの最新版「TensorFlow 1.7」の統合を発表した。

 TensorRTは、推論のディープラーニングモデルを最適化し、本番環境のGPUにデプロイされるランタイムを作成するソフトウェアライブラリ。FP16(半精度浮動小数点数)とINT8(8ビット符号付き整数配列)における多数の最適化をTensorFlowで利用できるようにするとともに、プラットフォーム固有のカーネルを自動的に選択して、GPU上での推論時のスループットを最大化し、レイテンシを最小化する。

 両社のテストでは、「NVIDIA Volta」GPUの「Tensor Core」を使ったTensorRTとTensorFlowの統合により、TensorFlowのみを実行した場合と比べて、「ResNet-50」でのパフォーマンスが8倍向上し、レイテンシは7ミリ秒未満だったという。

 GoogleとNVIDIAは、TensorRTとTensorFlowの統合のポイントとして、「TensorRTでのサブグラフの最適化」「INT8での推論パフォーマンスの最適化」「NVIDIA VoltaでのTensor Coreの自動的な使用」を挙げている。それぞれの概要は以下の通り。

TensorRTでのサブグラフの最適化
 TensorRTが互換性のあるサブグラフを最適化し、TensorFlowが残りのサブグラフを実行する。このアプローチにより、TensorFlowの広範な機能セットを使ってモデルを迅速に開発し、推論の実行時にTensorRTで強力な最適化を行える。

INT8での推論パフォーマンスの最適化
 TensorRTは、FP32(単精度浮動小数点数)やFP16で訓練されたモデルをINT8に変換してデプロイし、低い精度でも正確さの低下を最小限に抑えて推論を行える機能を提供する。

 INT8モデルの方が、演算が高速で帯域幅の要件が低いが、ニューラルネットワークの重み付けとアクティベーションの表現に問題がある。ダイナミックレンジが小さいからだ。TensorRTは、この問題に対処するため、限られたINT8表現に伴う情報の損失を最小化するキャリブレーションプロセスを使用している。

NVIDIA VoltaでのTensor Coreの自動的な使用
 TensorRTは、NVIDIA Volta内のTensor CoreでFP16のTensorFlowモデルを実行して推論を行う。Tensor Coreは、FP32演算パイプラインの8倍のスループットを提供する。

 FP16のデータは、高精度のFP32やFP64と比べて、ニューラルネットワークのメモリ使用量が少ない。このことから、大規模ネットワークの訓練とデプロイが可能になる他、FP16のデータ転送の所要時間はFP32やFP64より短くなる。

0 件のコメント:

コメントを投稿