多層ニューラル・ネットワークによる 手書き数字認識の実装(導入編)

Altera SDK for OpenCLで機械学習にチャレンジ
FPG
カス A なら
タム
が作 演算器
れる
!
多層ニューラル・ネットワークによる
手書き数字認識の実装
(導入編)
中原 啓貴
Hiroki Nakahara
Altera 社から高位合成ツール Altera SDK for OpenCL がリリースされてしばらく経ちます.最新のバージョンはだいぶ使いやすく
なってきました.特に BSP(Board Support Package)でサポートされたボードを使うと,SDRAM や PCI Express を含めた周辺回路
を開発する手間も無く,短期間に高性能な計算機を実現することができます.そこで今回は,Altera SDK for OpenCL を導入し,機
械学習の一種であるニューラル・ネットワークを実装して評価するまでの準備編を解説します.
FPGA
このあたりの
面倒なハード
ウェアを
BSPで提供
カーネル
(FFT,FIR,フィルタ,
パケット検索,暗号,圧縮)
DDR3 SDRAM×2
PCI Express(+DMAなど)
PC
ホスト・プログラム
図 1 Altera SDK for OpenCL の動作環境イメージ
1
Altera SDK for OpenCL に
ついて
● FPGA の大規模化に対応するために
LSI プロセスの微細化に伴って,規則的な構造をも
つ大規模な FPGA が比較的安価に入手できるように
なってきました.数年前までは考えられなかった規模
の FPGA が手ごろな価格で使えます.
一方で,豊富なロジックと高度な I/O が扱えるよう
になったため,ユーザが設計するロジックは大規模・
複雑化してきていますが,相変わらず短期間での開発
の要求は変わっていません.特に I/O に付属する PCI
Express や DDR 系メモリ,高速 Ethernet などをプロ
ジェクトごとに開発していたのでは,開発期間が長引
き FPGA を使って短期間にマーケットに投入できる
メリットが薄れてしまいます.
そこで Altera 社では,周辺回路を一体化した BSP
を提供し,かつ,OpenCL を使った高位合成で開発可
能な Altera SDK for OpenCL をリリースしています.
● Altera SDK for OpenCL の動作環境イメージ
図 1 に Altera SDK for OpenCL の動作環境イメー
ジを示します.BSP が提供されている FPGA ボード
を PCI Express バスに差し込み,PC(ホスト)で実行
したいアプリケーションの一部(カーネル)を高速化
します.Altera 社の Cyclone や MAX シリーズのエン
124
ト リ 向 け FPGA と 異 な り, タ ー ゲ ッ ト FPGA は
Arria10 や Stratix V シリーズのハイエンド FPGA で
す.
初めから高性能計算向けを狙った開発環境であり,
カーネルで動作させるのも FFT や FIR フィルタ,パ
ケット検索,暗号,圧縮といったスループット(可能
であればレイテンシも)が必要となるアプリケーショ
ン が 多 い で す. 開 発 言 語 が C++ を ベ ー ス と し た
OpenCL なので,GPGPU で CUDA や OpenCL を使う
イメージを想像しやすいかもしれません.常にさまざ
まなアプリケーションが報告されているので,Altera
社のサンプル・プログラム例(1)を見てみることをお
勧めします.
● 従来の FPGA 開発との違い
従来の FPGA 開発と比べて気を付けておくことは,
・大規模 FPGA を使って高性能計算に特化しているこ
と.例えば,ビット幅を手で調整してギリギリに詰
め込むことは考えていない.
・どんなアプリケーションでも高性能になるとは限ら
な い. 特 に,GPGPU と 差 別 化 で き る か は ア プ リ
ケーションによる(ただし,今後出てくるであろう
Stratix10 シリーズは浮動小数点演算器を積んでお
り,動作周波数も 1GHz を超えるらしいので,初め
から GPGPU と同じ土俵で戦おうとしているように
見える)
.
・OpenCL+BSP により短期間で(= HDL に触れずに)
開発することを目標とした開発環境であること.特
に,ソフトウェア技術者へ FPGA 導入の敷居を下
げることに注力している.見方によっては狙った通
りに回路が合成できないこともある.
● FPGA と比較した GPGPU のメリット
で は, ど の よ う な ア プ リ ケ ー シ ョ ン だ と Altera
SDK for OpenCL を使うメリットがあるでしょうか.
ホスト PC と連携して高性能計算をすることを考える
と,誰でも GPGPU が思い当たると思います.
図 2 に GPGPU と FPGA の違いを示します.GPGPU
は広帯域なメモリを用意しており,数千台の CUDA
多層ニューラル・ネットワークによる手書き数字認識の実装(導入編)