古いバージョンのブラウザーを使用しています。MSN を最適にご利用いただくために、サポートされているバージョンをご使用ください。

「リアルタイムAI」にGoogleと異なる手法で挑むMicrosoft

ITmedia PC USER のロゴ ITmedia PC USER 2017/08/29
「リアルタイムAI」にGoogleと異なる手法で挑むMicrosoft: IntelのFPGA「Stratix 10」を搭載した「Project BrainWave」のボード © ITmedia PC USER 提供 IntelのFPGA「Stratix 10」を搭載した「Project BrainWave」のボード

 コンピュータの世界は日進月歩だが、昨今は「AI(Artificial Intelligence)」と呼ばれる世界での進歩が目覚ましい。

 現在、SoC(System on a chip)やデバイスを提供するメーカーらは「インテリジェントエッジ」を標ぼうしてAI処理の一部を末端のデバイスに肩代わりさせることで、反応速度の向上やネットワーク負荷の軽減に向けた取り組みを行っており、注目の技術としてこの分野での話題が増えている。

 例えば、本連載でも取り上げたAIチップ搭載のコプロセッサ「HPU(Holographic Processing Unit) 2.0」を採用するMicrosoftの「HoloLens」次世代モデルがその典型だ。

 一方で、膨大なデータを処理するクラウド側の技術革新も急速に進んでおり、各社はAI時代に向けたデータセンターの準備を着々と進めている。今回紹介するMicrosoftの新プロジェクトである「Project BrainWave」もその1つだ。

●Googleとは異なるAIへのアプローチ

 Project BrainWaveについては、Microsoft Researchのブログで8月22日(米国時間)に紹介されている。もともとは同日に米カリフォルニア州クパチーノで開催された半導体業界の「Hot Chips」カンファレンスでの発表をベースとしており、ここではIntelの14nm製造プロセスを使った「(旧Alteraの)Stratix 10」というFPGA(Field Programmable Gate Array)によるBrainWaveのデモストレーションが披露されている。

 まずBrainWave登場の背景をみていこう。現在AIにおけるトレンドとして、機械学習(Machine Learning:ML)の手法の1つである「深層学習(Deep Learning)」に注目が集まっている。反復学習が中心となる一般的な機械学習と比較して、自動的にデータから特徴を抽出していくという点で精度や効率化の面でメリットがある手法だ。

 また、このようにして作成されたパターン認識を基に判断を行う仕組みは、人間の脳神経系になぞらえて「ニューラルネットワーク(Neural Network)」と呼ばれ、これがさらに多層化されて質問に対して的確な答えを導くよう構成された仕組みを「ディープニューラルネットワーク(Deep Neural Network:DNN)」と呼んでいる。

 例えば、与えられた人物画像からそれが誰かを判断する場合など、顔の特徴を要素分解して判断するDNNを介することで、コンピュータによる自動判断が可能になるわけだ。

 一方で、このようなDNNの実現には、一般的な機械学習と比較して膨大な計算能力を必要とし、レスポンスや処理能力の面での課題がある。これは主に既存のCPUアーキテクチャやメモリアーキテクチャの制約によるもので、「リアルタイムAI」などと呼ばれる高速レスポンスの仕組みをクラウド上に構築するにあたっては、ハードウェアレベルでの改良が必要だと考えられている。

 HPU 2.0の紹介でも触れたが、この高速化には「GPGPU」と呼ばれるGPUの高速処理だけでは足りず、最近ではハードウェアレベルで最適な処理を行うための仕組みとしてASICを利用したり、あるいはGoogleの「TPU(Tensor Processing Unit)」のように自ら機械学習ライブラリ最適化のためのプロセッサを設計してしまうなどのアプローチも行われている。

 こうした過程でMicrosoftが示したのが、クラウド上のサーバにFPGAを組み込んでしまう手法だ。Googleが提供する「TensorFlow」というライブラリに最適化された専用プロセッサを「Hard DPU(DNN Processing Unit)」とするならば、MicrosoftのFPGAを使った手法は「Soft DPU」であると同社では説明している。

 パフォーマンス面では専用ハードウェアに劣るものの、さまざまな機械学習ライブラリに適用できる汎用(はんよう)性と、性能バランスや運用の経済性をもってそのメリットを享受できるという。

 Project BrainWaveは、「高性能な分散型システムアーキテクチャ」「FPGA上に展開されたハードウェアのDNNエンジン」「学習済みモデルの展開が容易なコンパイラとランタイム」の3つの要素から成り立っている。

 詳細は後述するが、Microsoftが過去数年にわたって研究開発を続けてきたFPGAを利用したデータセンター向け高性能システム「Project Catapult」をベースにBrainWaveは構築されており、「ハードウェアマイクロサービス(Hardware Microservice)」という形でDNNが利用できる。

 ハードウェアマイクロサービスとは、FPGAリソースがプールされた場所にDNNが展開された状態のものであり、その一連の処理にソフトウェアが介在することなく特定のサーバの指令でDNNが実行される。つまり、遅延や無駄なしに高速処理が可能だということだ。

 また、BrainWaveのSoft DPUでは「Microsoft Cognitive Toolkit(CNTK)」だけでなく、GoogleのTensorFlowまで将来的に複数の機械学習ライブラリに対応していく旨を表明している。これは、トレンドの移り変わりの激しい中で最新技術に対応するうえで、ハードウェアでガチガチに組まれた処理体系よりもソフトウェアで柔軟性を持たせた方が都合がいいとの判断で、Microsoftらしいアプローチと言える。

 またMicrosoftによれば、Soft DPUでは16ビットの浮動小数点(fp16)入出力をサポートしながら、内部では精度をそれほど落とさずに高速演算が可能なよう「fp9」や「fp8」のように最適化が行われているという。

