[DL輪読会]KungFu: Making Training in Distributed Machine Learning Adaptive (OSDI’20)

>100 Views

November 06, 20

スライド概要

2020/11/6
Deep Learning JP:
http://deeplearning.jp/seminar-2/

シェア

またはPlayer版

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

関連スライド

各ページのテキスト
1.

DEEP LEARNING JP [DL Papers] KungFu: Making Training in Distributed Machine Learning Adaptive (OSDI’20) Presenter: Masanori Misono (Univ. Tokyo) http://deeplearning.jp/ 2020-11-06 1

2.

書誌情報 タイトル KungFu: Making Training in Distributed Machine Learning Adaptive 著者 Luo Mai, Guo Li, Marcel Wagenländer, Konstantinos Fertakis, Andrei-Octavian Brabete, and Peter Pietzuch, Imperial College London 会議 14th USENIX Symposium on Operating Systems Design and Implementation (OSDI’20) URL https://www.usenix.org/conference/osdi20/presentation/mai https://luomai.github.io/publication/2020-osdi-kungfu/ https://github.com/lsds/KungFu 概要 分散機械学習において,システムパラメータ / ハイパーパラメータをアダプティブ に学習することを容易にするためのライブラリを提案.Tensorflowで実装. 2020-11-06 2

3.

Motivation • 機械学習はハイパーパラメータが多い  バッチサイズ,学習率,… • さらに,実際には学習環境のパラメータ (論文ではシステムパラメータ)もある  ワーカ(分散台数)の数,コミュニケーショントポロジ,…. • 現状は,  固定したシステムパラメータ  特定のスケジューラによるハイパラサーチ • これらを考慮した学習フレームワークを作りたい 2020-11-06 3

4.

Background • Automatic hyper-parameter tuning  optuna, Tune, etc…  探索コストは依然高く,またシステムパラメータは考慮していない • 訓練中に動的にパラメータを変更・追加した方が多くの場合良い  学習率減衰, 勾配に応じたバッチサイズの変更, … • システムパラメータも変更可能  ワーカの数 (GPU, TPUの使用数)  ネットワーク帯域に応じたコミュニケーション方法, … 2020-11-06 4

5.

Dynamic Adaptation of Parameters ※ 多くはシステムパラメータではなくハイパーパラメータに注力 2020-11-06 5

6.

Challenge • 現状の分散学習環境では動的なパラメータ変更のサポートが難しい 1. ビルトインでサポートしていない 2. 訓練中のメトリクス(勾配値など)のモニタリングが高コスト  例) 8-GPUで訓練するReSNetは4GB/sec の勾配 3. 動的にシステム全体のパラメータを調整する  2020-11-06 例)ワーカ数を変更した場合,それに依存したパラメータ (e.g, 学習率など)を, 他のワーカに適切に伝える必要がある 6

7.

Approach 1. ビルトインで,パラメータをadaptationできるようなポリシーが記述で きるような仕組みを導入する 2. メトリクスのモニタリングを効率化するために,モニタリングはデータ フローグラフのオペレータとして monitoring operator を導入 3. 更新されたパラメータを共有するためのconfiguration operatorを導入. データフローグラフの中でパラメータ更新のチェックおよび更新を可能 とする 2020-11-06 7

8.

Adaptation Policy - Gradient Noise Scale (GNS) Policy - ワーカ数の増減によりバッチサイズを変化させる 2020-11-06 8

9.

APIs for Adaptation Policies 2020-11-06 9

10.

Monitoring Operation • オーバヘッドを減らすために,モニタリング操作 (先ほどの例の gns ) や, allreduce, broadcast などの通信数はデータフロー操作として実装 2020-11-06 10

11.

Collecting Data 2020-11-06 11

12.

Adaptation of dataflow parameter 2020-11-06 12

13.

Evaluation 2020-11-06 13

14.

Evaluation 2020-11-06 14

15.

Evaluation 2020-11-06 15

16.

Summary • KungFuと呼ばれる,アダプティブなパラメータ更新が可能なポリシーを 定義できるフレームワークを実装  ちなみに実装量は Go (~7kLOCs), C++ (~3k LOCs) Python (~2k LOCs) • オープンソースで公開中  https://github.com/lsds/KungFu • 個人的にはhorovodは使ったことがあるけれど,それと比べてどうなのか 実際に試してみたい 2020-11-06 16