Ignitarium-logo
Ignitarium-logo

  2021.06.23

FPGAでのディープニューラルネットワークモデルのハードウェアアクセラレーション( Part 2 of 2)

パート1 (view here) では、ディープニューラルネットワークとディープニューラルネットワークモデルを実装するための様々なアクセラレータについて説明しましたが、パート2では、FPGAベンダーが提供する様々なディープラーニングフレームワークとハードウェアフレームワークについて説明します。

ディープラーニングフレームワーク:

ディープラーニングフレームワークは、基盤となるアルゴリズムに関する深い知識がなくても、DNNモデルをすばやく簡単に構築するのに役立つツールまたはライブラリと見なすことができます。 事前に構築され最適化されたコンポーネントを使用してモデルを定義するための凝縮された方法を提供します。 主なディープラーニングフレームワークには、Caffe、TensorFlow、Pytorch、Kerasなどがあります。

Caffe は、速度とモジュール性を向上させるように設計されたディープニューラルネットワークフレームワークです。Berkeley AIResearchによって開発されました。Caffeは、主に畳み込みニューラルネットワーク(CNN)を含む画像処理アプリケーションに焦点を当てていますが、リージョンベースのCNN、RNN、長・短期記憶(LSTM)、および全結合ニューラルネットワーク設計のサポートも提供します。また、NVIDIA cuDNNやIntelMKLなどのCPUおよびGPUアクセラレーションライブラリもサポートしています。C、C ++、Python、MATLABのサポートを提供します。

TensorFlow は、Googleで開発されたオープンソースのディープラーニングフレームワークで、RCNNやCNNなどのディープラーニングモデル用のコードが事前に記述されており、R、C ++、Python言語をサポートしています。CPUやGPUなどのさまざまなプラットフォームにモデルをデプロイできる柔軟なアーキテクチャを備えています。TensorFlowは、画像だけでなくシーケンスベースのデータでもうまく機能します。TensorFlowの最新バージョンはTensorFlow2.0で、GPUのパフォーマンスが大幅に向上しています。

Keras は、TensorFlow上で実行できるオープンソースフレームワークで、GoogleのエンジニアであるFrancois Cholletによって開発されました。これはニューラルネットワークモデルの高速実験に役立つ高レベルのAPIです。 KerasはCNNとRNNの両方をサポートしています。Pythonで記述されており、GPUだけでなくCPUでも完全に機能します。

PyTorch は、オープンソースの機械学習ライブラリです。 FacebookのAI研究所によって開発され、コンピュータービジョン、自然言語処理などのアプリケーションに使用されます。PythonとC ++インターフェイスを備えています。

DNNのハードウェアフレームワーク:

ディープニューラルネットワークのハードウェアアクセラレータとしてのFPGAには、独自の長所と短所があります。主な課題の1つは、FPGAがVHDLやVerilogなどのハードウェア記述言語(HDL)を使用して機能を記述することによってプログラムされることです。これは、CやC ++などの通常のプログラミングとは異なります。複雑さを軽減するために、高位言語をHDLコードに合成する高位合成(HLS)のようなツールが存在します。設計者は機械学習フレームワークとFPGAハードウェアの両方に関する深い知識を必要とするため、CaffeまたはTensorFlowフレームワークで定義されたニューラルネットワークモデルの実装は複雑ですが、FPGAベンダーや他のサードパーティ企業によって開発されたさまざまなハードウェアフレームワークがそのような複雑さを軽減します。

ここで取り上げるハードウェアフレームワークには、OpenCL、IntelのOpenVino、Xilinx DNNDK、Xilinx Vitis AI、Lattice sens AI stackなどがあります。

Open Computing Language (OpenCL) は、CPU、GPU、FPGA、デジタルシグナルプロセッサ(DSP)、その他のハードウェアアクセラレータなど、さまざまなコンピューティングプラットフォームでプログラムを作成、実行するための異種フレームワークです。オンボードGPUの高速化の可能性を活用するために、Appleによって2009年に発売されました。最新バージョンは3.0で、言語により多くのC ++機能が組み込まれています。

