ソリューション・シート: 効率的なニューラル・ネットワーク

ソリュー ション・シ ート: 効 率 的 な ニ ュー ラル ・ネットワ ー ク
FPGA と OpenCL による
ニューラル・ネットワーク (CNN) システム
の効率的な実装
ディープ・ラーニング・ニューラル・ネットワーク (CNN) システムは、画像認識や自然言語処
理における多くの大規模計算問題に対する最良のソリューションを提供します。ニューラル・
ネットワークは、生物系の中でも特に人間の脳に発想を得たもので、従来の処理を使用して
神経回路を模倣し、観測による学習が可能なシステムを構築します。近年、マルチコア技術
に基づく高性能ニューラル・ネットワーク・システムの開発が大きく前進しましたが、今もな
お消費電力、コスト、および性能スケーリングの面で大きな課題が残っています。
概要
最も広く使用されているディープ・ラーニング・システムは、畳み込みニューラル・ネットワー
ク (CNN) です。CNN システムは、神経回路を模したフィード・フォワード・ネットワークを使
用して画像識別や画像認識を実行します。また、リバース・フィード・システムを使用して学
習し、一連の重みを生成して実行システムのキャリブレーションを行います。CNN は階層構
造で、入力から特徴を抽出して画像内の線やエッジを識別する畳み込み層はその 1 つです。
プーリング層は、
値の最大化や平均化によって変動を減らした上で、
画像の特定範囲にわたっ
て共通する特徴をプールし、その結果を後続の畳み込み層とプーリング層に渡すことができ
ます。CNN の層数は画像認識の精度と相関し、層が多いほど高いシステム性能が要求され
ます。これらの層は独立して動作可能なため、層間でデータを受け渡しするデータ・パイプ
ラインとして実装するのが最も効率的です。マルチコア・プロセッシング・システムは、外部
メモリを使用して各層間のデータをバッファするため、広大なメモリ帯域幅を必要とします。
ニューラル・ネットワークの中でも最も性能が要求される機能は、畳み込み演算自体です。こ
の複素シグモイド関数は、一般に単精度浮動小数点演算で実装するのが最良の方法です
が、従来のプロセッサ・コアでは畳み込みごとに膨大な数の命令を実行しなければならず、広
い処理帯域幅が必要です。
2 次元畳み込み層
Inew [x][y] =
1
1
Iold [x+x’] [y+y’]
x’=-1 y’=-1
したがって、CNN の効率的な実装には大きく 2 つの課題があります。1 つは関数のパイプラ
イン実行と層間でのデータ受け渡しであり、もう 1 つは畳み込み関数の効率的な実行です。
また、これらの機能は、デバイスのマイグレーションやアップグレードに伴う再プログラミン
グが容易に行える方法で構築する必要があります。そうしないと、新たな実装のたびに膨大
な最適化作業をやり直す必要に迫られます。
ソリューション・シート
デザイン
FPGA (Field-Programmable Gate Array) は、コンピューティング、ロジック、およびメモリ・リソースを 1 個のデバイスに搭載でき
るため、ニューラル・ネットワークの実装に有利な選択肢となります。しかし、従来の低水準ハードウェア・プログラミング環境が
原因で、複雑なアルゴリズム・ベースのシステムへの広範な利用が困難でした。アルテラの SDK for OpenCL ™ はこの問題を解決し、
複雑なアルゴリズムを使用するさまざまなアクセラレーション・アプリケーションへの FPGA の適用を可能にします。ソフトウェア開
発者は、C 言語に似た OpenCL プログラミング言語を使用して、ハードウェア・レベル・デザインを扱う必要なく、標準 CPU のア
クセラレータとして FPGA をターゲットとすることができます。さらに、アルテラはディープ・ラーニング・システム向けに、OpenCL
プログラミング言語を使用して SDK for OpenCL で構築されたスケーラブルな畳み込みニューラル・ネットワークのリファレンス・デ
ザインを開発しました。このデザインは当初、Stratix® V デバイス・シリーズで実装されていましたが、Arria® 10 デバイスへの実装
も可能になりました。現在、CIFAR-10 と ImageNet という 2 つの標準的な CNN ベンチマークで性能評価が行われています。
このリファレンス・デザインは、OpenCL カーネルを使用して各 CNN 層を実装します。データは、OpenCL チャネルまたは OpenCL
パイプと呼ばれるメカニズムによって層間で渡されるため、外部メモリにデータを送ることなくカーネル間でデータを移動すること
ができます。これは、カーネル・モジュールに隣接する内部メモリを使用するデータ・バッファとして FPGA に実装されており、その
結果、ニューラル・ネットワーク全体にわたって極めて効率的なデータ移動を実現します。さらに、カメラやセンサなど、FPGA に
直接接続された入出力デバイスを使用するシステムに適応させることも可能で、外部メモリを介さずに、同じチャネル・メカニズム
を使用して、CNN システムとそれらのデバイスを直接インタフェースできます。
ニューラル・ネットワークのデータパス
I/O チャネル
カーネル 1
FPGA
カーネル 2
カーネル 3
カーネル・
チャネル/パイプ
畳み込み演算は、FPGA 内の DSP ブロックとロジックを使用して実装されており、
Stratix V デバイスの DSP とロジックを使用して単精度浮動小数点演算関数として実
行されます。 各関 数はかなりの量のロジックを使 用しますが、Arria 10 および
Stratix® 10 デバイスは専用設計の IEEE 準拠浮動小数点演算エンジンを搭載しており、
使用ロジック数と消費電力が Stratix V デバイスの約 1/4 に抑えられます。そのため、
Generation 10 デバイスは、浮動小数点演算エンジンを搭載していない FPGA に比べ
て非常に効率的です。
CNN を OpenCL カーネルで構築することにより、デバイス製品間やデバイス世代間
のデザインのスケーリングが可能になります。新規デザインは、層ごとに異なるカーネ
ル数でサイジングすることが可能です。さらに、世代間の性能スケーリングにより、浮
動小数点演算エンジンや周波数スケーリングといったアーキテクチャの進歩の恩恵も
受けられます。そのため、デバイス・シリーズが新しくなるごとに、性能およびワット
あたり性能の線形なスケーリングを上回る向上が実現できます。
ImageNet によるワットあたりの性能
45
40
35
30
25
20
15
10
5
0
Stratix V
Arria 10
28nm 35 W 20nm 32 W
Stratix 10
14nm 60 ~ 80 W
( 推定 )
画像数/秒/ W ImageNet
〒163-1332
東京都新宿区西新宿6-5-1
新宿アイランドタワー32F 私書箱1594号
TEL. 03-3340-9480 FAX. 03-3340-9487
www.altera.co.jp
E-mail: [email protected]
Altera Corporation
101 Innovation Drive, San Jose, CA 95134 USA
www.altera.com
本資料に掲載されている内容は、製品の仕様の変更等により予告なく変更される可能性があります。最新の情報はアルテラ・ウェブサイトをご参照ください。
© 2015 Altera Corporation. All rights reserved. ALTERA, ARRIA, CYCLONE, ENPIRION, MAX, MEGACORE, NIOS, QUARTUS and STRATIX words and logos are trademarks of Altera
Corporation and registered in the U.S. Patent and Trademark Office and in other countries. All other words and logos identified as trademarks or service marks are the property of their respective
holders as described at www.altera.com/legal. October 2015
SS-1078-1.0/JP