●「データセンターにFPGA」の背景

 ここで話をProject Catapultに戻そう。

 Intelが社運をかけて2015年にFPGA業界大手の一角であるAlteraを買収したように、プロセッサを構成する論理回路を自在に変更できるFPGAは大きな注目を集めている。

 しかし、この背景には処理すべきデータ量が年々増大していくという問題がある。しかも、今後は自動運転の世界で求められる画像認識や衝突予測などの分野での即時応答性のニーズへの対応も考えれば、処理の遅延は致命的だ。大量のデータを効率よく、しかも素早く処理できるアーキテクチャの開発が急務となっている。

 汎用のプロセッサアーキテクチャではなく、より用途に特化した処理をこなすための仕組みとして、TPUのような専用プロセッサや、今回のテーマであるFPGAのさらなる活用が出てきたわけだ。

 Microsoftによれば、データセンター向けのサーバにFPGAを組み込む「Project Catapult」を開発していたのは、プロトタイピングも含めれば6〜7年間にもわたる非常に長い道のりだったようだが、実際にこの成果が初めて公表されたのは2016年9月に米ジョージア州アトランタで開催された「Ignite 2016」でのことだ。

 「AIスーパーコンピュータ」のような名称で紹介されたProject Catapultは、「バージョン2」にあたる専用ボードを組み込んだシステムが現地で紹介されている。Microsoft ResearchのNExTプロジェクトでディスティンギッシュトエンジニア(Distinguished Engineer)であるダグ・バーガー氏の手で披露されたデモでは、「戦争と平和」の全文翻訳でFPGA利用時とAzureの一般的なサーバとでどの程度の時間がかかるかが比較された。

 では、実際にProject CatapultはMicrosoft内部でどのように活用されているのだろうか。その1つが、2017年5月に米ワシントン州シアトルで開催された開発者向けイベント「Build 2017」における「Inside the Microsoft FPGA-based configurable cloud」というセッションで紹介されている。

 「SDN(Software Defined Network)」というネットワーク内のデータの流れをソフトウェアで自動制御できる仕組みがあるが、これをFPGAを搭載した「Smart NIC」でさらに高速化しようというものだ。

 AzureデータセンターではサーバごとにHyper-Vの仮想マシン(VM)が動作し、このVMは仮想的なスイッチを通してSDNに対応している。この処理をSmart NICを用いることで、サーバの処理全体をより高速化しようというのだ。

 Microsoftによれば、2015年後半以降に新規展開されたAzureサーバについては全てこのSmart NICが搭載されており、さらにOCP(Open Compute Project)向けに同社が提案した「Project Olympus」向けにも50GbE対応のSmart NICを紹介している。

 Smart NICを通じて展開されたFPGAは、前述の「ハードウェアマイクロサービス」のような形で、さまざまな計算処理の高速化に寄与している。「SDNオフロード」と呼ばれるSDNソフトウェア処理の軽減の他、DNNの高速化、BingのWeb検索ランキング処理、SQLの処理などはその一例だ。

 特徴として、互いに接続されたFPGAは、サーバのCPUが実行されるコンピュータの処理プレーンとは別のプレーンとして存在し、CPUの介入なしに直接FPGA上のハードウェアマイクロサービス(HWMS)を利用できる点にある。

 従って、待ち時間や余計な処理が走らず、さらにFPGAリソースの有効活用が可能なため、単位時間内により多くの処理をこなせるメリットがある。Bingでの活用は同社AIブログの中で2016年10月に紹介されているが、HWMSを最大限活用することでFPGAのリソースが余るため、これをさらに別の処理へと振り分けることが可能だという。

