[DL Hacks]ディープラーニングを まともに動かすために ハードウェアの人が考えていること

>100 Views

November 16, 18

スライド概要

2018/11/15
Deep Learning JP:
http://deeplearning.jp/hacks/

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

(ダウンロード不可)

関連スライド

各ページのテキスト
1.

ディープラーニングを まともに動かすために ハードウェアの人が考えていること 情報理工学系研究科システム情報学専攻M2 上野洋典

2.

概要 • DLの高速・高効率化のために行われていることを簡単に説明 • ハードウェアを全く知らない人向け • 高速化のための基本の思想 • そもそもどこがボトルネックなのか • アーキテクチャ系トップカンファの論文のお気持ちを紹介 • GANの学習を高速で行う論文

3.

基本の思想 • 並列化 • パイプライン • スーパースカラ • GPU, FPGA • メモリアクセスを抑える • キャッシュ • データの再利用

4.

並列化 • 時間的に展開された逐次的な処理を空間的に展開して同時に処理 • コア数 • CPU(Core-i9): 18 • GPU(Tesla V100): 5120 • クロック数 • CPU: 2.6GHz (定格) • GPU: 1.4GHz (ブースト) 過去の発表資料から 「FPGA入門」 https://www.slideshare.net/DeepLearningJP2016/dl-hacksfpga

5.

メモリアクセス • メモリアクセスはキャッシュの 50~100倍くらい時間がかかる • HDDのI/Oとかは論外 • キャッシュが机の引き出しだとすると (所要時間10秒) ヘネシー&パターソン コンピュータアーキテクチャ 定量的アプローチ 第5版 • メモリ: 5~10分 (書斎くらい?) • SSD I/O: 11.5日 (Amazon UK発注くらい?) ディジタル回路設計とコンピュータアーキテクチャ 第2版

6.

キャッシュの有効活用 • 一度キャッシュに乗せたデータは再利用するべき • わざわざメモリに行かなくて済む • 次に使いそうなデータをキャッシュに乗せる • 右gifだと、フィルタの値は再利用されている

7.

論文紹介 • LerGAN: A Zero-free, Low Data Movement and PIM-based GAN Architecture • H. Mao et al. 清華大学 • MICRO51 (2018) • マイクロアーキテクチャ系トップカンファ • 簡単に言うと、PIMという強いメモリ使ってDCGANの学習を 高速化 • シミュレーションで評価していい値 • 実際にチップを作ったわけではない

8.

GANの学習 • 逆畳み込み (Transpose Convolution)に無駄が多い • 0を詰めるせいで不要な積算が多発 • わざわざ転送する必要なし • データフローが複雑 • GとDで2つのネットワークがある • G, DそれぞれのBackwardに相手のForwardが必要

9.

逆畳み込みについて • 左下図の畳み込み演算で、フィルタの係数のうち必要なのは 𝑊1 ~ 𝑊4 だけ • 入力フィルタ数の分だけ𝑊1 ~𝑊4 を掛ける演算が繰り返される • (in_filter ∗ 4) × (out_filter)に変形 • Matrix-Multiply-Vector (MMV)にマッピング (右下図) • 並列化!

10.

逆畳み込みについて • あり得るパターンも少ない • 下図 (a)と(c)は同じ (全部で25種類) • あらかじめ保持しておく • ゼロを含まない形で転送・計算することで高速化 • Conv1層64cycle -> 9cycleの高速化(MMVは1cycle)

11.

複雑なデータフロー • ネットワーク間 (DとG) の通信が多い • メモリアクセスがネックになりそう • これを解消したい

12.

PIMとは • Processor In Memory • (弱い)プロセッサをDRAMチップ上に載せるタイプのメモリ • 中のプロセッサはメモリに近い = 素早くアクセスできる • メモリの中で (簡単な) 命令を処理できる • メモリの (より賢い) 制御が可能 • 現実的にうまみがあるのかはまだなんとも • シミュレーションで述べられることが多い

13.

PIMによるGANの学習 • メモリを3次元的に並べて、𝐵1 ~𝐵3 にGを、𝐵4 ~𝐵6 にDを展開 • 1段目はForward, 2段目は誤差伝播, 3段目はBackward • どこが通信するかをPIMで制御

14.

結論 • FPGA, GPUに対してそれぞれ47.2倍, 21.42倍高速に学習できた • GPUの9.75倍低消費電力 • FPGAの1.04倍の消費電力 • 性能比では勝っている

15.

感想 • 紹介する論文を間違った感 • そもそもPIMは反則っぽい • 難しい • アーキテクチャ系トップカンファを聴講した感想 • • • • メモリアクセスを親の敵のように嫌っていた 理由を聞くとやっぱりそれが一番効くらしい MLの高速化はかなり熱い ソフトウェアの2~3年遅れな感じ