米国シノプシス
プロダクト・マーケティング・マネージャー Ken Brock
ディープラーニング・アクセラレータのチップ面積は、その大部分を人工知能(AI)専用の演算ファンクションと大容量メモリーが占めています。データセンター用およびエッジ機器のAI推論エンジン用のASICやASSPにディープラーニング技術を統合する際に直面するのが、性能、消費電力、面積の課題です。こうした課題は、電力効率に優れたSoCの設計に向けた実用的なソリューションを使用すると、ファウンデーションIPおよびシステム・オン・チップ(SoC)レベルで解決できます。AIおよびディープラーニング機能に最適化されたシノプシスのFoundation IP(メモリーおよびロジック)をオンチップに統合することにより、消費電力と面積を飛躍的に削減しながらアプリケーションの性能要求を満たすことができます。
ディープラーニング・アクセラレータは、学習済みのディープラーニング・フレームワーク(TensorFlow、Caffeなど)を使用して推論を実行します。図1の左上に示したのは、最初のニューラル・ネットワーク・モデルです。このモデルはいくつかの属性で構成され、トレーニング・エンジンは大量の学習データを使用してこれを評価します。例えば現在一般的なアルゴリズムやディープラーニング手法の多くは、ウェブ上に大量に存在する猫の顔の画像を使用してGoogle社やスタンフォード大学が行った初期のディープラーニング研究で開発されたものです。大量の画像データを使用してデータとラベルのペアを作成し、ニューラル・ネットワーク・モデルの学習を実行します。これが完了したら、推論エンジンで対象物を高速に推論し、その結果に応じて適切なアクションを実行できます。図1の右端は、新規イメージをスキャンしながら猫の顔を推論しているようすを表しています。
図1:ディープラーニング・フレームワークにおけるニューラル・ネットワーク・モデル
畳込みニューラル・ネットワーク(CNN)は、画像認識/分類などの分野の推論エンジンとして非常に効果的であることが知られています。CNNは顔や物体、交通標識を高精度に識別できるため、ロボットや自動運転車の「目」として活躍しています。ディープ・ニューラル・ネットワーク(DNN)は、一連の層および特徴を使用し、演算効率の高い方法で非常に高精度な結果を出力します。これらの層は、図2に示すように畳込み、非線形関数、正規化、プーリング、分類(全結合層)などで構成されます。これらはソフトウェアでも実装できますが、論理算術関数とその中間結果を格納するローカル・メモリーで構成した専用のハードウェアで実装することもできます。
図2:最新のディープCNN
初期に行われた学習と推論の研究では、高級言語で記述したプログラムを汎用CPUで実行していました。その理由としては、実装が容易であること、およびデータセットの規模がそれほど大きくなく、このような実装でも十分な性能が得られることが挙げられます。その後、学習に使用するデータセットの規模が大きくなると、GPUの方がニューラル・ネットワーク機能をより効率的に並列実行し、高スループットが得られることが実証されました。更に、「ビッグ・データ」を利用した大規模な演算タスクを最も高速に実行できる選択肢として注目を集めているのが、専用のディープラーニング・プロセッサです。これらのプロセッサは非常に高効率で、数TFLOPS(1 TFLOPSは1秒間に1兆(1012)回の浮動小数点演算を実行)の性能に達することもしばしばです。現在最先端のFinFETプロセスは、特定のアプリケーションに最適化したディープラーニング・アクセラレータおよび推論エンジンを開発する上で非常に優れたプラットフォームとなります。
現在のプロセッサはフォンノイマン型アーキテクチャの制限を受けるため、ムーアの法則に従ってプロセッサの速度が向上するにつれ、オフチップ・メモリーの性能との格差が拡大の一途をたどっています(図3)。このメモリー・アクセスのボトルネックは、疎データ量の増大とシリコン性能の向上によってますます深刻になっています。
図3:CPU/GPUとメモリーの性能格差が拡大。ディープラーニング・プロセッサとの差は更に顕著に。
汎用CPUやGPU、専用CNNプロセッサ、カスタムDNNサーバなど、最近のハードウェア・プラットフォームは、その多くがCNN処理を想定した特別な機能を備えています。CNNの推論は組込みSoC上でも可能なことが実証されており、シノプシスのエンベデッド・ビジョン(EV)プロセッサは少ない消費電力と面積で毎秒非常に多くの回数の積和演算(MAC)を実行できます。このソフトウェア開発には、MetaWare EV Development Toolkitを使用できます。
ディープラーニング・アクセラレータの設計では、十分な精度を維持しながらビット数を最適化するプロセッサ・アーキテクチャ、オンチップ・メモリーの効率的な使用、電力効率に優れたロジックによる固定小数点および浮動小数点演算などの技術を活用してメモリー・ボトルネックを最小化します。図4に、オフチップおよびオンチップ・メモリーの階層を含む専用ディープラーニング・アクセラレータの代表的なアーキテクチャを示します。
図4:専用ディープラーニング・アクセラレータのメモリー・アーキテクチャの例
このメモリー階層は、ALU(算術論理演算ユニット)アレイに接続されています。各ALUには、小規模なスクラッチパッド・メモリーと制御回路が含まれます。ALUアレイは、DNNの専用の機能および層を実行し、学習および推論における大量のデータを効率よく処理します。このアレイではメモリーとプロセッサの接続を柔軟に変更できるため、少数の専用タスクを実行する場合も、幅広い種類の学習タスクを実行する場合も、同じハードウェアで対処できます。
スカラー・データに重みを適用するディープラーニング・アルゴリズムのほとんどは、わずかな丸め誤差ならほとんど影響がありません。このため、メモリーに格納するスカラー・データの数値精度を下げることがディープラーニングの消費電力を最小化する上で大きな役割を果たします。例えば8ビット固定小数点数加算器に比べ、32ビット固定小数点数加算器は消費電力が3.3倍、面積は3.8倍となり、32ビット浮動小数点加算器では消費電力が30倍、面積は116倍にも達します。また、メモリーに格納するデータは一般的に疎行列データであり、精度を下げるとメモリーの面積と消費電力も削減されます。更に、システム性能のボトルネックとなりがちなメモリー帯域幅の問題も軽減されます。こうした整数および浮動小数点MACは、Booth、Wallace treeなどの各種乗算器、およびcarry-look-ahead、carry-save、carry-selectなどの各種加算器を使用します。シノプシスのDesignWare®ライブラリには、IEEE 752完全準拠の単精度および倍精度をサポートした幅広い種類の加算器、乗算器、ドット積ジェネレータのRTLが用意されています。
ディープラーニングでは、全体的な消費電力を最小に抑えることを特に重視しながら、大容量のオンチップおよびオフチップ・メモリーを使用して疎行列の乗算を効率よく実行する必要があります。オンチップSRAMおよびレジスタ・ファイル・メモリーを使用すると、オフチップDRAMへのメモリー・アクセスに比べ必要なエネルギーが抑えられます。現在のオンチップ・メモリーは、ライト・スリープ、ディープ・スリープ、シャットダウン、読み出し/書き込みアシストを利用した低電圧動作、デュアル・レールなど、さまざまなビット・セルおよび周辺オプションを利用した機能を備えており、性能、消費電力、面積が最適化されています。ディープラーニング・プロセッサでは、シングル・ポート、デュアル・ポート、マルチ・ポートなどのメモリーおよびレジスタ・ファイル構成がよく使われます。特別な構成のマルチ・ポート2読み出し/1書き込み(図5)は、特にローカル・レジスタから部分和を取得しながらALUにフィルターの重みやマッピング情報を入力する用途に適しています。
図5:ディープラーニング用マルチ・ポート・メモリー
CAM(Content-Addressable Memory:連想メモリー)は現在、ネットワーキング・アプリケーションで広く利用されていますが、消費電力を最小化できればディープラーニング・アプリケーションでも大きな効果が期待できます。特にTCAM(Ternary CAM:三値連想メモリー)と呼ばれるタイプの特殊な高速メモリーは、すべての内容を1クロック・サイクルで検索できるため、ディープラーニングSoCの消費電力削減に貢献します。「三値」とは、0、1、X(「ドントケア」論理ビット。検索ではワイルドカードの働きをします)の3つの入力を使用してデータを格納、検索できることを意味しています。
ニア・メモリー・プロセッシングおよびイン・メモリー・プロセッシングでは、STT-RAM(Spin Torque Transfer RAM)、PCM(相変化メモリー)、ReRAM(抵抗変化型メモリー)などの不揮発性メモリー(NVM)テクノロジを利用します。これらの先端テクノロジは、大手半導体メーカーによって数年前からディスクリート・デバイスとして製品化されており、重み付きビット、抵抗ラダー、加算用キャパシタを使用してアナログな方法で乗算を実行できます。これらのテクノロジをCMOSロジックと組み合わせることができれば、ディープラーニングの電力効率が1桁高まることが期待されます。量子コンピューティングにも同様の可能性がありますが、いずれの技術も実用化されるのはまだ先のことです。現在のディープラーニング・アクセラレータは、電力効率に優れた組込みSRAMおよびレジスタ・ファイルを使用しています。
超並列行列乗算回路には、面積と消費電力の効率に優れたロジックが必要です。また、これらのデータには主にテンソルと呼ばれるフォーマットを使用します。テンソルは、幾何学的ベクター、スカラー、および他のテンソルの間の線形関係を記述した幾何オブジェクトです。こうした関係の簡単な例としては、ドット積、クロス積、線型写像などがあります。これらの計算エンジンには整数演算と浮動小数点演算の両方を含めることができます。現在のアクセラレータで特に重要な回路としては、整数と浮動小数点フォーマットの変換をサポートした8ビット整数と16ビット浮動小数点数のMACがあります。
よりハイレベルな関数を構築するには、高速かつ高効率な全/半加算器、XOR、コンプレッサ、Boothエンコーダ、およびフリップ/ラッチ・ファミリ(部分積およびその他の記憶用のマルチビットを含む)などを幅広く含むロジック・ライブラリが必要です。消費電力はCFV2に比例するため、大規模な学習アプリケーションでは、低電圧の算術論理演算により消費電力を最小化するストラテジが必要です。また、多くの回路がニアスレッショルド動作に近付き、ばらつきが大きな課題となっているため、消費電力を最小化した大規模な学習アプリケーションを実現するには、低電圧設計手法および特殊な低電圧特性評価が必要です。クロック・ツリーの消費電力を最小限に抑える非同期ロジックは、ディープラーニング・アクセラレータの消費電力最適化に新たなブレークスルーをもたらす可能性があります。ディープラーニング・プロセッサ上で数百万回も繰り返し実行されるMACの電力効率は、単位エネルギーあたりの演算スループット(GMAC/s/Wなど)の性能指数で表されます。最適な数値精度を選択し、電力効率に優れた算術論理演算セルを使用することが、消費電力を最小化する上で特に重要です。図6に、代表的な浮動小数点MACのロジックを示します。
図6:積和演算(MAC)
どれだけ優れたアルゴリズム、革新的なアーキテクチャ、効率的なデザイン、優れたファウンデーションIPがあっても、それだけではディープラーニング・アクセラレータは設計できません。ディープラーニングSoCはオンチップおよびオフチップで大量のデータを処理する必要があり、1演算あたりの全体的な消費エネルギーの評価指標が完全に変わる可能性があります。シノプシスは、HBM、PCI Express、USB、MIPI、SerDesなど、最小の消費電力と面積で高速データ転送を可能にする高速インターフェイス・コントローラおよびPHYを幅広くご提供しています。またシノプシスは、ディープラーニング用ASICおよびASSPの設計とバリデーションに向けた包括的なEDAプラットフォームもご提供しています。
ディープラーニング・アクセラレータは、チップ面積の大部分をAI専用の演算ファンクションと大容量メモリーが占めているため、最適化されたファウンデーションIPが開発の成否を左右します。シノプシスは、ディープラーニング・アクセラレータ向けに先進のFinFETプロセスに対応した電力効率の高いロジック・ライブラリおよびメモリー・コンパイラなど、包括的なFoundation IPをご提供しています。これらのアクセラレータを組み込んだASICおよびASSPは、データセンターやモバイル機器のAI推論エンジンで非常に高い電力効率を達成しています。