Comments
Description
Transcript
講演資料 - PC Cluster Consortium
大規模ニューラルネットの高速 Deep Learningの実現に向けて 株式会社富士通研究所 白幡 晃一 [email protected] 0 Copyright 2016 FUJITSU LABORATORIES LTD. 開発の背景 Deep Learningは様々なアプリケーションへ適用拡大 画像認識 音声認識 医療 自然言語処理 金融 自動車 ロボット ニューラルネットの大規模化 ニューラルネットの層数は増えるほど認識等の精度向上のため、大規模化が進む 年 ネット名 層数 エラー率 2012 AlexNet 8 16.4% 2014 VGGNet 19 7.3% - 5.1% 152 3.6% ~152 3.0% - 人間 2015 ResNet 2016 Ensemble 2 学習時間が増大 複数GPUの並列動作による高速化が必要 メモリ使用量が増大 GPUメモリ使用の効率化が必要 1 Copyright 2016 FUJITSU LABORATORIES LTD. Deep Learning処理の大規模 並列化による高速化技術 2 Copyright 2016 FUJITSU LABORATORIES LTD. 複数のコンピュータで並列化(データ並列) 6 5 3層目 ノード1 差分 7 1 ノード2 差分 ③ ④ ③ ④ ② ⑤ ① ⑥ ⑦ ② ⑤ ⑦ ① ⑥ ⑦ 差分 ③ ④ ② ⑤ ⑦ 1層目 8 ノード3 ⑦ ⑦ 2層目 3 差分 4ノードで 並列学習した例 Forward ③ ④ ⑦ ⑦ Backward All-reduce Update MPIの All-reduce 処理で集約し、 更新用データ を計算 ① ⑥ ① ⑥ ⑦ 3 4 ノード4 ② ⑤ ⑦ ⑦ 9 ⑦ ⑦を終えたら、 次の①を開始 Copyright 2016 FUJITSU LABORATORIES LTD. 複数ノードで行う学習処理の課題 All-reduce処理が加わる事でGPUが動作しない時間が発生 「重みパラメタの要素数」 が多い場合、大きくなる 「ノード数」の増加に伴い、 大きくなる 集約処理による オーバヘッド GPU Forward Backward Update CPU All-reduce 時間 基本的な アイディア ・集約処理時間を他のGPU処理時間に隠蔽 ・集約処理時間を短縮 4 Copyright 2016 FUJITSU LABORATORIES LTD. Backward処理時間への隠蔽 各層のForward処理 方法 各層のBackward処理が終わるごとに 層単位でAll-reduce処理を開始する 各層のBackward処理 All-reduce処理 Update処理 Backward処理とAll-reduce処理を 並列に実行することで高速化 隠蔽前 隠蔽後 GPU CPU CPU L1 L2 L3 L3 L2 L1 L3 L1 L2 5 Copyright 2016 FUJITSU LABORATORIES LTD. Forward処理時間への隠蔽 各層のForward処理 方法 ・Update処理を分割 ・Forward処理の開始を層ごとに判定 CPU L3 All-reduce処理 Update処理 すべての層のAll-reduce処理の完了前に、 次のForward処理を開始することで高速化 層単位でUpdate処理 GPU 各層のBackward処理 L2 L1 L1 L3 L2 L1 L2 6 Copyright 2016 FUJITSU LABORATORIES LTD. 評価: Distributed Caffe (当社比) 複数 GPU 使用時の 1 GPU 使用時に対する学習時間の高速化率 1.8倍高速化 27倍高速化 評価環境 ・Tesla K20X GPU を 64 GPU (1ノードあたり1GPU) まで使用 7 Copyright 2016 FUJITSU LABORATORIES LTD. Deep Learningのニューラルネットを 拡大するメモリ効率化技術 8 Copyright 2016 FUJITSU LABORATORIES LTD. GPUを用いたDeep Learningの現状 ニューラルネットの規模は年々急速に拡大 GPUの高速な演算性能を活用するには、一連の演算に使用する データを可能な限りGPUの内部メモリに格納する必要がある 18 NN Size(Batch=8) 14 GPUメモリ容量は、 ホストメモリ容量より 小さい 12 10 8 サーバ ホスト ResNet 6 CPU AlexNet 2 VGGNet LeNet DRAM (数百GB) 2016 2015 2014 2013 2012 2011 2010 2009 2008 2007 ~ 0 Year PCI-E アクセラレータ GPU 32GB/s 4 1998 Memory Size [GB] CPU-GPU間バンド幅は GPU内バンド幅より 小さい ~16GB程度 GPU Memory Size 16 720GB/s DRAM(約10GB) HDD 注) バッチサイズ8の場合 GPUが搭載しているメモリ量が小さいため、高速に学習できる ニューラルネットの規模が制限されるという課題がある 9 Copyright 2016 FUJITSU LABORATORIES LTD. Deep Learningのメモリ使用量の問題 学習時にGPUのメモリ使用量が増加する Forward Backward 認識結果 5 6 誤差 正解と 比較 ⑥ 3層目 重みデータ 重みデータ ' 中間データ 2層目 重みデータ ' 中間データ ① ② 重みを更新するための重みデータ の誤差と、誤差を前層に伝える ための中間誤差データを計算 重みデータの誤差 中間誤差データ ⑥ ③ ④ 重みデータの誤差 重みデータ、中間データに加えて 誤差データを確保 中間誤差データ ⑤ 1層目 重みデータ ' ⑥ 重みデータの誤差 入力 データ ①と②、③と④はそれぞれ独立に演算可能 基本的な アイディア ・2種類の誤差データ計算の独立性に着目 ・メモリ領域の再利用によりメモリ使用量を削減 10 Copyright 2016 FUJITSU LABORATORIES LTD. Deep Learningのメモリ効率化技術 方法 ニューラルネットの構造を解析し、より大きなメモリ領域を再利用 するように演算順序とメモリ配置をスケジューリング Forward Backward 認識結果 5 3層目 大きさを比較 誤差 正解と 比較 重みデータ > 中間データ の層(Fully-connected層など) では、重みデータ領域を 上書きしてメモリ使用量を削減 重みデータ 重みデータ ' ② 中間データ 2層目 大きさを比較 6 重みデータ ' ④ ① 中間誤差データ ⑥ ③ 重みデータの誤差 中間誤差データ 中間データ ⑤ 1層目 重みデータ ' 中間データ > 重みデータ の層(Convolution層など) では、中間データ領域を 上書きしてメモリ使用量を削減 入力 データ 11 Copyright 2016 FUJITSU LABORATORIES LTD. 評価: メモリ効率化Caffe 同じニューラルネット(VGGNet)を使用し、同条件で比較 40% メモリ使用量削減 12 Copyright 2016 FUJITSU LABORATORIES LTD. 評価: メモリ効率化Caffe 削減したメモリ領域を活用してミニバッチサイズを2倍に拡大 4% 学習精度向上 13 Copyright 2016 FUJITSU LABORATORIES LTD. 今後 今回紹介した技術は富士通株式会社のAI技術「Human Centric AI Zinrai(ジンライ)」の一つとして、2017年4月から順次実用化を 予定 「Deep Learning処理の高速化技術」と「メモリ効率化技術」を 組み合わせて、技術の改善を行う 並列化技術 組み合わせることで 大規模ニューラルネットの 高速化が可能に 高速化 コンピュータ CPU GPU 現在 メモリ効率化技術 コンピュータ CPU GPU 大規模化 14 Copyright 2016 FUJITSU LABORATORIES LTD. 15 Copyright 2016 FUJITSU LABORATORIES LTD.