OpenCLフレームワークはCおよびC ++を公式にサポートしていますが、Python、Java、Perl、およびINETでは非公式のサポートを利用できます。 プログラムのOpenCL実装は、CPUやGPUなどのさまざまなコンピューティングデバイスを含むホストに基づいており、さらに複数の処理要素に分割されています。 OpenCLを使用して実行される関数はカーネルと呼ばれ、すべての処理要素で並行して実行できます。 プログラマーは、プログラムが実行されているコンピューターからデバイス情報を取得することにより、システムで使用可能なアクセラレーション機能を利用できます。

OpenCLは、高速化とリソース使用量で優れていますが、低レベルの性質によって制限されます。FFTなどの標準操作用の関数がありますが、ネットワークの生成に使用されるフレームワークにOpenCLブランチがない限り、ニューラルネットワークは手動で宣言する必要があります。Caffeにはそのようなブランチがありますが、現在開発中です。 TensorFlowのロードマップにはOpenCLブランチがあります。 ニューラルネットワークフレームワークのサポートがないため、その採用が制限されています。 OpenCLに対してよりサポートされ、類似したフレームワークはNvidiaのCUDAですが、これはNvidiaGPUでのみ実行されます。

OpenVINO ツールキットは、FPGAでニューラルネットワークを実行するためにIntelによって提供され、既存のソリューションと比較してプロセスを簡素化することを目的としています。 OpenVINOツールキットは2018年に発売され、ユーザーはIntelプロセッサ、GPU、FPGA、およびビジョンプロセッシングユニット(VPU)でニューラルネットワークを高速化できるアプリケーションをプログラムできます。ツールキットは、さまざまな推論ターゲットと互換性があり、プラットフォームによって異なります。

OpenVINOは、主に画像認識CNNの高速化に使用されますが、音声認識などの他の目的にも使用できます。 CaffeやTensorFlowなどのフレームワークと、AlexNETやGoogleNETなどのディープラーニングアーキテクチャをサポートしています。 すぐに使用できるフレームワークごとに設定された数のレイヤーをサポートし、開発者はカスタムレイヤーをサポートできます。

OpenVINOツールキットでは、ニューラルネットワークモデルは、モデルオプティマイザーを使用して、caffemodel(from Caffe) などのニューラルネットワークフレームワークによって提供されるモデルファイルを計算された重みで取得することによって最適化されます。 デフォルトのモデルの精度は単精度浮動小数点ですが、半精度浮動小数点への量子化はオプティマイザーで使用できます。 8ビット整数量子化も利用できます。

オプティマイザーは、推論エンジンAPIを使用してコードにロードされる最適化された中間表現を提供します。 APIは、ネットワークを準備してターゲットデバイスに推測し、提供された入力データを使用してネットワークを実行します。 すべての前処理と後処理はC ++で行われるため、置き換える必要があるのは推論または予測プロセスだけです。

FPGAでは、OpenVINOはFPGAにプログラムされプリロードされたビットストリームを使用して命令を加速します。HLSは使用しませんが、畳み込みやアクティベーションなどのニューラルネットワークで見られる数学演算を実行するための専用プロセッサとしてFPGAを使用します。OpenVINOビットストリームはFPGA用に固定されており、他のIO関数の追加などのカスタマイズはできません。

OpenVINOと競合するため、Xilinx は2018年に中国の開発者 DeePhi とそのニューラルネットワークFPGAアクセラレーションSDKキット(DNNDK)を買収しました。DNNDK SDKは、Xilinx ZCU102、ZCU104、Avnet Ultra96などのXilinx FPGA開発キットと、DeePhiの開発キットの一部で、モデルのプルーニング、量子化、およびデプロイメントを実行します。

システムには、FPGAに加えて、マルチプロセッサシステムオンチップ(MPSoC)と呼ばれるXilinx デバイスにMCUが組み込まれており、FPGAがプログラマブルロジックとして、MCUがプロセッサシステム(PS)として使用されます。DeePhiは、SDKはRNNだけでなくCNNも高速化できると主張しており、特定用途向け集積回路(ASIC)や同じネットワークのHLS実装と比較して、HLS実装の56分の1の電力で、1.8倍と19倍のスピードアップを実現しています。

