GraphcoreのAIチップは何が違うのか
新型コロナウイルスによる経済減速の懸念やイベント自粛など、気が滅入るニュースばかりの昨今ですが、景気の良い話が飛び込んで来ました。
今回1億5千万ドルを追加調達し、累計の調達額は4億5千万ドルになったということです。評価額は2,000億円を超えるとのこと。ここ数年、AIベンチャーへの投資は活発化しているようですが、1億ドルを超える調達は少ないとされており、これはかなり異例といえます。
Graphcoreは所謂「AI用アクセラレータ」を設計・開発しているスタートアップで、昨年にはMicrosoftがAzure上でGraphcoreを使ったサービスを始めたり、
DellもGraphcoreのチップを搭載したサーバーを発売するなど、実際の製品を出荷して効果を実証しています。
Graphcoreの特徴とは
Graphcoreでは自社のIPU(Intelligence Processing Unit)を、「AI向けにデザインされた初のプロセッサー」と言っているそうですが、AI専用プロセッサとしてはGoogleのTPUやAWSのInferentiaなどがありますし、IBMなどが手掛けているニューロモーフィックチップもあります。さらには、AppleやKirinはスマホ用のチップにAI用プロセッサを内蔵するなどしています。Graphcoreのプロセッサはこれらとは違う、ということなのでしょうか?
TechCrunchの記事によると、Graphcoreの特徴は以下の様なものだそうです。
Graphcoreの最大の売りは、同社がIntelligence Processing Unit(IPU)と呼ぶハードウェアと、それに対応するPoplarソフトウェアの開発だ。これはAIアプリに必要とされる、同時かつインテンシブに行われる計算向けにデザインされている(いかに人間が「並行」処理モードで考えるかをベースにしている)。
これだけだとちょっとよくわからないので、Graphcoreのサイトを見てみました。すると、
Dissecting the Graphcore IPU Architecture via Microbenchmarking
というペーパーがあったのですが、これはちょっと大変ですね。90ページもあります。全部読むのは無理そうなので、第1章のArchitectureだけ見てみました ^^;
分散メモリ型MIMD
これによると、Intelligence Processing Unit(IPU)は「分散メモリ型のMIMD」と思われます。AI処理によく使われるGPUは「共有メモリ型のSIMD」といわれておりますので、この違いが重要なのでしょう。
共有メモリを一切持たず、タイルと呼ばれる個々の演算コアにローカルメモリを持つというのがキモのようで、
The IPU offers true MIMD (Multiple Instruction, Multiple Data) parallelism and has distributed, local memory as its only form of memory on the device.
IPUは真のMIMD並列化を実現しており、唯一のメモリとして分散したローカルメモリを持つ。
これにより、
Its design aim is the efficient execution of fine-grained operations across a relatively large number of parallel threads. This means that the IPU, unlike other massively parallel architectures (e.g., the GPU) adapts well to fine-grained, irregular computation that exhibits irregular data accesses.
その設計目標は、比較的多数の並列スレッドにわたる細かい粒度の操作の効率的な実行である。これはIPUが他の超並列アーキテクチャ(GPUなど)とは異なり、不規則なデータアクセスを示すきめの細かい不規則な計算により適応することを意味する。
ということです。
GPUではチップ当たり数千個の演算コアが搭載されていますが、その演算は積和演算などの比較的単純な計算に限定されており、メモリもチップ全体で共有されています。それに対し、IPUは1チップに1,216個の演算コア(タイル)があり、それぞれが256KiBのメモリを持っています。各コアにメモリを持たせることで、メモリレイテンシの低下が見込めます。共有メモリとの間でデータをやりとりする必要がなく、なおかつ高速なSRAMとして実装することで実行速度を上げることができるということでしょう。
さらに、各コアはSIMDではなくMIMDとして独立して処理を行うために、SIMDよりも複雑な命令体系を持っているようです。ローカルにデータを保持しておけることと組み合わせれば、これまでのAIチップとは違う高度な処理を行えるということでしょう。Graphcoreのサイトに5Gネットワークへの適用の話が出ており、その中でLSTMについて触れられています。
Our IPU works especially well on highly complex models, driving significantly higher throughput at the same latency for LSTM inference microbenchmarking in comparison with leading alternative processors.
IPUは高度に複雑なモデルで特にうまく機能し、他のAIプロセッサーと比較して、同じレイテンシの元でのLSTMによる推論処理のマイクロベンチマークで大幅に高いスループットを実現します。
シンプルなSIMDは画像認識のようなCNN(畳込みニューラルネットワーク)で効果を発揮しますが、翻訳や自然言語処理ではデータの順番が重要になるため、時系列データを加えたRNN(再帰型ニューラルネットワーク)やその改良型であるLSTMが使われます。従来のアーキテクチャよりもこういった「ひとひねり」した処理も高速化できるということが特徴なのかと思います。今後出てくるであろう新しいアルゴリズムにも対応しやすい、ということなのではないでしょうか。
Bulk Synchronous Parallel Model
こういった新しいアーキテクチャの場合、プログラミングを支援するための開発環境も重要になってきます。第1章の最後に、Bulk Synchronous Parallel (BSP) modelについても記載があります。
An important design factor that underlies the IPU programming paradigm is the Bulk Synchronous Parallel (BSP) model [7].
IPUのプログラミングパラダイムの根底にある重要なデザイン要素はBulk Synchronous Parallel (BSP) モデルである。
BSPについては調べてもなかなか出てこないのですが、
ここでは「大規模グラフ処理フレームワーク」と紹介されており、どうやら並列化プログラミングの枠組みのようです。
「The IPU is a true BSP machine(IPUは真のBSPマシン)」であり、Poplar SDKがそれをサポートするということで、TechCrunchの記事でPoplarがもうひとつの特徴として挙げられているのはそのためなのでしょう。
第1章だけだと、ここまでです。実際にどのようなアルゴリズムに向いているのかについては、もう少し読んでみないとわかりませんが、AlphaGoを開発したDeepMindのHassabisさんも出資しているということですし、これだけの資金を集めているわけですから、要注目のテクノロジーであることは間違い無いでしょう。
「?」をそのままにしておかないために
時代の変化は速く、特にITの分野での技術革新、環境変化は激しく、時代のトレンドに取り残されることは企業にとって大きなリスクとなります。しかし、一歩引いて様々な技術革新を見ていくと、「まったく未知の技術」など、そうそうありません。ほとんどの技術は過去の技術の延長線上にあり、異分野の技術と組み合わせることで新しい技術となっていることが多いのです。
アプライド・マーケティングでは、ITの技術トレンドを技術間の関係性と歴史の視点から俯瞰し、技術の本質を理解し、これからのトレンドを予測するためのセミナーや勉強会を開催しています。是非、お気軽にお問い合わせ下さい。