日経テクノロジーonline SPECIAL

日本アルテラ マシーンラーニング

機械学習の応用が拡大し、本格的な活用を支えるための開発環境の整備が進んできた。インテル プログラマブル・ソリューション事業本部となったアルテラのFPGAを使えば、さまざまな応用に合わせたニューラルネットワークを、より効果的かつ効率的にシステムに実装できるようになる。同社のFPGAは、単位電力当たりの演算性能では、GPUを常に凌駕する適性の高さを誇る。機械学習システムを開発するエンジニアの習熟度に合わせた、万全の支援体制も整っている。

 膨大なウエブページのランキング付けから、自然言語の認識、がんの診断、未知の領域で活躍する惑星探査機まで。機械学習は、さまざまな用途への応用が期待されている。これらの情報処理には、人間がコンピューターの処理手順を指示する従来方法では実現できないような、高度な判断能力が欠かせない。コンピューターが自ら処理手順を学ぶ、機械学習だからこそ実現可能になる。そして機械学習は今、ディープラーニングの活用で、人間を超える判断能力を獲得しつつある。

 機械学習には、さまざまな方法がある。機械学習を認識処理などに応用する場合、処理の対象や内容の違いに応じて、適切なニューラルネットワークや学習手順を選択して、利用する必要がある。

 例えば、画像の分類や検出では、畳み込みニューラルネットワーク(CNN)が適している。自然言語の認識やネットワークへの侵入検知、財務予想などでは、再帰型ニューラルネットワーク(RNN)など別のディープラーニング手法の活用が向いている。既に多くの利用実績がある、有名ニューラルネットワークも登場している。最も利用者が多い「AlexNet」や、最も深い層を持つ「GoogleNet」などが、その代表例だ。

 さらに、機械学習を応用したシステムを効率よく開発するための、オープンなフレームワークが数多く整備されてきた(図1)。その代表例が、「Caffe」や「Torch」である。こうしたフレームワークを有効活用することで、機械学習に関する専門的な知識がなくても、システムに簡単に実装し、利用できるようになった。あらかじめ、標準的なニューラルネットワークの構造や、それに向けたライブラリが用意されており、慣れれば約1日で、機械学習システムを構築できるという。機械学習システムの開発のハードルは、劇的に下がってきた。

図1 整備された機械学習のフレームワーク
[画像のクリックで拡大表示]

多様な機械学習の要求に応える

 さらにインテル® FPGA製品(旧アルテラ)を使えば、機械学習のフレームワークをフル活用して、思い通りのシステムを柔軟に構築できる。Caffeなどのフレームワーク上で、処理対象となるデータをあらかじめ学習し、学習済みのデータをFPGA上に構築したニューラルネットワークに実装することで、画像認識システムなどが簡単に出来上がる。

 ニューラルネットワークを構築するチップには、それぞれの応用でのシステム要件に応じて最適な性能・機能・規模を持ったものを選択できる、スケーラビリティが欠かせない。例え同じフレームワークを使ったとしても、扱うデータの緻密さや大きさ、量、分類項目の数などに応じて、演算量が変わってくるからだ。

 例えば、クラウド上でのビッグデータ分析では、1つひとつの分析対象のテータを、数千クラスといった多くの分類項目に仕分ける。こうした処理では、極めて高い演算能力が求められる。演算能力は高ければ高いほどよい。こうした処理を実行する機械学習システムには、高い効率性、消費電力当たりの演算性能が欠かせない。

 一方で、自動車に搭載する高度運転支援システム(ADAS)などでは、10クラス未満の分類項目に仕分けできれば十分だ。システムの演算性能は、15~30fpsといった画像データのフレームレートに合わせて処理できることが重要になる。さらに、1~5Wといった低電力化や低コスト化も重要だ。

1つのアーキテクチャーで多様な要求をカバー

 インテル® FPGA製品(旧アルテラ)ならば、同じアーキテクチャーで統一された、多種多様な性能・機能・規模の製品から選択できる(図2)。このため、システム要件に合ったチップを確実に見つけることができる。

図2 インテル® FPGA製品ポートフォリオ
[画像のクリックで拡大表示]

 ニューラルネットワークとしてCNNを利用した衝突回避システムの開発を例に要求仕様を満たすFPGAを選んでみよう。こうしたシステムの要求仕様は、おおよそ以下のようなものだ。

 まず、分類すべき項目は、人物、車、動物、自転車など3~5種類の物体を認識できれば十分だ。認識対象となる画像の大きさは、1M~2Mピクセル、フレームレートは15~30fpsといったところか。ただし、人命を預かるシステムであるため、精度は高くなければならない。さらに、1W~5Wの電力に抑え、コストを低減し、小型化も求められる。

 こうした要求ならば、ローコストタイプに位置づけられるARMコアを搭載したSoC、「Cyclone® V SoC」で対応できる。これが、データセンターで実行するような複雑な処理を実行する場合には、ミッドレンジの「Arria® 10 FPGA」、今後登場するハイエンドFPGA「Stratix® 10 FPGA」で対応していくことになる。

 機械学習の技術は発展途上にある。将来、より進んだニューラルネットワークの構造が登場しても、高いスケーラビリティを維持したFPGAならば、柔軟に進歩に追随できる。さらに、将来、より高速で大容量の製品が登場した場合にも、載せ替えで対応できる。

