[翻訳] マイクロソフトはFPGAにAIクラウドの未来を賭ける


2016年9月26-30日に開催されたMicrosoft Ignite Conferenceのキーノートにて、マイクロソフトは

* 機械学習APIの高速化のために世界中のAzureデータセンターにFPGAを搭載していること
* そしてその合計の計算能力は現在世界一のスパコン(中国)の十倍であること
* つまりある意味ではすでにエクサスケールコンピューティングに到達していること


を発表しました。

この話題に関してサーバ技術の観点からマイクロソフトがFPGAをデータセンターに導入する理由と戦略について説明している海外のニュース記事があり非常に興味深かった。ハードウェアの話だが、ソフトウェアエンジニアにとっても意味のある記事だと思い、問い合わせてみたところ翻訳O.K.と快諾頂いたので翻訳してみました。

## 翻訳元の記事

この記事はスーパーコンピュータの性能ランキングを発表している[Top500のニュースサイト](https://www.top500.org/news/)で2016年9月27日に公開された記事の和訳です。

[Microsoft Goes All in for FPGAs to Build Out AI Cloud](https://www.top500.org/news/microsoft-goes-all-in-for-fpgas-to-build-out-cloud-based-ai/)

*訳中の段落タイトルは翻訳時に翻訳者が追加したもので原文にはありません。

## 本文

<!-- 
Microsoft has revealed that Altera FPGAs have been installed across every Azure cloud server, creating what the company is calling “the world’s first AI supercomputer.” The deployment spans 15 countries and represents an aggregate performance of more than one exa-op. The announcement was made by Microsoft CEO Satya Nadella and engineer Doug Burger氏 during the opening keynote at the Ignite Conference in Atlanta.
-->

マイクロソフトはすべてのAzureクラウドサーバにアルテラ製FPGAが搭載されたことを発表した。同社によれば「世界初のAI用スーパーコンピュータ」が誕生したことになる。今回のFPGA導入は15カ国のデータセンターに渡って行われ、全ノードの計算能力を合計すると1エクサオプス(訳注1*)を上回る。この発表はアトランタで開催されたMicrosoft Ignite Conferenceにおいて、同社CEO Satya・Nadella氏と同社エンジニアのDoug Burger氏によって行われた。

<!-- 
The FPGA build-out was the culmination of more than five years of work at Microsoft to find a way to accelerate machine learning and other throughput-demanding applications and services in its Azure cloud. The effort began in earnest in 2011, when the company launched Project Catapult, the R&D initiative to design an acceleration fabric for AI services and applications. The rationale was that CPU evolution, a la Moore’s Law, was woefully inadequate in keeping up with the demands of these new hyperscale applications. Just as in traditional high performance computing, multicore CPUs weren’t keeping up with demand.
-->

### マイクロソフトのFPGAへの取り組み

今回のFPGA搭載システムは、マイクロソフトの5年以上におよぶ取り組みの到達点だ。同社はAzureクラウドサービスにおいて、高いスループットが要求される機械学習やその他のアプリケーションを高速化する方法を探してきた。この取り組みは2011年にまでさかのぼる。この年、人工知能を利用したサービス及びアプリケーションのための高速化ファブリックの設計を目指したCatapultプロジェクトが開始された。プロジェクト開始の理由は、ムーアの法則によるCPUの性能向上に頼っているだけでは、人工知能などのハイパースケールアプリケーションが要求する計算能力を提供することはできない、というものだった。伝統的なHPCにおいて、マルチコアCPUだけでは（科学技術計算における）計算能力向上への要求を満たせなかったのと同じように。

<!-- 
Microsoft’s first serious foray into FPGA came with accelerating Bing’s search ranking algorithm, a cloud application used by hundreds of millions of people. Employing FPGAs programmed for that one piece of code, the company was able to double the throughput on the algorithm at a cost of just 10 percent more power per server. From there Microsoft experimented with convolutional neural networks, using FPGAs to train image classification networks, achieving performance per watt on par with that of the best GPUs at the time.
-->

マイクロソフトによる最初の本格的なFPGAへの取り組みは、Bingで用いられるサーチランキングアルゴリズムの高速化だった。Bingは数億人に利用されているクラウドアプリケーションだ。アプリケーションの一部のコードをFPGAを用いてプログラムすることで、サーバあたりわずか10%の電力増大で、スループットを二倍に向上することができた。この成功の後、同社はConvolutional Neural Network(以下、CNN)を高速化する実験を行った。画像分類ネットワークのトレーニングにFPGAを用いることで、当時の最も優れたGPU実装と同等の1ワットあたり性能(*注2)を達成した。

<!--
It should be said that, at least for the time being, Microsoft doesn’t appear to be aiming the FPGA-powered infrastructure at the training of these neural nets. At this point, the company still uses smaller clusters GPUs to perform the more computationally intense training phase offline. And it also offers GPU servers to the public in its Azure offering for things like genome sequencing and other scientific workloads. The FPGA build-out looks to be primarily aimed at inferencing (evaluating already trained neural networks) for applications such as image recognition, speech recognition, language translation and so on. Such a capability requires a much larger infrastructure, one that can evaluate millions of such requests in real time spread across a global cloud.
-->

### マイクロソフトのFPGA戦略とその理由

とはいえ、少なくとも当面は、このようなニューラルネットワークのトレーニング処理にFPGAを用いることにマイクロソフトは積極的ではないように見える。現時点で、同社はより計算インテンシブなトレーニングフェーズを、今でも比較的小さなGPUクラスタを用いたオフライン処理として行っている。またAzureでは、ゲノム解析その他の科学技術計算処理向けにGPUサーバを提供してもいる。今回のFPGAシステムは、主に画像認識、音声認識や自動翻訳などにおける推定処理のフェーズで用いることを想定しているようだ。推定処理は、(トレーニング処理用のGPUクラスタと比べて）ずっと大きなインフラストラクチャーを必要とし、リアルタイムに数百万のリクエストに対する処理を行うことができなければならない。

<!--
Conveniently, FPGAs are well suited for such workloads, offering the type low-precision (8-bit and 16-bit) capabilities that these deep learning and other AI algorithms require for optimal efficiency. More importantly, they can do so in a rather small power envelope – on the order of 25 watts per chip. That makes it relatively easy to slide one or more of these devices into a web server, which tend to be power-constrained because of the scale of the datacenters they must run in.
-->
  
都合の良いことにFPGAはこのようなワークロードに大変適している。というのも、FPGAはディープラーニングやその他のAIアルゴリムを最適化できる低精度演算(8ビット処理・16ビット処理)を提供している。さらに重要なことは、FPGAは1チップあたり25Wのオーダーという比較的少ない電力しか消費しないことだ。データセンター全体の供給可能電力が限られている中、一つ一つのウェブサーバに課せられる電力制約も厳しいものになるが、(１チップあたりの)消費電力が小さいため、一つあるいは複数個のFPGAを各ウェブサーバに搭載することは比較的容易になる。

<!--
Of course, if you’ve been tracking NVIDIA about their aspirations in web serving AI, you’ll know they offer a 50-watt P4 GPU aimed at roughly the same application set. Microsoft, though, as a result of its broad range of offerings in Windows, Office 365, Azure, Cortana, and Skype, sees the AI space differently. It wants a platform that can support many different kinds of intelligent services and applications – search (text and image), computer vision, natural language processing and translation, recommendation engines – basically anything that that involves advanced analytics and pattern matching driven by web-scale datasets.
-->

もちろん、ウェブベースのAIサービスに注力しているNVIDIAを追いかけている方であれば、ほぼ同じアプリケーションセットをターゲットとした1チップ当たり50ワットで動作するP4 GPUが提供されていることを知っていることだろう。しかしながら、マイクロソフトはAIに対してNVIDIAとは異なった考え方をしている。Windows、Office 365、Azure、Cortana、そしてSkypeといったより広い領域のアプリケーションを提供しなければならないためだ。マイクロソフトは文字検索・画像検索、コンピュータビジョン、自然言語処理、翻訳、レコメンデーションエンジンなど多種多様な人口知能サービス・アプリケーションをサポートするプラットフォームを求めている訳だ。ウェブスケールのデータセットを用いることができるデータ解析やパターンマッチングに関わる、基本的にすべての処理がターゲットとなる。

<!--
For such a diverse set of offerings, FPGA technology has an attraction beyond any CPU, GPU or purpose-built ASIC: reconfigurability. The chips could be programmed to operate as application-specific processor at efficiencies that approach that of a hard-wired ASIC, but with most of the flexibility of a CPU and certainly a GPU. There is a catch though. Programming FPGAs is hard. It involves specifying the gate layouts of the chip, and is therefore a much more difficult undertaking than programming general-purpose microprocessors. Although advances have been made in recent times with OpenCL and other FPGA-friendly compiler technologies, designing applications for one of these devices is not a task for the average software developer.
-->

様々な処理の多様な性能要求を考えた場合、FPGA技術は再構成可能性(リコンフィギュラビリティ)という魅力を備えている。これは、CPUやGPUあるいは専用ASICにはないものだ。FPGAはハードワイアードなASICに比肩する効率で動作するアプリケーション専用プロセッサとしてプログラムできる一方、GPUはもちろんCPUとほとんど変わらない柔軟性を備えている。しかし、FPGAには落とし穴もある。FPGAをプログラミングするのは難しいことだ。FPGAプログラミングは、チップのゲートレイアウトを指定する必要があるため、汎用プロセッサ上でのソフトウェアプログラミングよりもずっと難しい。近年のOpenCLやその他のFPGA向けのコンパイラ技術の発展があるとはいえ、FPGAを用いてアプリケーションを設計することは平均的なソフトウェアプログラマの仕事ではないだろう。

<!--
Microsoft has made the calculation that the added costs of FPGA application development can be amortized over a large infrastructure that can serve millions of customers. And the fact that these chips are reconfigurable means the soft-wired applications running on them can be changed on the fly to accommodate the varying workloads of Microsoft’s cloud. Even better, as new and improved algorithms are developed for these applications, the “hardware” can be upgraded in real time
-->

(しかし)、マイクロソフトの試算によれば、FPGA導入によるアプリケーション開発コストの増大は数百万の顧客が利用する巨大なインフラを対象とした場合償却可能である。そしてFPGAが再構成可能であるという事実は、ソフトワイアードされたFPGA上のアプリケーションが、マイクロソフトクラウド上のワークロードの変化に応じて、変更できるということを意味する。さらに良いことに、新しく改良されたアルゴリズムがこれらのアプリケーションに対して開発された場合でも、そのハードウェアはリアルタイムにアップデートすることもできるわけだ。

### アルテラを買収したインテルとの協力体制

<!--
The fact the Intel has acquired FPGA-maker Altera probably made that calculation for Microsoft that much easier. At the time of the Altera purchase last year, the chipmaker predicted that 30 percent of datacenter servers will be equipped with FPGAs by 2020. Now Microsoft is helping Intel make that prediction come true. Certainly with Intel’s backing of FPGAs for the datacenter, Microsoft can be more confident that there will be an expanding array of software tools and server designs for FPGA-accelerated systems. Intel has already started shipping an integrated “Broadwell” Xeon-FPGA chip, which looks to be the kind of platform that Nadella and company would be especially interested in somewhere down the road.
-->

インンテルがFPGAメーカーであるアルテラを買収したことは、前述のマイクロソフトの試算をずっと容易にしたことだろう。昨年のアルテラ買収時には、インテルは2020年までに30%のデータセンターサーバがFPGAを搭載するようになると予測していた。今回の発表で、マイクロソフトはインテルのこの予測の実現に貢献する形となる。インテルがデータセンター向けのFPGAを提供することで、マイクロソフトはFPGA搭載システム向けのソフトウェアツールやサーバーデザインの充実を期待することができる。インテルはすでに"Broadwell" Xeon-FPGAチップの出荷を開始している。将来的にはNadella氏とマイクロソフトはこのプラットフォームに特に興味を持つことになるのだろう。

<!--
Which brings us to the actual server design that Microsoft used to build out its FPGA cloud. The original Catapult server was a dual-socket 16-core Xeon box, with 64 GB of RAM and an Altera Stratix V FPGA card. On the storage side, four 2TB SATA disks and two 480GB Micron SSDs fed data to the processors. In August, Microsoft announced Catapult v2. Although information about this server is scant, in this design the FPGAs are connected to the CPU, main memory, and network. As a result, the FPGAs can talk directly to one another, rather than going through the CPU as the intermediary. Such a design is much better for the kind of scaled-out server farm needed for cloud-based machine learning tasks. However, at this point it is unclear what proportion of these second generation Catapult servers make up the Azure cloud.*
-->

ここで、今回マイクロソフトが自社の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

<!--
In Nadella’s keynote of the new FPGA infrastructure he went through a litany of intelligent cloud applications beyond the usual suspects of Bing search, image recognition and Skype language translation. Part of this involved infusing Office 365 applications with AI smarts, adding features like computational linguistics to Word, and intelligent email triage to Outlook. Another area of focus is Cortana, Microsoft’s personal digital assistant, which uses natural language processing on the front end to and machine learning on the backend to provide something akin to Watson for the masses. It’s included on Windows platforms of all types and is also available on Android devices. The technology can also be accessed via a software suite for businesses that want to integrate Cortana’s AI building blocks into their own software.
-->

新しいFPGAインフラに関するキーノートの中で、Nadella氏はさまざな人工知能ベースのクラウドアプリケーションについて長い時間をかけて説明した。Bing検索の候補選定、画像認識、Skypeの翻訳機能。これらの一部はOffice 365アプリケーションにAIの賢さをもたらす。例えば、コンピュータ言語学をWordに、Eメールの自動分類処理をOutlookに、といった具合だ。もう一つの注力領域は、マイクロソフトのパーソナルデジタルアシスタント、Cortanaだ。Cortanaはフロントエンドに自然言語処理を、バックエンドに機械学習を利用しており、(IBMの人口知能)Watsonが提供しているサービスに似たものを一般にも提供しようとするものだ。CortanaはすべてのタイプのWindowsプラットフォームに含まれており、アンドロイド端末でも利用できる。その技術は自分たちのソフトウェア製品の中でCortanaのAIを利用したいと考える、(3rdパーティの)ビジネス用ソフトウェア群からも利用可能となっている。

<!--
Besides being employed for AI work, the FPGAs are also being used to accelerate the Azure’s 25G cloud network. According to Microsoft, that acceleration has delivered a 10x reduction in latency. And apparently this feature is dynamic, so the FPGAs can be employed for network acceleration, machine learning workloads, or both.
-->

また、FPGAはAI処理を高速化するるだけでなく、Azureの25Gクラウドネットーワ(*訳注3)を高速化するためにも用いられている。FPGAによってネットワークレイテンシは10分の1になったという。もちろんこの機能は動的なもので、FPGAはネットワーク通信の高速化、機械学習処理の高速化、またはその両方に利用することができる。

<!--
One of the most interesting demonstrations during Nadella’s AI soliloquy was when he brought out Doug Burger from Microsoft Research, who highlighted Azure’s enhanced language translation capabilities. A server equipped with four FPGAs translated all 1,440 pages of the famous Russian novel War and Peace into English in just 2.6 seconds; a single 24-core CPU server took 19.9 seconds and required 60 more watts of power to do so. By the way, the demonstration appeared to use a server with 10 CPU cores and four 30-watt accelerator cards based on the Altera Strata V D5 FPGA. Its peak compute performance was listed at 7.9 tera-ops.
-->

Nadella氏のAIに関する発表の中で、最も興味深かったデモの一つはマイクロソフトリサーチのダグ・Burger氏を壇上に呼んだ場面だ。
ダグ・Burger氏はAzureの自動翻訳機能について強調した。4つのFPGAが搭載された１台サーバによって、1440ページに及ぶ有名なロシアの小説「戦争と平和」をわずか2.6秒で翻訳できた。一台の24コアCPUサーバでは、19.9秒もかかりさらに60ワットも余分な電力が消費される処理だ。デモ中で利用されているサーバは、10のCPUコアと4つの30ワットアルテラ製Strata V D5 FPGAベースのアクセラレータカードを利用しているようだった。そのピーク性能は7.9tera-opsとなる。

<!--
An even more impressive demonstration involved translating the contents of the English version Wikipedia. The same four FGPA cards would take nearly four hours to translate all 3 billion words of text (about a quarter-mile stack of paper if printed out) into another language. But the beauty of this setup is that the whole cloud now has FPGAs, and when Burger took most of the capacity of Azure – about one exa-op worth of compute – and applied it to the Wikipedia job, it ran through the entire text in less than a tenth of a second.
-->

英語版のウィキペディアを翻訳するデモはさらに印象的なものだった。先ほどと同じ4つのFPGAカードを使い、4時間に満たない時間で30億に及ぶすべての単語（もし紙に印刷したとすればその紙束は約400メートルに及ぶ）を別の言語に翻訳することができるとのことだ。しかし、今回のサーバ構成の真髄は、(全世界に及ぶ）Azureクラウド全体のサーバがFPGAを搭載したことだ。Burger氏がAzureのほぼ全処理能力を一度に利用した時（約1エクサオプスになる）英語版ウィキペディアの翻訳処理はわずかに10分の1秒未満の時間で終わった。

<!--
Now of course most people aren’t going to be able to use the entire capacity of the Azure cloud, not even for a tenth of a second, but the fact the Microsoft has essentially built the world’s first exascale computer is quite an achievement. Yes, it’s not double precision floating point exaflops, but nonetheless, for machine learning software, an exa-op is a potential game-changer, even if thousands of people are sharing that resource. “That means we have 10 times the AI capability of the world’s largest existing supercomputer,” Burger said. “We can solve problems with AI that haven’t been solved before.”
-->

もちろん、たとえ10分の1秒であっても、ほとんどの人はAzureクラウド全体の処理能力を利用することなどできない。しかしながら、マイクロソフトが実質的に世界初のエクサスケールコンピュータを構築したことは特筆すべき偉業だろう。もちろん、倍精度のエクサスケールを達成したわけではないが、機械学習にとってエクサスケールコンピュータの出現は、例え数千の人々がその計算資源を共有するとしてもゲームチェンジャーとなる可能性を秘めている。「世界一のスーパーコンピュータの10倍のAI処理能力がある、ということです」とBurger氏は語っている。「我々はこれまで解くことのできなかった問題をAIによって解くことができるようになったのです。」

## 訳注

* 訳注1: コンピュータの処理性能を表す単位。exaはtelaの1000倍のpetaの1000倍の単位。スーパーコンピュータ業界ではエクサスケールの処理能力は一つのマイルストーンとして各国がスパコン開発の目標としている。

* 訳注2: スケールアウトを前提とした現在の大規模システムでは、性能を１ワット当たりの性能で評価するのがポピュラーとなっている。理由はデータセンター全体の総消費電力がシステムスケールアップのボトルネックになっているため。

* 訳注3: データセンター内でサーバ間通信に用いられる高速ネットワーク