著者: 禅とコンピュータープログラミングの芸術
1 はじめに
ディープラーニングの台頭により、画像認識、音声認識、ビデオ分析などのアプリケーションがますます広く使用されるようになりました。近年では、一部のモデルのサイズも複雑化しています。したがって、これらのモデルを迅速かつ正確に実行する方法が重要な研究方向になります。
現在主流のモデル高速化テクノロジは、主に TensorRT、NCNN、OpenVINO などのフレームワーク レベルに集中しています。ただし、これらの手法は、特定のハードウェア プラットフォームまたは特定の推論エンジンでのみ使用できます。たとえば、TensorRT は CPU では直接ではなく、NVIDIA GPU でのみ使用できます。OpenVINO は Intel CPU または GPU でのみ実行でき、携帯電話や Arm アーキテクチャ上の Raspberry Pi などのデバイスでは直接使用できません。したがって、モデルを別のハードウェアで実行したい場合は、より一般的なモデル アクセラレーション テクノロジが必要になります。
2019 年、Nvidia は、ニューラル ネットワークの計算能力を実際の導入シナリオに近いレベルまで高めることができる Tensor Boost と呼ばれるテクノロジーを発表しました。Tensor Boost は、TensorFlow、PyTorch、MXNet などのフレームワークとシームレスに統合できます。それはこのように動作します:
まず、Tensor Boost は、モデルの内部構造を分析することにより、ターゲット ハードウェアに一致する一連の計算命令を自動的に生成します。次に、これらの命令シーケンスはマシン コードにコンパイルされ、フレームワークからの中間結果に依存せずに直接実行されます。
次に、Tensor Boost はニューラル ネットワーク最適化テクノロジを使用してモデルを微調整し、コンピューティング パフォーマンスをさらに向上させます。
第三に、Tensor Boost はオンライン学習モデルの計算効率とリソース利用効率を自動的に学習できるため、モデルはさまざまな条件下で最高のパフォーマンスを発揮できます。
上記の 3 つの技術的特徴に基づいて、今日は TensorFlow での Tensor Boost テクノロジーのアプリケーションを示します。まず、TensorBoost がどのように機能するかを確認し、TensorBoost が他のモデルとどのように統合できるかを説明します。