インテル® FPGA製品(旧アルテラ)はCNN向き

 インテル® FPGA製品(旧アルテラ)は、機械学習、特に画像認識などニーズの高い処理に適したCNNの実装に向くデバイスである。

 CNN内で実行する演算は、フィルター計算が大部分を占める(図3)。例えば、画像認識システムでは、入力した画像データを細かな領域に区切り、それぞれにフィルター処理を実行して、特徴マップを出力する。学習済みのパラメータに設定した畳み込みフィルターをニューラルネットワークの各層に置き、徐々に高レベルの特徴抽出をしていくことで、高度な認識結果が得られる。この時、FPGAならば、マイクロプロセッサーでは実現できないほど多くのフィルター処理を並列実行できる。それほど高くない動作周波数でも演算性能を高められるため、最小限の消費電力で、最大限の演算性能が得られる。

図3 画像認識システム向けCNN内で実行する演算
[画像のクリックで拡大表示]

 さらに、演算性能の高いニューラルネットワークを実装できるようにする数々の有用な機能が搭載されている。例えば、Arria 10 FPGAには、業界に先駆けて、単精度の浮動小数点乗算器と加算器が、専用ユニットとして搭載されている。単精度の浮動小数点演算の性能は1TFLOPSに達し、しかもその性能を得るための合計消費電力は、たった35Wに過ぎない。

 また、思い通りの構成のメモリーシステムを作ることができるブロックRAMを、オンチップで搭載している。チップ内メモリー帯域幅は8TB/sであり、DDRなどで外部メモリーとデータをやり取りするよりも高速だ。しかも、低レイテンシ(2クロック)でのランダムアクセスが可能であり、すべてのデータをオンチップメモリーに保存すれば、極めて高い演算性能を実現できる。

効率はGPUを常に凌駕

 ニューラルネットワークを実装するチップには、もう一つの選択肢としてGPUがある。以下はFPGAと代表的なGPUとの演算性能の比較だ(図4)。FPGAは、代表的なGPUと比較して、演算性能で遜色なく、演算効率では圧倒的に優っていることがわかる。

図4 AlexNetを用いた画像認識システムでのFPGAとGPUの比較
[画像のクリックで拡大表示]

 フレームワークとしてCaffeを利用した場合、GPUでは、毎秒1000点の画像を、最大250Wで処理できる。一方、Arria 10 FPGAでは、現時点で毎秒600点だが、消費電力は最大31Wと圧倒的に低い。さらに、今後ライブラリを最適化することで、毎秒1600点、最大36Wにまで向上する見込みだという。

 GPUも、専用のフレームワークを使えば、さらに高性能化するが、消費電力はそれほど下がらない。効率で比較すると、FPGAがGPUを常に凌駕する。今後登場するStratix® 10 FPGAでは、競合する最先端14nm GP GPUと同等の性能が得られるようになるとしている。

初心者から研究者まで
機械学習の活用を習熟度に応じて支援

 機械学習の本格的な応用は、始まったばかりだ。このため、ニューラルネットワークを実装するシステムが多様であるのと同様に、機械学習システムを開発するエンジニアの習熟度も千差万別である。そのため、パートナー企業からも、エンジニアそれぞれの習熟度に合ったソリューションを提供できる体制を整えている。

 例えば、習熟度の異なるシステム開発者をカバーするため、切り口が違う2つのソリューションが用意されている。ひとつは、比較的習熟度の高いシステム開発者向け。インテル プログラマブル・ソリューション事業本部(旧アルテラ)が提供するIPと、Caffeなど標準的なフレームワークを使って、システム開発者が自由にカスタマイズできる。より高度なシステムの構築を目指すものだ。もうひとつは、初めて機械学習システムの開発に取り組む開発者でも安心して利用できるものだ。iAbra社などが提供するプラットフォームを利用した、より容易なシステム開発が可能な環境である。

 その他にも、パートナー企業による充実した支援体制が整っている。代表的なパートナー企業を紹介しよう。

 アルティマとエルセナは、ニューラルネットワークの実装に欠かせない、OpenCLを使ったシステム開発を支援する。OpenCLを用いてシステム開発する時、従来のFPGAへのプログラミング手法との違いに戸惑う人が意外と多い。そもそもOpenCLとハードウエア記述言語(HDL)の違いは何か、既存のRTL記述とOpenCLで記述したものを共存させるためには何をしたらよいのか。慣れ親しんだFPGA開発の手法との違いが分かりにくいのだ。同社らは、OpenCLを使ったFPGAのプログラミングの前提となる、BSP(Board Support Package)を搭載したボードの選定から、新しい手法にチャレンジするシステム開発者を丁寧に支援する。

 また、Uncanny Vision社は、ARMプロセッサーのSIMD拡張機能である「Neon」を使って、効果的にディープラーニングを実装するライブラリを提供する。MathWorks社はディープラーニングを含む機械学習のアルゴリズム開発環境とHDLコード生成機能、OpenCLベースの開発環境との連携機能を提供する。エヌ・ディ・アール社は、IoTシステムのエッジデバイスをRCP(Rapid Control Prototyping)するための試作環境を、ワンストップで提供する。RCPとは、実機完成前に制御ロジックの検証を可能にする汎用コントローラ試作環境である。

 デバイス、開発環境、支援体制。CNNをFPGAに実装し、さまざまな応用にニューラルネットワークを活用するための準備は既に整っている。いち早く応用開発に着手することで、製品の価値とエンジニアのスキルを劇的に向上させることができるだろう。インテル® FPGA製品を使ったCNNの実装とそのメリットを、下の動画でさらに詳しく解説する。

無料で動画を視聴いただけます