原文と比べた結果、この記事には多数の(または内容の大部分に影響ある)誤訳があることが判明しています。情報の利用には注意してください。 (2023年6月) |
AIアクセラレータ(英: AI accelerator)は、人工知能 (AI) アプリケーション、特に人工ニューラルネットワーク、回帰型ニューラルネットワーク、マシンビジョン、機械学習を高速化するために設計された特殊なハードウェアアクセラレータまたはコンピュータシステムの分類のひとつである。代表的なアプリケーションには、ロボット工学、モノのインターネット (IoT)、その他のデータ集約型またはセンサー駆動型のタスクのためのアルゴリズムが含まれる。それらは多くの場合、メニーコア設計であり、一般的には低精度算術演算、斬新なデータフロー・アーキテクチャ、またはインメモリ・コンピューティング機能に焦点を当てている。2018年現在、典型的なAI集積回路チップには数十億個のMOSFETトランジスタが含まれている。
このカテゴリのデバイスには、多くのベンダー固有の用語が存在しており、これはドミナント・デザイン(支配的設計)のない新興技術である。
コンピュータシステムは、コ・プロセッサと呼ばれる特殊なタスクのための専用アクセラレータでCPUを補完することが頻繁に行われていた。アプリケーション固有の特筆すべきハードウェアユニットには、グラフィックス用ビデオカード、サウンドカード、GPU、DSPなどがある。2010年代にディープラーニングや人工知能のワークロード(作業負荷)が著しく増大するようになると、これらのタスクを高速化するために、専用のハードウェアユニットが開発されたり、既存の製品を基にしてタスクに順応するよう改良されたりした。
早くも1993年には、DSPがニューラルネットワークのアクセラレータとして使用され、例えば光学文字認識 (OCR) ソフトウェアを高速化するために使用されていた。1990年代には、ニューラルネットワーク・シミュレーションを含む様々なアプリケーションを目的としたワークステーション用の並列ハイスループットシステムの開発も試みもあった。FPGAベースのアクセラレータも1990年代に推論とトレーニングの両方のために最初に検討された。ANNAはヤン・ルカンによって開発されたニューラルネットCMOSアクセラレータである。

