2017年8月30日水曜日

Skype、通話しながらコードエディタも共有できる「インタビュー」機能を無償公開。アカウントなしで使用可能

米マイクロソフトが、PCブラウザー版のSkypeにインタビュー機能を試験的に追加しました。ビデオ通話をしつつ、プログラミング用のコードエディタをリアルタイム共有する機能で、チームを組んでのプログラミング作業に役立ちそうです。

インタビュー機能はSkypeアカウントを持っていなくても使用でき、インタビュー用のページ作成時に表示される招待用のURLを送れば、通話相手と1つのコードエディタを同時に操作できます。

記事執筆時点ではマイクロフトのEdgeとChromeがインタビュー機能に対応、言語はC、C ++、C#、Java、JavaScript、Python、Rubyが扱えます。

プログラムコードをリアルタイムに共有するサービスはHackerRank、CodeVue、Codilityなどがすでにあるものの、Skypeを使うメリットはそのプラットフォームのユーザー数の多さ。またビデオ通話を同時に可能にすることで、複数のアプリケーションを行き来することなく、相手がそばにいるような感覚で作業ができそうなのも大きなメリットと言えそうです。

インタビュー機能は現在のところプレビュー版の位置付けであり、また英語環境のみの提供となっています。使用できるのはPCブラウザー版だけで、正式リリースとなった場合にデスクトップアプリ版に搭載されるのかもまだわかりません。

とはいえ、補完機能や強調表示などもきちんと搭載されたコードエディタが使え、遠隔でもいわゆるペアプログラミングができるのは、便利なことにちがいありません。HTMLやCSSに対応すれば、ウェブ制作の現場でも仕事の効率化に貢献しそうです。そのためには、ぜひともプレビューで終わらず、正式版にまでこぎつけてほしい機能です。

「リアルタイムAI」にGoogleと異なる手法で挑むMicrosoft 「BrainWave」プロジェクトとは?

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

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

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

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

 
IntelFPGAStratix 10」を搭載した「Project BrainWave」のボード

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

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

 
Intel14nm製造プロセスを使ったFPGA「(旧Alteraの)Stratix 10

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

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

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

 
昨今のAIにおけるトレンドとDNNの勃興

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

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

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

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

 
各社で異なるDNNへのハードウェアによるアプローチ

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

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

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

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

 
Project BrainWaveではFPGAを高速接続してDNNの展開が容易なハードウェアマイクロサービスを構築する

 
Project BrainWaveを構成する要素。一番下のFPGAのアーキテクチャのみ既存のProject Catapultを利用し、この上にSoft DPUの仕組みを構築している

 
FPGA内のSoft DPUのアーキテクチャ。Cライクなプログラミングモデルを採用しており、FPGAで一般的なHDLRTLの記述手法とは異なる

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

 
Soft DPUを使ったパフォーマンス比較。ピーク時のスループットをまとめたグラフとなる。これだけだと、どの程度のパフォーマンス効果があるのか分かりにくいが、この成果はいずれ一般にも理解しやすいようMicrosoftが紹介することになるだろう

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

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

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

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

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

 
より大容量のデータを高速かつ効率的に処理するためにFPGAなどの専用ハードウェアに注目が集まっている

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

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

 
MicrosoftによるFPGAのプロジェクト(Project Catapult)のロードマップ。公式発表された2016年より前からAzureデータセンターへの展開がスタートしている

 
Catapult v2のアーキテクチャ。ネットワークカード(NIC)とネットワークスイッチを仲介する形でQSFPのインタフェースで接続を行う

 
Microsoft ResearchMSR)のNExTプロジェクトでディスティンギッシュトエンジニアであるダグ・バーガー氏が手に持っているのがCatapult v2のボードだ

 
『戦争と平和』を用いた全文翻訳のデモ。Ignite 2016にて

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

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

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

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

 
新規のAzureサーバには展開済みというFPGAを搭載したSmart NIC

 
Project Olympus向けの50GbE Smart NIC

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

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

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

 
一般的なCPUを使ったサーバの実行環境

 
ハードウェアマイクロサービス(HWMS)では、CPUとは独立したプレーン上でFPGAが結びついて処理を実行することが可能

 
HWMSを使ってBing検索ランキング処理を実行することで、余ったFPGAリソースを別の処理に振り分けることが可能だ

Windows Server on ARM」への道のり

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

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

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

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

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

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

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

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

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

 
Qualcommのサーバ向けプラットフォーム「Centriq 2400」の概要

 
Centriq 2400に搭載されるのはQualcomm独自開発のARM互換「Falkor」コア

 
Centriq 2400では「Falkor Duplex」と呼ばれる2つのFalkorコアを合わせたブロックを基本としている

 
Falkor Duplex 24個をリングバスでつなぎ合わせて最大48コアのSoCとして動作する

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

 

2017年8月29日火曜日

既存のものよりも100倍小さいアンテナを実現できる技術が開発される

現在無線通信で使われているよりも100倍ほど小さいアンテナを実現できる技術が開発された。この技術を応用することで、脳に埋め込むようなデバイスや小型医療機器、アクセサリのように身につけられる超小型ウェアラブルデバイスなどを実現できるという(Nature AsiaScienceNature誌掲載論文Slashdot)。

この技術は、光と電波、音波などさまざまな電磁波で発生する相互作用を利用するもの。一般的なアンテナは対象とする電磁波の波長に対応した長さが必要だが、今回開発された技術は「特定の周波数の電磁波と共振する膜」のようなものを利用するもので、振動すると磁化状態が変化する膜を共振によって物理的に振動させ、その磁気変化を検出することで信号を受信するという。

すでにUHFおよびVHF帯での実証も行われており、同サイズの既存のアンテナよりも特性が優れていることが確認できたという。