Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

機械学習のデータ並列処理@第7回BDI研究会

1,931 views

Published on

Talk at https://eventdots.jp/event/615017

Published in: Data & Analytics
  • Hello! High Quality And Affordable Essays For You. Starting at $4.99 per page - Check our website! https://vk.cc/82gJD2
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

機械学習のデータ並列処理@第7回BDI研究会

  1. 1. 機械学習のデータ並列処理 Research Engineer Makoto YUI @myui <myui@treasure-data.com> 1 2017/03/29 第7回BDI研究会@Dots
  2. 2. 発表の構成 機械学習のデータ並列処理 • 勾配降下法の基礎 • Distributed Gradient • Tree Reduce • AllReduce • Parameter Mixing • Parameter Server • Mix Server 2
  3. 3. 3 学習器1 学習器2 学習器N パラメタ 交換 学習 モデル 分割された訓練例 データ並列 データ並列 (モデルパラメタ) 機械学習のデータ並列処理
  4. 4. 1. Distributed Gradient (Gradient Averaging) • 勾配計算の並列化 • 重みの更新は基本的に単一ノード • モデルは共有しない 2. Parameter Mixing (Model Averaging) • 確率的勾配降下法の学習処理を並列化 • 重みの更新が各学習器の計算ノードで行われ,その後 モデルの平均化処理が行われる • モデルを共有する 機械学習のデータ並列処理 機械学習のデータ並列処理手法は 基本的にこの2種類かその亜種に分類できる 4
  5. 5. 機械学習の分散処理のテクニック • AllReduce, TreeReduce • 同期的な処理の実現 • Parameter Mixing (Vowpal Wabbit)でも Distributed Gradient (ChainerMN)でも利用さ れる • TorrentBroadcast (Spark MLlib) • Parameter Server (MXNet, TensorFlow) • 非同期のupdate • Parameter Mixingに利用される 5
  6. 6. 6 線形回帰 質的変数はそのままでは回帰できない 👉ロジスティック回帰 質的な0/1目的変数を線形に回帰するためのアルゴリズム
  7. 7. ロジスティック回帰 7 一般化線形モデル 線形回帰モデル ロジスティック回帰は関数fがシグモイド関数
  8. 8. 勾配降下法 (Gradient Descent) https://speakerdeck.com/lintool/large-scale-machine-learning-at-twitterより抜粋 実際に学習して求めるのは特徴ごとの重みw 8
  9. 9. 𝑤"#$ = 𝑤" − 𝛾" 1 𝑛 * 𝛻𝑙𝑜𝑠𝑠(𝑓(𝑥2 3 245 ; 𝑤" ), 𝑦) 新しい重み 古い重み 経験損失の勾配 学習率 勾配降下法 (Gradient Descent) 経験損失の勾配 を基に重みを更新 9
  10. 10. 10
  11. 11. 11 Z=−3x2−5y2+6xy 二次元の場合
  12. 12. 確率的勾配降下法(Stochastic Gradient Descent) • Gradient Descent • Stochastic Gradient Descent (SGD) 𝑤"#$ = 𝑤" − 𝛾" 1 𝑛 * 𝛻𝑙𝑜𝑠𝑠(𝑓(𝑥2 3 245 ; 𝑤" ), 𝑦) モデルの更新に全ての訓練事例を利用(バッチ学習) 𝑤"#$ = 𝑤" − 𝛾" 𝛻𝑙𝑜𝑠𝑠(𝑓(𝑥; 𝑤" ), 𝑦) それぞれの訓練事例で重みを更新(オンライン学習) 12
  13. 13. AdaGrad 確率的勾配降下法(SGD)のモデルパラメタの更新 学習率 勾配 学習率の指定方法が難しい→自動設定できないか?→AdaGrad 過去の勾配の二乗の総和を更新対象の特徴ごとに保存 学習率 学習率の減少を保障 13
  14. 14. 発表の構成 機械学習の並列分散計算 • 勾配降下法の基礎 • Distributed Gradient • Tree Reduce • AllReduce • Parameter Mixing • Parameter Server • Mix Server 14
  15. 15. Distributed Gradient 𝑤"#$ = 𝑤" − 𝛾" 1 𝑛 * 𝛻𝑙𝑜𝑠𝑠(𝑓(𝑥2 3 245 ; 𝑤" ), 𝑦) mappers single reducer 勾配をmapperで並列に計算 重みの更新をreducerで行う SGDによる更新も可能 15
  16. 16. Distributed Gradient with Mini-batch Updates 正確な勾配を算出できるが更新幅が 小さくなりがちで多くのイテレーションが必要 CTR推定ではクリックありの訓練事例数が広告クリックなしに⽐べて 極端に⼩さい(広告クリック率0.2%程度)ためにSGDの⽅が向いている 16
  17. 17. 17 Val data = .. for (i <- 1 to numIterations) { val sampled = val gradient = w -= gradient } サンプリングを利用したMini-batch勾配降下法 GradientDescent.scala bit.ly/spark-gd データのサブセットをサンプリング Tree Aggregateを利用してSampled[1..N]の勾配をN個のワーカ で勾配を並列に計算、集約し、N個の勾配をマスターノードで適用 Wは次のイテレーションで各ワーカに送信される Spark MLlibにおける反復学習
  18. 18. 18 Tree Aggregate (gather)
  19. 19. 19 Broadcast (scatter) 各ワーカはBlockManagerからブロックを受け取ると ワーカがBlockManagerになり、他のワーカからの 要求を受け付けるようになる(BitTorrent/P2P由来)
  20. 20. AllReduce http://cilvr.cs.nyu.edu/diglib/lsml/lecture04-allreduce.pdf より抜粋 20
  21. 21. AllReduceの通信構造 21
  22. 22. AllReduce pseudo code allreduce(model) {# each worker calls allredce() reduce(model) broadcast(model) } reduce(model) { for each child accumulate results (child IN) if has parent write accumulated results (parent OUT) } broadcast(model) { if has parent # read from parent read result (parent IN) for each child # write to children write result (child OUT) } 22 各ノードが一度 allreduce()を呼ぶだ けでモデルの同期が 完了する! FatTreeなど階層的ク ラスタ構成に適する
  23. 23. AllReduce variants 23
  24. 24. • Bulk-Synchronous Parallel(BSP)の硬い同期モデル • タスクが早く終えたノードも他のノードの処理を待つ必要 がある • 計算途中のノードの追加や離脱に対応できない • 投機実行が扱えない • M/Rのタスクスロット以上のタスクに対応できない AllReduceの問題点 24
  25. 25. 発表の構成 機械学習の並列分散計算 • 勾配降下法の基礎 • Distributed Gradient • Tree Reduce • AllReduce • Parameter Mixing • Parameter Server • Mix Server 25
  26. 26. Parameter Mixing 𝑤"#$ = 𝑤" − 𝛾" 𝛻𝑙𝑜𝑠𝑠(𝑓(𝑥; 𝑤" ), 𝑦)train train +1, <1,2> .. +1, <1,7,9> -1, <1,3, 9> .. +1, <3,8> tuple <label, featues> array<weight> Training table -1, <2,7, 9> .. +1, <3,8> MIX -1, <2,7, 9> .. +1, <3,8> train train array<weight> データ分割して各学習器でSGDに より並列に重みを算出 重みの統合/平均化処理 26
  27. 27. 機械学習におけるパラメタ交換 [1] Mu Li, David G. Andersen, Jun W. Park, et al., "Scaling Distributed Machine Learning with the Parameter Server", Proc. OSDI, 2014. OSDI’14にBaiduの人がパラメタサーバネタで通している KVSに機械学習向けの付加機能をつけて大規模データで評価 27
  28. 28. 28 http://www.cs.cmu.edu/~muli/file/parameter_server_nips14.pdf MXNetのps-lite
  29. 29. 1. Parameter server • 分散KVS等による分散共有メモリ機構 • MIXの単位:特徴ごと、通信の頻度:高い、同期処理のlatency:小 • ローカルにモデルを持たない、グローバルなモデルを全員が共有 • Variants • KVSに対して非同期または同期的に更新を行うもの • Stale Synchronous Parallelと呼ばれるBSPの同期制約を緩めたもの (on KVS) • グローバルなモデルは持たず、各ワーカのモデルをレプリケートするもの 2. Parameter mixing protocol • MIX処理用のプロトコル.モデルは保持されない • MIXの単位:全ての特徴、通信の頻度:低(一定間隔EPOCHごと)、同期処 理のlatency:大 • 各学習器がローカルなモデルを持つ • 本来全ての特徴を交換する必要がないが,全てを交換するため冗長な計 算が発生 • Variants • AllReduce (a kind of BSP)、Butterfly mixing • ランダムにMIXでデータを集めるサーバを選択 (Jubatus) 機械学習におけるパラメタ交換 29
  30. 30. Parameter Server Stale Synchronous Parallel (SSP) Parameter Server, NIPS 2013. Bulk Synchronous Parallelの同期制約に緩めたもの http://www.cs.cmu.edu/~qho/ssp_nips2013.pdf より抜粋 30
  31. 31. 31Slide from https://www.cs.cmu.edu/~muli/file/pdl14_talk.pdf Asynchronous update
  32. 32. 32 Parameter Server (TensorFlow)
  33. 33. Hivemallにおける工夫 学習器1 学習器2 学習器N パラメタ 交換 学習 モデル 分割された訓練例 データ並列 データ並列 (モデルパラメタ) ①訓練事例の増幅 ②Mix Serverによるパラメタ交換 共有メモリのようにグローバルな パラメタ共有を効率的にしたい イテレーションを増やすのと どうようの効果 33
  34. 34. ・・・・・・ Model updates Async add AVG/Argmin KLD accumulator hash(feature) % N Non-blocking Channel (single shared TCP connection w/ TCP keepalive) classifiers Mix serv.Mix serv. Computation/training is not being blocked MIX Serverの概要 34
  35. 35. 35 MIX Serverの概要(Nonblocking-I/O) Client (学習器) Parameter Server process update Local update async recieve async send (nonblocking socket) async send 送信バッファに入れ たら処理を戻す
  36. 36. Model updates Propagate every/most update asynchronously feature weight[] clock[] min covar total clock Diff=|total clock – local clock| total clock += lock clock Average accumulator feature sum mean div covar sum inv covar min covar total clock argmin KL-divergence accumulator feature weight Covariance clock Mix serv. 最新の値を保持する パラメタサーバと異な り、モデル平均化処理 のためのaccumulator Global clockとlocal clockがズレてきたら ローカルモデルに平 均化処理した結果を 反映 36
  37. 37. create table kdd10a_pa1_model1 as select feature, voted_avg(weight) as weight from (select train_pa1(features,label,"-mix host01,host02,host03") as (feature,weight) from kdd10a_train_x3 ) t group by feature; MIX Serverの利用 このように学習器の呼び出しで Mix serverをオプション指定する 37
  38. 38. MIX Serverと既存手法の比較 38 Parameter Server Parameter Mixing Protocol MIX Server 特性 KVSのように情報 を保持する Mixしていないときは 情報を保持しない Accumuratorなので 情報を保持する パラメタ交換 単位 特徴ごと 全ての特徴 特徴ごと 入力 パラメタの勾配 パラメタ⾃体/勾配 パラメタ⾃体 通信頻度 ×(頻繁すぎる) ○(頻度が少なすぎ る) ◎(ちょうど良い) 同期処理のレ イテンシ ○(割と⼩さい) ×(⾮常に⼤きい) ◎(低い) 同期スルー プット ×(⾮常に悪い) ◎(⾮常によい) ○(良い) モデルの共有 方法 グローバルなモデ ルをMIX時に更新 ローカルなモデルを MIX時に更新 ローカルなモデルを MIX時に更新 代表的な実現 手法 分散Key-Value Storeを利⽤ MPI AllReduceによ る同期 - 実装例 TensorFlow, MXnet Vowpal Wabbit Jubatus Hivemall
  39. 39. 39 Any questions? 夏期インターンを募集中

×