●「Windows Server on ARM」への道のり

 Microsoftとデータセンターの関係を語るうえでもう1つ見逃せないのが「ARMサーバ」の動きだ。

 直近で「Windows on ARM」の話題と言えば、2017年末までにQualcommのSnapdragon 835プロセッサ搭載でフル機能のWindows 10が動作するノートPC(タブレット)が市場投入されるということ、そしてARM市場の拡大に警戒感を抱いているIntelの動向に注目が集まっているが、一方でデータセンターに関しては少し違う次元で話が進んでいる。

 以前のレポートでも説明したように、MicrosoftはQualcommとの共同開発で進めているARMプロセッサ向けのWindows Server開発プロジェクトを、あくまで社内向けとして用途限定で進めていくとしている。

 理由は幾つか考えられるが、長年のパートナーであるIntelへの配慮だけでなく、現状多くのアプリケーションがx86(x64)アーキテクチャ向けに提供されてきたこと、そしてARMの性能や顧客ニーズが未知数といったことが挙げられるだろう。

 一方で、ここまで説明してきたように、一部のコンピュータリソースを集中的に利用するタスクについてはCPUを介在せずにFPGAのような部分の処理だけでほとんど完結してしまうケースも増えてきており、コンピュータの利用スタイルが変化している。恐らく、Windows Server on ARMにおける最初のユースケースはこういったものが中心で、その成果は2018年以降、徐々に公表されるはずだ。

 MicrosoftではProject Olympusで利用されるARMサーバのコア部分にQualcommの「Centriq 2400」を用いることを公表しているが、このCentriq 2400の概要がProject BrainWaveと同じHot Chips 17で公開されている。

 Qualcommによれば、Centriq 2400は10nm製造プロセスを使った初のサーバ向けSoCであり、そのコアには同社独自開発の第5世代カスタムコアにあたる「Falkor」を採用しているという。

 Falkorの語源は不明だが、スペリング的には「ネバーエンディングストーリー」に登場した「幸運のドラゴン」こと「ファルコン(Falkor、ドイツ語版の原作ではFuchur)」と同じため、これをモチーフにしていると考えられる。

 ARMv8命令互換でAArch64のアドレス空間に対応し、EL3(TrustZone)やEL2(ハイパーバイザー)をサポートする。その最大の特徴は、「Falkor Duplex」という2つのFalkorコアが2次キャッシュを挟んで1セットでまとめられた構造で、24個のDeplexをリングバスに配置することにより、プロセッサあたり最大48コアを備えることになる。DDR4のメモリインタフェースに加え、PCIe Gen3を32レーン搭載し、パッケージサイズは55mm四方だ。

 なお、Centriq 2400の開発自体はQualcomm Datacenter Technologiesという別組織が主導しているため、Qualcomm本体のSnapdragon開発部隊の動きとは直接リンクしていないとみられる。そのため、Snapdragonの最新SoCで提供されているプロセッサコアとは大きく異なるものと考えていいだろう。

[鈴木淳也(Junya Suzuki),ITmedia]

ITmedia PC USERの関連記事

image beaconimage beaconimage beacon