DNNDKツールキットは、ソフトコアプロセッサである深層学習プロセッサユニット(DPU)を利用して、DNNアルゴリズムの高度な計算タスクを高速化します。 DPUは、VGG、ResNet、GoogLeNet、YOLO、AlexNET、SSD、SqueezeNetなどの一般的なニューラルネットワーク設計、およびカスタムネットワークをサポートおよび高速化するように設計されています。 OpenVINOとは対照的に、FPGAイメージはFPGA全体を占有せず、SDKと一緒に実行するカスタムHDLコード用のスペースを残します。 DNNDKは、2020年9月から個別のツールとして利用できません。これ以上の新しいリリースはありません。 Xilinxは、DNNモデルをデプロイメントするためのVitisAIと呼ばれるツールの新しいバージョンを導入しました。

Vitis AI は、エッジデバイスやAlveoカードなどのXilinxハードウェアでのDNN推論のためのXilinxの最新の開発プラットフォームです。 ツール、最適化されたIP、モデル、ライブラリ、サンプルデザインがあります。 DNNDKと同じ開発フローがあります。 使いやすさと効率を念頭に置いて開発されています。 Vitis AIは、AIアクセラレーションにディープラーニングプロセッシングユニット(DPU)も使用します。 DPUは、さまざまなXilinxハードウェアZynq®-7000デバイス、Zynq UltraScale + MPSoC、およびAlveoボードに合わせて、エッジからクラウドまでスケーリングして、さまざまなアプリケーションの要件を満たすことができます。

Lattice sensAI は、ラティスセミコンダクターが提供するLattice FPGAで機械学習モデルを評価、開発、デプロイするのに役立つフル機能のスタックです。Caffe、TensorFlow、Kerasなどの一般的なフレームワークをサポートしています。 これらには、CNNモデルを高速化するために特別に設計されたIPコアがあります。これらは、実装が簡単で、柔軟性が高く、小型で低電力の機械学習ソリューションを提供します。

AIアクセラレーションの対象となるFPGAファミリ:

FPGAベンダーは、特にAIアクセラレータを対象とするようにFPGAファミリを最適化しています。

  • Intel®Stratix®10NXFPGAは、Intel初のAI最適化FPGAです。 これは、一般的な matrix-matrix または vector-matrix の乗算用に調整された、新しいタイプのAI最適化ブロックであるAIテンソルブロックを埋め込みます。
  • インテル®Agilex™FPGAおよびSoCは、データセンター、ネットワーキング、およびエッジコンピューティングのアプリケーションに対して、最大40%高いパフォーマンスまたは最大40%低い電力を提供します。
  • Xilinx SoCは、AIアプリケーションに最適なソリューションです。 これらは、ソフトウェアのプログラム可能性のためのプロセッサとハードウェアのプログラム可能性のためのFPGAを統合し、スケーラビリティ、柔軟性、およびパフォーマンスを提供します。 それらには、費用効果の高いZynq 7000SoCとハイエンドのZynqUltrascale +が含まれます。
  • ラティスセミコンダクターは、実装が簡単で、低電力で、柔軟性の高い機械学習アプリケーション向けのFPGAを提供しています。 それらのハードウェアプラットフォームには、iCE40 UltraPlus FPGA、ECP5 FPGA、CrossLink-NXが含まれます。
  • マイクロチップには、人工知能/機械学習(AI / ML)、産業オートメーション、IoT などの信頼性が高く安全で電力効率の高い計算に適したPolarFireSoCが搭載されています。

Summary: 

FPGAは現在、GPUベースおよびCPUベースの推論エンジンをオフロードするためにデータセンターで広く使用されています。これらは、ターゲットFPGA、モデル開発と最適化フレームワーク、およびサポートされているライブラリのエコシステムから始まる、このような機能の定義、拡張、およびデプロイメントの初期段階です。FPGAの機能の急速な加速は、現実の世界で展開される可能性のある多数のアプリケーションに取り組むために、今後5年間で想定されています。

Part 1 はこちら…

英語ページ

e-Book

チェックリストの無料ダウンロード

車載用チップ設計の機能安全アーキテクチャの
チェックリスト