ヘテロジニアス・コンピューティング(異種コンピューティング)とは、1つのシステム、あるいは1つのチップに、特定の種類のタスクに最適化された多数の特化型プロセッサを組み込むことを意味する。Cell B.E.マイクロプロセッサのようなアーキテクチャは、パックされた低精度算術演算 (packed low precision arithmetic) のサポート、データフロー・アーキテクチャ、レイテンシよりも「スループット」を優先するなど、AIアクセラレータと大きく重複する特徴を持っている。Cellプロセッサはその後、AIを含む多くのタスクに応用された。
2000年代には、CPUは、動画やゲームのワークロードの高まりに牽引されて、SIMDユニットのデータ幅を次第に拡張し、パックされた低精度のデータ型をサポートするようになった。
2020年代は、AIエンジンのCPUチップへの搭載という流れが起きている。AppleのAシリーズやMシリーズに搭載されているNeural Engine、AMDのRyzen AI、IntelのMeteor Lake以降に統合されたNeural Processing Unit (NPU) などがあるが、専用のコードを書かなければいけない上にGPUなどに対して性能的にかなり劣っているためNPUを使用するアプリケーションソフトウェアは2026年時点では限定的である。
Graphics Processing Unit (GPU) は、Direct3DやVulkanのような各種3DグラフィックスAPIによって標準化されたグラフィックスパイプラインを持ち、画像の操作や、局所的な画像特性の計算に特化したハードウェアである。プログラマブルシェーダーおよび統合型シェーダーアーキテクチャの採用によりハードウェアレベルで汎用計算(GPGPU)への道が開け、さらにCUDAやOpenCLのようなソフトウェアプログラミング環境が整ったことで、GPUの持つ超並列処理性能の活用が進んだ。ニューラルネットワークと画像操作の数学的基礎は類似しており、行列を含む自明な並列性のタスクであるため、GPUは機械学習タスクにますます使用されるようになってきている。2016年現在、GPUはAI作業で人気があり、自動運転車などのデバイスでのトレーニングと推論の両方でディープラーニングを促進する方向に進化し続けている。NVIDIA NVLinkなどのGPU開発者は、AIが恩恵を受けるような、データフローのワークロード分散のために追加の接続機能を開発している。GPUのAIアクセラレーションへの応用が進むにつれ、GPUメーカーは、ニューラルネットワークに特化したハードウェアを組み込んで、これらのタスクをさらに高速化している。Tensor Core (テンソルコア) は、ニューラルネットワークのトレーニングを高速化することを目的としている。
ディープラーニングのフレームワークはまだ進化の途上にあり、カスタムのハードウェアを設計するのは難しい。FPGA (Field-Programmable Gate Array)のような再構成可能なデバイスにより、ハードウェア、フレームワーク、ソフトウェアを相互に進化させることが容易になる。
マイクロソフトは、FPGAチップを使って推論を高速化している。FPGAをAIアクセラレーションに適用することは、インテルがアルテラを買収することを動機付け、サーバCPUにFPGAを統合することで、汎用的なタスクだけでなくAIも加速できるようにすることを目的としている。
AI関連のタスクでは、GPUとFPGAの方がCPUよりもはるかに優れた性能を発揮するが、ASIC (Application Specific Integrated Circuit) を介したより特殊な設計では[要出典]、最大で10倍の効率性が得られる可能性がある。これらのアクセラレータは、最適化されたメモリ使用や[要出典]、より低精度の算術演算 (英語版) を使用して計算を高速化し、計算のスループットを向上させるなどの戦略を採用している。AIアクセラレーションで採用されている低精度浮動小数点フォーマットには、半精度浮動小数点フォーマットやbfloat16浮動小数点フォーマット (英語版) がある。FacebookやAmazon、Googleなどの企業が独自のAI ASICを設計している。
2017年6月、IBMの研究者は、ヘテロジニアス・コンピューティングと大規模並列システムに一般化するアプローチを目的とした、時間的相関検出に適用されるインメモリ・コンピューティングと相変化メモリ・アレイに基づくフォン・ノイマン・アーキテクチャとは対照的なアーキテクチャを発表した。2018年10月、IBMの研究者は、インメモリ処理に基づく、人間の脳のシナプスネットワークをモデルにしたアーキテクチャ (英語版) を発表し、ディープニューラルネットワークを高速化した。このシステムは相変化メモリアレイに基づいている。
2019年にミラノ工科大学の研究者は、1回の操作で数10ナノ秒で連立一次方程式を解く方法を発見した。彼らのアルゴリズムは、オームの法則とキルヒホッフの法則で行列-ベクトル乗算を1ステップで実行することにより、時間とエネルギーの高効率で実行するアナログ抵抗変化型メモリを使用したインメモリ・コンピューティングに基づいている。研究者らは、クロスポイント抵抗変化型メモリを備えたフィードバック回路が、一次方程式系、行列固有ベクトル、微分方程式などの代数的問題をわずか1ステップで解くことができることを示した。このようなアプローチは、従来のアルゴリズムと比較して計算時間を大幅に改善する。
2020年、Maregaらは、浮遊ゲート電界効果トランジスタ (FGFET) をベースにしたロジックインメモリデバイスおよび回路を開発するための大面積アクティブチャネル材料を用いた実験を発表した。
このような原子的に薄い半導体は、論理演算とデータ保存の両方に同じ基本的なデバイス構造を用いるエネルギー効率の高い機械学習アプリケーションに有望と考えられている。著者らは、半導電性二硫化モリブデンなどの二次元材料を用いた。
2016年現在、この分野はまだ流動的であり、ベンダーは自社の設計とAPIがドミナント・デザインになることを期待して、「AIアクセラレータ」に相当するものについて独自のマーケティング用語を推薦している。これらのデバイス間の境界線についても、正確な形式についても合意はないが、いくつかの例は明らかにこの新しい空間を埋めることを目的としており、かなりの量の機能が重複している。
コンシューマー向けのグラフィックス・アクセラレータが登場した過去の業界では、Direct3Dが提示したモデルを実装した全体的なパイプラインに落ち着くまでに、さまざまな形式をとってきた「グラフィックスアクセラレータ」の総称として、最終的にはNVIDIAによる「GPU」という独自の用語を採用した。
All operations in TensorFlow Distributions are numerically stable across half, single, and double floating-point precisions (as TensorFlow dtypes: tf.bfloat16 (truncated floating point), tf.float16, tf.float32, tf.float64). Class constructors have a validate_args flag for numerical asserts