2016年9月26-30日に開催されたMicrosoft Ignite Conferenceのキーノートにて、マイクロソフトは
- 機械学習APIの高速化のために世界中のAzureデータセンターにFPGAを搭載していること
- そしてその合計の計算能力は現在世界一のスパコン(中国)の十倍であること
- つまりある意味ではすでにエクサスケールコンピューティングに到達していること
を発表しました。
この話題に関してサーバ技術の観点からマイクロソフトがFPGAをデータセンターに導入する理由と戦略について説明している海外のニュース記事があり非常に興味深かった。ハードウェアの話だが、ソフトウェアエンジニアにとっても意味のある記事だと思い、問い合わせてみたところ翻訳O.K.と快諾頂いたので翻訳してみました。
翻訳元の記事
この記事はスーパーコンピュータの性能ランキングを発表しているTop500のニュースサイトで2016年9月27日に公開された記事の和訳です。
Microsoft Goes All in for FPGAs to Build Out AI Cloud
*訳中の段落タイトルは翻訳時に翻訳者が追加したもので原文にはありません。
本文
マイクロソフトはすべてのAzureクラウドサーバにアルテラ製FPGAが搭載されたことを発表した。同社によれば「世界初のAI用スーパーコンピュータ」が誕生したことになる。今回のFPGA導入は15カ国のデータセンターに渡って行われ、全ノードの計算能力を合計すると1エクサオプス(訳注1*)を上回る。この発表はアトランタで開催されたMicrosoft Ignite Conferenceにおいて、同社CEO Satya・Nadella氏と同社エンジニアのDoug Burger氏によって行われた。
マイクロソフトのFPGAへの取り組み
今回のFPGA搭載システムは、マイクロソフトの5年以上におよぶ取り組みの到達点だ。同社はAzureクラウドサービスにおいて、高いスループットが要求される機械学習やその他のアプリケーションを高速化する方法を探してきた。この取り組みは2011年にまでさかのぼる。この年、人工知能を利用したサービス及びアプリケーションのための高速化ファブリックの設計を目指したCatapultプロジェクトが開始された。プロジェクト開始の理由は、ムーアの法則によるCPUの性能向上に頼っているだけでは、人工知能などのハイパースケールアプリケーションが要求する計算能力を提供することはできない、というものだった。伝統的なHPCにおいて、マルチコアCPUだけでは(科学技術計算における)計算能力向上への要求を満たせなかったのと同じように。
マイクロソフトによる最初の本格的なFPGAへの取り組みは、Bingで用いられるサーチランキングアルゴリズムの高速化だった。Bingは数億人に利用されているクラウドアプリケーションだ。アプリケーションの一部のコードをFPGAを用いてプログラムすることで、サーバあたりわずか10%の電力増大で、スループットを二倍に向上することができた。この成功の後、同社はConvolutional Neural Network(以下、CNN)を高速化する実験を行った。画像分類ネットワークのトレーニングにFPGAを用いることで、当時の最も優れたGPU実装と同等の1ワットあたり性能(*注2)を達成した。
マイクロソフトのFPGA戦略とその理由
とはいえ、少なくとも当面は、このようなニューラルネットワークのトレーニング処理にFPGAを用いることにマイクロソフトは積極的ではないように見える。現時点で、同社はより計算インテンシブなトレーニングフェーズを、今でも比較的小さなGPUクラスタを用いたオフライン処理として行っている。またAzureでは、ゲノム解析その他の科学技術計算処理向けにGPUサーバを提供してもいる。今回のFPGAシステムは、主に画像認識、音声認識や自動翻訳などにおける推定処理のフェーズで用いることを想定しているようだ。推定処理は、(トレーニング処理用のGPUクラスタと比べて)ずっと大きなインフラストラクチャーを必要とし、リアルタイムに数百万のリクエストに対する処理を行うことができなければならない。
都合の良いことにFPGAはこのようなワークロードに大変適している。というのも、FPGAはディープラーニングやその他のAIアルゴリムを最適化できる低精度演算(8ビット処理・16ビット処理)を提供している。さらに重要なことは、FPGAは1チップあたり25Wのオーダーという比較的少ない電力しか消費しないことだ。データセンター全体の供給可能電力が限られている中、一つ一つのウェブサーバに課せられる電力制約も厳しいものになるが、(1チップあたりの)消費電力が小さいため、一つあるいは複数個のFPGAを各ウェブサーバに搭載することは比較的容易になる。
もちろん、ウェブベースのAIサービスに注力しているNVIDIAを追いかけている方であれば、ほぼ同じアプリケーションセットをターゲットとした1チップ当たり50ワットで動作するP4 GPUが提供されていることを知っていることだろう。しかしながら、マイクロソフトはAIに対してNVIDIAとは異なった考え方をしている。Windows、Office 365、Azure、Cortana、そしてSkypeといったより広い領域のアプリケーションを提供しなければならないためだ。マイクロソフトは文字検索・画像検索、コンピュータビジョン、自然言語処理、翻訳、レコメンデーションエンジンなど多種多様な人口知能サービス・アプリケーションをサポートするプラットフォームを求めている訳だ。ウェブスケールのデータセットを用いることができるデータ解析やパターンマッチングに関わる、基本的にすべての処理がターゲットとなる。
様々な処理の多様な性能要求を考えた場合、FPGA技術は再構成可能性(リコンフィギュラビリティ)という魅力を備えている。これは、CPUやGPUあるいは専用ASICにはないものだ。FPGAはハードワイアードなASICに比肩する効率で動作するアプリケーション専用プロセッサとしてプログラムできる一方、GPUはもちろんCPUとほとんど変わらない柔軟性を備えている。しかし、FPGAには落とし穴もある。FPGAをプログラミングするのは難しいことだ。FPGAプログラミングは、チップのゲートレイアウトを指定する必要があるため、汎用プロセッサ上でのソフトウェアプログラミングよりもずっと難しい。近年のOpenCLやその他のFPGA向けのコンパイラ技術の発展があるとはいえ、FPGAを用いてアプリケーションを設計することは平均的なソフトウェアプログラマの仕事ではないだろう。
(しかし)、マイクロソフトの試算によれば、FPGA導入によるアプリケーション開発コストの増大は数百万の顧客が利用する巨大なインフラを対象とした場合償却可能である。そしてFPGAが再構成可能であるという事実は、ソフトワイアードされたFPGA上のアプリケーションが、マイクロソフトクラウド上のワークロードの変化に応じて、変更できるということを意味する。さらに良いことに、新しく改良されたアルゴリズムがこれらのアプリケーションに対して開発された場合でも、そのハードウェアはリアルタイムにアップデートすることもできるわけだ。
アルテラを買収したインテルとの協力体制
インンテルがFPGAメーカーであるアルテラを買収したことは、前述のマイクロソフトの試算をずっと容易にしたことだろう。昨年のアルテラ買収時には、インテルは2020年までに30%のデータセンターサーバがFPGAを搭載するようになると予測していた。今回の発表で、マイクロソフトはインテルのこの予測の実現に貢献する形となる。インテルがデータセンター向けのFPGAを提供することで、マイクロソフトはFPGA搭載システム向けのソフトウェアツールやサーバーデザインの充実を期待することができる。インテルはすでに"Broadwell" Xeon-FPGAチップの出荷を開始している。将来的にはNadella氏とマイクロソフトはこのプラットフォームに特に興味を持つことになるのだろう。
ここで、今回マイクロソフトが自社のFPGAクラウドを構築するために採用した実際のサーバデザインを見てみよう。元のCatapultプロジェクトにおけるサーバはデュアルソケット16コアのXeon boxに64GBのRAMとアルテラ製Stratix V FPGAカードを搭載したものだった。ストレージには4つの2TB SATAディスクと2つのマイクロン製の480GB SSDがプロセッサにデータを供給していた。この8月、マイクロソフトはカタパルトバージョン2(v2)を発表している。このサーバデザインに関する情報は限定的ではあるものの、FPGAがCPU、メインメモリー、そしてネットワークに接続されるサーバ構成となっているようだ。この構成により、CPUを介さないFPGA間の直接データ通信が可能になっている。このようなデザインは、クラウドベースの機械学習タスクで必要になる、スケールアウト型のサーバファームにとって非常に重要なものだ。しかしながら、この第二世代カタパルトサーバが現在のAzureクラウド内のサーバの内どの程度の割合を占めているかは、今の処、明らかではない。*
*記事公開後のDoug Burger氏との書簡によればすべてのFPGAサーバがカタパルトv2デザインを利用している。
FPGAで高速化されるAzure
新しいFPGAインフラに関するキーノートの中で、Nadella氏はさまざな人工知能ベースのクラウドアプリケーションについて長い時間をかけて説明した。Bing検索の候補選定、画像認識、Skypeの翻訳機能。これらの一部はOffice 365アプリケーションにAIの賢さをもたらす。例えば、コンピュータ言語学をWordに、Eメールの自動分類処理をOutlookに、といった具合だ。もう一つの注力領域は、マイクロソフトのパーソナルデジタルアシスタント、Cortanaだ。Cortanaはフロントエンドに自然言語処理を、バックエンドに機械学習を利用しており、(IBMの人口知能)Watsonが提供しているサービスに似たものを一般にも提供しようとするものだ。CortanaはすべてのタイプのWindowsプラットフォームに含まれており、アンドロイド端末でも利用できる。その技術は自分たちのソフトウェア製品の中でCortanaのAIを利用したいと考える、(3rdパーティの)ビジネス用ソフトウェア群からも利用可能となっている。
また、FPGAはAI処理を高速化するるだけでなく、Azureの25Gクラウドネットーワ(*訳注3)を高速化するためにも用いられている。FPGAによってネットワークレイテンシは10分の1になったという。もちろんこの機能は動的なもので、FPGAはネットワーク通信の高速化、機械学習処理の高速化、またはその両方に利用することができる。
Nadella氏のAIに関する発表の中で、最も興味深かったデモの一つはマイクロソフトリサーチのダグ・Burger氏を壇上に呼んだ場面だ。
ダグ・Burger氏はAzureの自動翻訳機能について強調した。4つのFPGAが搭載された1台サーバによって、1440ページに及ぶ有名なロシアの小説「戦争と平和」をわずか2.6秒で翻訳できた。一台の24コアCPUサーバでは、19.9秒もかかりさらに60ワットも余分な電力が消費される処理だ。デモ中で利用されているサーバは、10のCPUコアと4つの30ワットアルテラ製Strata V D5 FPGAベースのアクセラレータカードを利用しているようだった。そのピーク性能は7.9tera-opsとなる。
英語版のウィキペディアを翻訳するデモはさらに印象的なものだった。先ほどと同じ4つのFPGAカードを使い、4時間に満たない時間で30億に及ぶすべての単語(もし紙に印刷したとすればその紙束は約400メートルに及ぶ)を別の言語に翻訳することができるとのことだ。しかし、今回のサーバ構成の真髄は、(全世界に及ぶ)Azureクラウド全体のサーバがFPGAを搭載したことだ。Burger氏がAzureのほぼ全処理能力を一度に利用した時(約1エクサオプスになる)英語版ウィキペディアの翻訳処理はわずかに10分の1秒未満の時間で終わった。
もちろん、たとえ10分の1秒であっても、ほとんどの人はAzureクラウド全体の処理能力を利用することなどできない。しかしながら、マイクロソフトが実質的に世界初のエクサスケールコンピュータを構築したことは特筆すべき偉業だろう。もちろん、倍精度のエクサスケールを達成したわけではないが、機械学習にとってエクサスケールコンピュータの出現は、例え数千の人々がその計算資源を共有するとしてもゲームチェンジャーとなる可能性を秘めている。「世界一のスーパーコンピュータの10倍のAI処理能力がある、ということです」とBurger氏は語っている。「我々はこれまで解くことのできなかった問題をAIによって解くことができるようになったのです。」
訳注
-
訳注1: コンピュータの処理性能を表す単位。exaはtelaの1000倍のpetaの1000倍の単位。スーパーコンピュータ業界ではエクサスケールの処理能力は一つのマイルストーンとして各国がスパコン開発の目標としている。
-
訳注2: スケールアウトを前提とした現在の大規模システムでは、性能を1ワット当たりの性能で評価するのがポピュラーとなっている。理由はデータセンター全体の総消費電力がシステムスケールアップのボトルネックになっているため。
-
訳注3: データセンター内でサーバ間通信に用いられる高速ネットワーク