Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Distributed Deep Newral Networks
Search
Livesense Inc.
PRO
April 11, 2017
Programming
0
62
Distributed Deep Newral Networks
ニューラルネット x 分散コンピューティング ※社内LT資料
Livesense Inc.
PRO
April 11, 2017
Tweet
Share
More Decks by Livesense Inc.
See All by Livesense Inc.
株式会社リブセンス 会社説明資料(報道関係者様向け)
livesense
PRO
0
990
データ基盤の負債解消のためのリプレイス
livesense
PRO
0
250
26新卒_総合職採用_会社説明資料
livesense
PRO
0
4.3k
株式会社リブセンス会社紹介資料 / Invent the next common.
livesense
PRO
1
13k
26新卒_Webエンジニア職採用_会社説明資料
livesense
PRO
1
7.9k
中途セールス職_会社説明資料
livesense
PRO
0
190
EM候補者向け転職会議説明資料
livesense
PRO
0
84
コロナで失われたノベルティ作成ノウハウを復活させた話
livesense
PRO
0
200
転職会議でGPT-3を活用した企業口コミ要約機能をリリースした話
livesense
PRO
0
1.3k
Other Decks in Programming
See All in Programming
AWS Organizations で実現する、 マルチ AWS アカウントのルートユーザー管理からの脱却
atpons
0
150
ソフトウェアエンジニアの成長
masuda220
PRO
12
2k
苦しいTiDBへの移行を乗り越えて快適な運用を目指す
leveragestech
0
750
『GO』アプリ バックエンドサーバのコスト削減
mot_techtalk
0
150
第3回 Snowflake 中部ユーザ会- dbt × Snowflake ハンズオン
hoto17296
4
380
Boost Performance and Developer Productivity with Jakarta EE 11
ivargrimstad
0
450
Flutter × Firebase Genkit で加速する生成 AI アプリ開発
coborinai
0
160
楽しく向き合う例外対応
okutsu
0
400
Honoとフロントエンドの 型安全性について
yodaka
7
1.4k
もう僕は OpenAPI を書きたくない
sgash708
5
1.8k
Domain-Driven Transformation
hschwentner
2
1.9k
メンテが命: PHPフレームワークのコンテナ化とアップグレード戦略
shunta27
0
180
Featured
See All Featured
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
100
18k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Building Applications with DynamoDB
mza
93
6.2k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Faster Mobile Websites
deanohume
306
31k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
10
1.3k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
27
1.6k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Making Projects Easy
brettharned
116
6k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
Git: the NoSQL Database
bkeepers
PRO
427
64k
Transcript
Distributed Deep Newral Networks 0x64 物語 reboot 第01 夜 "Network"
@yubessy
今日の話 ニュー ラルネットワー ク x 分散コンピュー ティング
Why Distributed? デー タ量の増加 テキスト < 画像 < 動画 計算量の増加
いわゆるディー プラー ニング 単一マシンの処理能力の頭打ち -> 時代は分散コンピュー ティング
分散コンピュー ティングの歩き方 分散対象: 何を分けるか そもそも分割できるのか 負荷を均等化できるか アー キテクチャ: どうつなぐか クライアント・
サー バ型 / メッシュ型 / ... 同期 / 非同期 スルー プット / レイテンシ プロトコル
深層ニュー ラルネット (DNN) 多数のレイヤを接続した有向グラフ Back Propagation (BP) 入力値に対する、 モデルの出力値と正解値の 差分を求める
差分が小さくなるよう、 出力側から順に 各レイヤのパラメー タを調整 Stochastic Gradient Descent (SGD) デー タ点を1つずつ与えながらモデルを学習
深層ニュー ラルネット (DNN) From http://joelouismarino.github.io/blog_posts/blog_googlenet_keras.html
DNN と分散処理 DNN は分散処理に向いている モデル並列化 = 計算グラフを複数の部分に分割 デー タ並列化 =
デー タを分割しノー ド毎にSGD "Large Scale Distributed Deep Networks" Dean, et al. 2012. By Google DNN のモデル / デー タ並列化両方について解説
モデル並列化 分散対象 = DNN のグラフ グラフ全体を部分グラフに分割 各部分グラフを別々 のノー ドに割り当て アー
キテクチャ = メッシュ型 元のグラフで結合されていた部分が ノー ドをまたいで通信 ボトルネック 適切に分割しないと ノー ド間のトラフィックがえらいことに
モデル並列化 Dean, et al. [1] Figure 1
デー タ並列化 分散対象 = 学習デー タ デー タをチャンクに分割 各チャンクを別々 のノー
ドに処理させる アー キテクチャ = Parameter Server (PS) 方式 PS ノー ドが各レイヤのパラメー タを保持 ワー カー ノー ドは一定量の学習を終えるごとに 非同期通信によりパラメー タを更新 ボトルネック ワー カが増えるとPS ノー ドの負荷が高くなる
デー タ並列化 Dean, et al. [1] Figure 2
Distributed TensorFlow ここまで説明した分散処理機能が 実はすでに TensorFlow に組み込まれている Distributed TensorFlow ノー ド間はgRPC
で通信
雰囲気だけ紹介
クラスタ定義 cluster = tf.train.ClusterSpec({ # ワー カー ( デー タ分散)
"worker": [ "worker0.example.com:2222", "worker1.example.com:2222", "worker2.example.com:2222" ], # パラメー タサー バ ( モデル分散) "ps": [ "ps0.example.com:2222", "ps1.example.com:2222" ]})
モデル並列化 レイヤを複数のPS に分散 # 同じPS に乗せたいパラメー タ群を tf.device でくくる with
tf.device("/job:ps/task:0"): weights_1 = tf.Variable(...) biases_1 = tf.Variable(...) # タスクの番号に応じてラウンドロビンでPS が決まる with tf.device("/job:ps/task:1"): weights_2 = tf.Variable(...) biases_2 = tf.Variable(...)
デー タ並列化 各ワー カー に同じグラフを複製 # replica_device_setter で # 複数のワー
カに同じグラフを複製 with tf.device(tf.train.replica_device_setter( worker_device="/job:worker/task:%d" % task_index, cluster=cluster)): input, labels = ... layer_1 = tf.nn.relu( tf.matmul(input, weights_1) + biases_1) logits = tf.nn.relu( tf.matmul(layer_1, weights_2) + biases_2) train_op = ...
まとめ NN は分散コンピュー ティングと相性がよい モデル並列化 / デー タ並列化 TensorFlow 最強
参考 [1] Large Scale Distributed Deep Networks [2] Distributed TensorFlow
[3] Distributed TensorFlow を試してみる [4] Distributed TensorFlow の話