SlideShare a Scribd company logo
1 of 44
Case Study
TensorFlow Internals
2016. 3. Ver.
Kiho Hong (swear013@gmail.com)
Google TensorFlow
โ€ข https://www.tensorflow.org
โ€ข ๊ตฌ๊ธ€์ด ์˜คํ”ˆ ์†Œ์Šค๋กœ ๊ณต๊ฐœํ•œ ๋”ฅ๋Ÿฌ๋‹ ํ”Œ๋žซํผ
โ€ข ๊ณ„์‚ฐ ๊ทธ๋ž˜ํ”„ ๋ชจ๋ธ
โ€ข Multi-GPU, ๋ถ„์‚ฐ ํ™˜๊ฒฝ ์ง€์›
โ€ข ๊ตฌ๊ธ€ ํด๋ผ์šฐ๋“œ API ์—์„œ๋„ ์ œ๊ณต๋จ (2016. 3. 24)
TensorFlow LOC
Module LOC ๋น„ ๊ณ 
core 211,610 C++ ๋กœ ์ž‘์„ฑ๋œ TensorFlow ์ฝ”์–ด ์ฝ”๋“œ
stream_executor 28,056 GPU CUDA ๊ด€๋ จ ์ฝ”๋“œ
python 103,113 Python ํ™˜๊ฒฝ ์ง€์›์„ ์œ„ํ•œ ํŒŒ์ด์ฌ ์ฝ”๋“œ
etc 68,368 contrib, models, tensorbard, tools, user_ops
total 411,147
commit : 005386dc198220601293d4821e6de63246527b0c
๋‚ด ์šฉ
โ€ข ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒƒ
โ€ข ์ฝ”๋“œ ๋ ˆ๋ฒจ์—์„œ์˜ TensorFlow ๋™์ž‘ ๋ฐฉ์‹์„ ์‚ดํŽด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
โ€ข ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ
โ€ข ๋”ฅ๋Ÿฌ๋‹ ์ด๋ก  ์ž์ฒด๋ฅผ ๋‹ค๋ฃจ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
โ€ข TensorFlow ์‚ฌ์šฉ๋ฒ•์„ ๋‹ค๋ฃจ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
Simple Neural Network
๐ป = ๐‘…๐‘’๐ฟ๐‘ˆ(๐‘ค1 ๐‘ฅ)
๐‘ฆ = ๐‘ ๐‘œ๐‘“๐‘ก๐‘š๐‘Ž๐‘ฅ(๐‘ค2 ๐ป)
โ‹‡ ๐‘ฆ = ๐‘ ๐‘œ๐‘“๐‘ก๐‘š๐‘Ž๐‘ฅ(๐‘ค2 ๐‘…๐‘’๐ฟ๐‘ˆ(๐‘ค1))
๐‘…๐‘’๐ฟ๐‘ˆ ๐‘ง = max(0, ๐‘ง)
๐‘ ๐‘œ๐‘“๐‘ก๐‘š๐‘Ž๐‘ฅ ๐‘ง =
exp(๐‘ง๐‘–)
๐‘— exp(๐‘ง๐‘—)
input : MNIST
x1
x2
x3
y1
y2
y3
w1 w2
ReLU
Softmax
์ผ๋ฐ˜์ ์ธ ๊ตฌํ˜„ ์Šคํƒ€์ผ (with Torch)
Net
Li near Layer
ReLU Layer
Li near Layer
Wei ght
Wei ght
Gr ad
Gr ad
scor e [ cr i t ]
i nput
updat er
TensorFlow : Computation Graph
TensorFlow Language
โ€ข Python
โ€ข ๊ทธ๋ž˜ํ”„ ๊ตฌ์„ฑ์€ Python API ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ž‘์„ฑํ•  ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
โ€ข ์ด ์™ธ์—๋„ TensorFlow ๋ฅผ ์†์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
โ€ข C++
โ€ข ์„ฑ๋Šฅ์„ ์š”๊ตฌํ•˜๋Š” ์‹ค์ œ ์—ฐ์‚ฐ ์ž‘์—…์€ ๋ชจ๋‘ C++ ํ™˜๊ฒฝ์œผ๋กœ ์ž‘์„ฑ๋ฉ๋‹ˆ๋‹ค.
Python API ๋กœ ํ•˜๋Š” ์ผ
โ€ข ๊ทธ๋ž˜ํ”„๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. โ€ข Session ์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋ž˜ํ”„ ์ž‘์„ฑ
โ€ข Python ๊ตฌ๋ฌธ์„ ์ด์šฉํ•˜์—ฌ ์—ฐ์‚ฐ์— ์‚ฌ์šฉํ•  ๊ทธ๋ž˜ํ”„๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
โ€ข ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๋Š” ์ฆ‰์‹œ ๋‚ด๋ถ€ ์—ฐ์‚ฐ์ด ์ˆ˜ํ–‰๋˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.
โ€ข ์˜ค๋กœ์ง€ ์—ฐ์‚ฐ ๊ทธ๋ž˜ํ”„๊ฐ€ ์ž‘์„ฑ๋˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์น˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
Session์˜ ์—ญํ• 
โ€ข Session์€ TensorFlow ๊ทธ๋ž˜ํ”„ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ์ž…๋‹ˆ๋‹ค.
โ€ข Graph๋ฅผ ์ƒ์„ฑํ•˜๊ณ  Operation์„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ Tensor๋ฅผ ํ‰๊ฐ€(eval)ํ•ฉ๋‹ˆ๋‹ค. (C++ Session)
โ€ข tf.Session ์€ ๋ฐ˜๋“œ์‹œ ํ•œ ๊ฐœ์˜ tf.Graph ๊ฐ์ฒด๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
โ€ข ํŠน์ • tf.Graph ๋ฅผ ๋ช…์‹œํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ default graph ๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
tf.Session ์ž‘์—…
fetch feed
http://www.swig.org/
Google Protocol buffer
โ€ข ์•ž์„œ ๋ณธ ๋‚ด์šฉ์—์„œ๋Š” tf.Graph ์ •๋ณด๋ฅผ C++๋กœ ๋„˜๊ธฐ๋Š” ๋ถ€๋ถ„์ด ์—†์Šต๋‹ˆ๋‹ค.
โ€ข tf.Graph ๋˜ํ•œ Python ๊ฐ์ฒด์ด๋ฏ€๋กœ ๋ฐ”๋กœ C++ ์ „๋‹ฌ์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
โ€ข tf.Graph ๋ฅผ Protocol Buffer ํƒ€์ž…์˜ ์ž๋ฃŒํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•œ ๋’ค ์ „๋‹ฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
โ€ข ๊ทธ๋ž˜ํ”„ ๊ตฌ์„ฑ ์ž์ฒด๋ฅผ ๊ธฐ์ˆ ํ•œ ์ •๋ณด๊ฐ€ Serialize๋œ ๋ฐ์ดํ„ฐ๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹œ๋ฉด ์‰ฝ์Šต๋‹ˆ๋‹ค.
Overview (in C++)
Session ๊ทธ๋ž˜ํ”„ ์—ฐ์‚ฐ ์ž‘์—… ๊ด€๋ฆฌ
Device ๋””๋ฐ”์ด์Šค ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๊ฐ์ฒด
Graph ์—ฐ์‚ฐ(op)๊ณผ ๊ฐ’(tensor)์„ ๊ทธ๋ž˜ํ”„ ๊ตฌ์กฐ๋กœ ์ €์žฅ
Executor ๊ทธ๋ž˜ํ”„ ์—ฐ์‚ฐ์„ ์‹ค์ œ๋กœ ์ˆ˜ํ–‰
OpKernel ๊ทธ๋ž˜ํ”„ ๋…ธ๋“œ์— ์ง€์ •๋œ ์—ฐ์‚ฐ (Functor)
Session
โ€ข ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•œ๊ทธ๋ž˜ํ”„ ์—ฐ์‚ฐ์„
์‹ค์ œ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.
โ€ข ํ˜„์žฌ 2๊ฐ€์ง€ Session์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.
โ€ข ๋กœ์ปฌ ํ™˜๊ฒฝ : DirectSession
โ€ข ๋ถ„์‚ฐ ํ™˜๊ฒฝ : GrpcSession
โ€ข ๋จผ์ € ๋กœ์ปฌ ํ™˜๊ฒฝ๋ถ€ํ„ฐ ์‚ดํŽด๋ด…์‹œ๋‹ค.
Di r ect Sessi on
Sessi on
Gr pcSessi on
Di r ect Sessi on
Fact or y
Gr pcSessi onFact or y
Fact or y
new( ) new( )
Sessi onFact or y
๊ทธ๋ž˜ํ”„ ๋ณ€ํ™˜ Overview
Session : ๊ทธ๋ž˜ํ”„ ์ƒ์„ฑ
โ€ข Session::Run() ํ˜ธ์ถœ์‹œ ๊ฐ€์žฅ ๋จผ์ € GraphDef ๋ฅผ Graph ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
Rewrite Graph
sess.Run([โ€œreluโ€], {image:xs})
fetch feed
๊ทธ๋Ÿฐ๋ฐ Run() ์‹คํ–‰์‹œ๋งˆ๋‹ค ์ด๋Ÿฐ ๋งŽ์€ ์ž‘์—…์„ ๋ฐ˜๋ณตํ•œ๋‹ค๊ณ ์š” ???
i mage
hddn
w1
ReLU
w2
scor e pr ob l oss
l abel
f eed
f et ch
i mage
hddn
w1
ReLU
w2
scor e pr ob l oss
l abel
Rewrite Graph (contโ€™d)
Sessi on
โ€œ xs, ys- >l oss: st ep/ โ€
โ€œ i ni t โ€ gr aphexecut or
gr aphexecut or gr aphexecut or
Node์— device ์„ค์ •ํ•˜๊ธฐ
โ€ข ๊ทธ๋Ÿฐ๋ฐ TensorFlow ๋Š” GPU ํ™˜๊ฒฝ์—์„œ ๋Œ๋ ค๋ณผ ์ˆ˜ ์žˆ๋‚˜์š”?
โ€ข ๋งŽ์€ ๋”ฅ๋Ÿฌ๋‹ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ Process ๋‹จ์œ„ CPU/GPU ๋ชจ๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
โ€ข ํ•˜์ง€๋งŒ TensorFlow ์—์„œ๋Š” Node ๋‹จ์œ„๋กœ Device๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
โ€ข Node ๋‹จ์œ„ ์‹คํ–‰์„ ์œ„ํ•ด Graph ๊ฐ์ฒด๋Š” ๋ถ„ํ• ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Node์— device ์„ค์ •ํ•˜๊ธฐ (Contโ€™d)
โ€ข ์‚ฌ์šฉ์ž๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ์ฝ”๋“œ ์ƒ์—์„œ device๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
โ€ข ์ด๋Ÿฐ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๋‹น Node์— device ์ •๋ณด๊ฐ€ ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค.
โ€ข Node์— device ์ •๋ณด๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ TensorFlow๊ฐ€ ์•Œ์•„์„œ device๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
Device ํ• ๋‹น ์ œ์•ฝ ์‚ฌํ•ญ
โ€ข Node์— device๋ฅผ ์ง€์ •ํ•  ๋•Œ์˜ ์ œ์•ฝ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.
1. ์‚ฌ์šฉ์ž๊ฐ€ ์ฝ”๋“œ ์ƒ์— ๋ช…์‹œ์ ์œผ๋กœ device ๋ฅผ ๊ธฐ์ˆ ํ•œ ๊ฒฝ์šฐ
โ€ข ๋ฐ˜๋“œ์‹œ ํ•ด๋‹น device ๋กœ ๋…ธ๋“œ๋ฅผ ํ• ๋‹นํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
2. ์–ด๋–ค ๋…ธ๋“œ๊ฐ€ ๋‹ค๋ฅธ ๋…ธ๋“œ์˜ ์ฐธ์กฐ ํƒ€์ž…์œผ๋กœ ์ƒ์„ฑ๋œ ๊ฒฝ์šฐ
โ€ข ์ด ๊ฒฝ์šฐ ๋‘ ๋…ธ๋“œ๋Š” ๋™์ผํ•œ device ๋กœ ํ• ๋‹นํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
3. A์™€ B๋…ธ๋“œ๊ฐ€ ์ฃผ์–ด์ง€๊ณ  B๋…ธ๋“œ์— @A์™€ ๊ฐ™์€ colocation์ด ์‚ฌ์šฉ๋œ ๊ฒฝ์šฐ
โ€ข ์ด ๊ฒฝ์šฐ๋„ A์™€ B ๋…ธ๋“œ๋Š” ๋™์ผํ•œ device ๋กœ ํ• ๋‹น๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
SimplePlacer
Di r ect Sessi on
Gr aphSi mpl ePl acer
Devi ceSet
devi ce_set
devi ces
Devi ce
devi ces
Devi ceMgr
LookupDevi ce( )
Li st Devi ces( )
devi ces devi ce_mgr
SimplePlacer (Contโ€™d)
โ€ข ์ด๋ฆ„๋Œ€๋กœ ๊ฐ„๋‹จํ•œ ๋ฐฉ์‹์œผ๋กœ ์ž‘์—…ํ•ฉ๋‹ˆ๋‹ค.
โ€ข TensorFow White Paper ์— ๋”ฐ๋ฅด๋ฉด,
โ€ข ๋…ธ๋“œ ํ• ๋‹น์‹œ Cost ๊ธฐ๋ฐ˜ ํ• ๋‹น์„ ์ˆ˜ํ–‰ํ•œ๋‹ค๊ณ  ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
โ€ข ํ•˜์ง€๋งŒ ํ˜„์‹ค์€ ?
โ€ข ์ผ๋‹จ device๋ฅผ ํ• ๋‹นํ•  ๋…ธ๋“œ๋Š” ๋ถ€๋ชจ ๋…ธ๋“œ์˜ device ์ •๋ณด๋ฅผ ์–ป์–ด ์ž์‹ ์˜ device ์ •๋ณด๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
โ€ข ์ด ๋•Œ ๋ถ€๋ชจ ๋…ธ๋“œ์˜ device๊ฐ€ ์ง€์ •๋˜์–ด ์žˆ์ง€ ์•Š์€ ๊ฒฝ์šฐ, ์‚ฌ์ „ ๊ณ ๋ ค๋œ ์ˆœ์„œ์— ๋”ฐ๋ผ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
โ€ข ๋”ฐ๋ผ์„œ GPU ์žฅ๋น„๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๋Š” ์žฅ๋น„์˜ ๊ฒฝ์šฐ ๋Œ€๊ฐœ GPU:0 ์ด ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
โ€ข ์ฆ‰, ํ• ๋‹น ์ •์ฑ…์€ ํ˜•ํŽธ์—†๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. (์ดํ›„์— ๋” ์ข‹์€ Placer ๊ฐ€ ๋‚˜์˜ฌ๊ฑฐ๋ผ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.)
GPU: 0 GPU: 1
CPU: 0
i mage
hddn
w1
ReLU
w2
scor e
pr ob
l oss
l abel
Graph partitioning
โ€ข Device ๋‹จ์œ„๋กœ ํŒŒํ‹ฐ์…”๋‹์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
โ€ข ๊ทธ๋ž˜ํ”„ ๋ถ„ํ• ์„ ์™„๋ฃŒํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ถ”๊ฐ€ ์ž‘์—…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
โ€ข ์ ‘์ ์ด ๋˜๋Š” ๋…ธ๋“œ์— recv, send ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๊ทธ๋ž˜ํ”„ ๋ถ„ํ• ์„ ์™„์„ฑํ•ฉ๋‹ˆ๋‹ค.
โ€ข ์ด ๋•Œ ์„œ๋ธŒ๊ทธ๋ž˜ํ”„์—์„œ recv๊ฐ€ ์—ฌ๋Ÿฌ ๋…ธ๋“œ์—์„œ ์‚ฌ์šฉ๋œ๋‹ค๋ฉด ํ•˜๋‚˜๋กœ ์น˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
GPU: 0 GPU: 1
CPU: 0
i mage
hddn
w1
ReLU
w2
scor e
pr ob
l oss
l abel
send
r ecv send r ecv
send
r ecv
Executor
โ€ข ๋ถ„ํ• ๋œ ๊ทธ๋ž˜ํ”„๋“ค์„ ์‹คํ–‰ํ•˜๋Š” ์ฃผ์ฒด๋Š” Executor ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.
Executor
โ€ข Executor๋Š” ์„œ๋ธŒ-๊ทธ๋ž˜ํ”„ ํ•˜๋‚˜๋งˆ๋‹ค ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
โ€ข Executor๋Š” ๊ฐœ๋ณ„์ ์ธ Thread ์ž‘์—…์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.
โ€ข Executor๋Š” ์„œ๋ธŒ-๊ทธ๋ž˜ํ”„์˜ ์‹œ์ž‘ ๋…ธ๋“œ๋ฅผ ์ฐพ์•„ ๊ทธ๋ž˜ํ”„ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
โ€ข ๋ชจ๋“  Executor์˜ ์ž‘์—…์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ExecutorBarrier๊ฐ€ ๋ง‰์•„์ค๋‹ˆ๋‹ค.
โ€ข Executor๊ฐ€ ํ•˜๋Š” ์ผ์€ ์ข€ ๋” ๋ณต์žกํ•˜์ง€๋งŒ ์ด ์ •๋„๋งŒ ์•Œ๊ณ  ๋„˜์–ด๊ฐ‘์‹œ๋‹ค.
๋ž‘๋ฐ๋ทฐ (Rendezvous)
โ€ข ์„œ๋ธŒ-๊ทธ๋ž˜ํ”„ ์‚ฌ์ด์˜ send์™€ recv ๋…ธ๋“œ ๋ฐ์ดํ„ฐ๋ฅผ ๋™๊ธฐํ™”ํ•˜๋Š” ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.
โ€ข ๊ฐ Executor ๋“ค์€ ์ž์‹ ์˜ ์„œ๋ธŒ ๊ทธ๋ž˜ํ”„ ๋‚ด์˜ send์™€ recv ๊ฐ์ฒด๋ฅผ Rendezvous ๊ฐ์ฒด์— ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.
โ€ข Send()
โ€ข send ๋…ธ๋“œ์— ์†ํ•œ Tensor ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฅธ ๊ทธ๋ž˜ํ”„๋กœ ๋ณด๋‚ด์ค„ ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
โ€ข Send() ํ˜ธ์ถœ์‹œ ์ด๋ฏธ ๋‹ค๋ฅธ Executor ๊ฐ€ ํ•ด๋‹น ๋…ธ๋“œ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์š”๊ตฌํ•œ ์‚ฌ์‹ค์ด ์žˆ๋‹ค๋ฉด ๋ฐ”๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
โ€ข RecvAsync()
โ€ข recv ๋…ธ๋“œ์— ์†ํ•œ Tensor ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฅธ ๊ทธ๋ž˜ํ”„๋กœ๋ถ€ํ„ฐ ์–ป์–ด์˜ฌ ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
โ€ข RecvAsync() ํ˜ธ์ถœ์‹œ ์ด๋ฏธ ๋‹ค๋ฅธ Executor ๊ฐ€ ํ•ด๋‹น ๋…ธ๋“œ๋ฅผ ๋“ฑ๋กํ•ด ๋†“์•˜๋‹ค๋ฉด ๋ฐ”๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์–ป์–ด์˜ต๋‹ˆ๋‹ค.
I nt r aPr ocess
Rendezvous
Send( )
RecvAsync( )
l ocal
Local RendezvousI mpl Rendezvous
Send( )
RecvAsync( )
Rendezvous Table
Device ์‚ฌ์ด์˜ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ
โ€ข ์•ž์„œ ์‚ดํŽด๋ณด์•˜์ง€๋งŒ ๊ฐ๊ฐ์˜ ๊ทธ๋ž˜ํ”„๋Š” device ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„์–ด์ง‘๋‹ˆ๋‹ค.
โ€ข ๊ทธ๋ž˜ํ”„๊ฐ€ ์„œ๋กœ ์ฃผ๊ณ  ๋ฐ›๋Š” ๋ฐ์ดํ„ฐ๋Š” send์™€ recv ๋…ธ๋“œ์— ์†ํ•œ Tensor ํƒ€์ž…์˜ ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.
โ€ข ์—ฌ๊ธฐ์„œ Tensor๋ž€ ์ฐจ์›(dimension) ์ •๋ณด๋ฅผ ๊ฐ€์ง„ ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ ๋ธ”๋ก์ž…๋‹ˆ๋‹ค.
โ€ข ์„œ๋กœ ๋‹ค๋ฅธ device ์‚ฌ์ด์˜ ๋ฐ์ดํ„ฐ ๋ณต์‚ฌ๋Š” ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ์š”?
โ€ข Device ๋ผ๋Š” ๊ฐ์ฒด์—๋Š” ์ž์‹ ์˜ Device ํƒ€์ž…๊ณผ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์šฉ Allocator๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
โ€ข InterProcessRendezvous ๊ฐ์ฒด์—์„œ Device ํƒ€์ž…์„ ์กฐํšŒํ•˜์—ฌ ์ ์ ˆํ•œ Copy ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด ์ค๋‹ˆ๋‹ค.
CPU GPUCPU CPU GPUGPU
์„œ๋ธŒ ๊ทธ๋ž˜ํ”„์˜ ์‹คํ–‰
โ€ข Executor๊ฐ€ Graph๋ฅผ ์‹คํ–‰ํ•œ๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ ๋„๋Œ€์ฒด ๋ญ˜ ์‹คํ–‰์‹œํ‚ค๋Š” ๊ฑธ๊นŒ์š”?
โ€ข ์‚ฌ์‹ค ํ•˜๋‚˜์˜ ๋…ธ๋“œ๋Š” ํ•˜๋‚˜์˜ Operation์„ ์˜๋ฏธํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
โ€ข ๊ทธ๋ฆฌ๊ณ  ์ด Operation์—๋Š” ์ ์ ˆํ•œ ์—ฐ์‚ฐ๋“ค์ด ์ •์˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
โ€ข ์ž…์ถœ๋ ฅ ๋ฐ์ดํ„ฐ๋Š” Operation์— ์„ค์ •๋œ Tensor ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
โ€ข ๋™์ผํ•œ ์—ฐ์‚ฐ์ด๋ผ๋„ Device ์— ๋”ฐ๋ผ ๊ตฌํ˜„์ด ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
โ€ข ์˜ˆ๋กœ CPU ์™€ GPU ํ™˜๊ฒฝ์—์„œ add ์—ฐ์‚ฐ์˜ ๊ตฌํ˜„์€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
Operation
โ€ข ๋…ธ๋“œ์— ์„ค์ •๋œ ์‹ค์ œ ์‹คํ–‰ํ•ด์•ผ ํ•  ์ž‘์—…์ž…๋‹ˆ๋‹ค.
โ€ข ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ Operation ์„ ์ถ”๊ฐ€ํ• ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. (TensorFlow Tutorial ์ฐธ๊ณ )
โ€ข ์ƒํ™ฉ์— ๋”ฐ๋ผ Device ๋ณ„ Operation์„ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š”๊ฒŒ ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค.
โ€ข ๊ทธ๋ฆฌ๊ณ  ํŠน์ •ํ•œ Device ์—์„œ๋งŒ ๋™์ž‘ํ•˜๋Š” Operation ์„ Kernel ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
โ€ข Op๋Š” Math ์—ฐ์‚ฐ์„ ์œ„ํ•œ Op์™€ Control Flow๋ฅผ ์œ„ํ•œ Op๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์‚ฌ์‹ค์€ ๋” ์žˆ์–ด์š”.)
โ€ข ์ด ์ค‘ Math์—ฐ์‚ฐ์„ ์œ„ํ•œ ๊ธฐ๋Šฅ์€ TensorFlow๋„ ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค.
โ€ข CPU : ์„ ํ˜•๋Œ€์ˆ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ Eigen์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
โ€ข GPU : Cuda ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (Cublas/CuDNN/CuFFT ํ˜น์€ Cuda Kernel)๋‚˜ Eigen ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
Operation example
์ง„์งœ ๋Œ์•„๊ฐ€๋Š” ์ฝ”๋“œ๋Š” ์•„๋‹™๋‹ˆ๋‹ค.
TensorFlow ๋ถ„์‚ฐ ๋ฒ„์ „
โ€ข 2016๋…„ 3์›”์— TensorFlow ๋ถ„์‚ฐ ๋ฒ„์ „ ์ดˆ์•ˆ์ด ๊ณต๊ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
โ€ข gRPC๋ฅผ ์ด์šฉํ•œ ๋ถ„์‚ฐ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค.
โ€ข ์•„์ง ์ดˆ๊ธฐ ๋ฒ„์ „์ด๋ผ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์•„์ฃผ ๋งŽ์Šต๋‹ˆ๋‹ค.
โ€ข ์—ฌ๊ธฐ์„œ๋Š” ์•„์ฃผ ๊ฐœ๋žต์ ์ธ ๊ฐœ๋…๋งŒ์„ ์‚ดํŽด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
gRPC
โ€ข ๊ตฌ๊ธ€์ด ๋งŒ๋“  RPC ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. (http://www.grpc.io/)
โ€ข ๊ธฐ์กด RPC ๋ฐฉ์‹๊ณผ๋Š” ์•ฝ๊ฐ„ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
โ€ข ์ž…์ถœ๋ ฅ ์ž๋ฃŒํ˜•์œผ๋กœ protocol buffer ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.
โ€ข ํ•จ์ˆ˜ ์„ ์–ธ์„ protocol buffer message ๋กœ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
โ€ข ์‹ค์ œ ๋„คํŠธ์›Œํฌ ํ”„๋กœํ† ์ฝœ์€ SPDY (HTTP2.0)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
Cluster Concept
GrpcServer
โ€ข GrpcServer๋Š” ๊ทธ๋ž˜ํ”„ ์—ฐ์‚ฐ Process ์‹œ์ž‘ ์ „์— ์ด๋ฏธ ๊ฐ ์žฅ๋น„์—์„œ ๊ตฌ๋™๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
โ€ข Binary ๋ช…๋ น์–ด๋กœ ์‹คํ–‰ํ• ์ˆ˜๋„ ์žˆ๊ณ , python ์ฝ”๋“œ๋กœ๋„ ๊ตฌ๋™ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. (Binary ๋Š” ์ˆจ๊ฒจ์ ธ ์žˆ์–ด์š”.)
Mast er
ser vi ce
Mast er St ubRPC Wor ker St ub RPC
Wor ker
ser vi ce
Gr pcSer ver
Local Devi ce I nf o
Distributed Computation Graph
โ€ข Client : Master๋กœ GraphDef ๊ฐ์ฒด๋ฅผ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
โ€ข Master : Graph ๊ฐ์ฒด๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ๋ถ„ํ• ํ•˜์—ฌ Worker์—๊ฒŒ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
โ€ข Worker : ๋กœ์ปฌ ๋จธ์‹ ์—์„œ ์ฒ˜๋ฆฌํ•œ ๊ฒƒ๊ณผ ๋™์ผํ•˜๊ฒŒ Graph ๋ฅผ ์—ฐ์‚ฐํ•ฉ๋‹ˆ๋‹ค.
Cl i ent
Gr pcRemot eMast er
st ub
Mast er 0
Gr pcMast er Ser vi ce
st ubRPC
Gr aphDef
Mast er Sessi on
gr pc_sessi on Wor ker 0
Gr pcRemot eWor ker
st ub
Gr pcWor ker Ser vi ce
st ub
Wor ker 1
Gr pcWor ker Ser vi ce
st ub
RPC
RPC
Gr aphDef
Gr aphDef
Gr aphDef
Cluster example
ember
Gr pcSer ver
ember 0: : 2222
/ j ob: ember / t ask0
pol y
Gr pcSer ver
pol y0: 2222
/ j ob: pol y/ t ask0
ember cpu: 0
gpu: 0
gt x980
gpu: 1
gt x980
pol y cpu: 0
gpu: 0
t i t an x
gpu: 1
t i t an x
๋ถ„์‚ฐ ์ฝ”๋“œ ๊ตฌํ˜„
๊ทธ๋ž˜ํ”„ ์ „๋‹ฌ
[๋งˆ์Šคํ„ฐ ์„œ๋ฒ„]
1. SimplePlacer๋กœ ๊ฐ ๋…ธ๋“œ์— ๋””๋ฐ”์ด์Šค ํ• ๋‹น
2. Task ์„œ๋ฒ„ ๋‹จ์œ„ ํŒŒํ‹ฐ์…”๋‹ (recv, send ์—†์Œ)
3. ์ƒ์„ฑ๋œ GraphDef ๋ฅผ ๊ฐ task ์„œ๋ฒ„์— ์ „๋‹ฌ
[์›Œ์ปค ์„œ๋ฒ„]
1. Task ์„œ๋ฒ„์—์„œ๋Š” ๊ฐ ๊ทธ๋ž˜ํ”„ ๊ฐœ๋ณ„ ์‹คํ–‰
2. ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜
RpcRemoteRendezvous
์ด๊ฒƒ๋งŒ์€ ๊ธฐ์–ตํ•˜์ž.
โ€ข TensorFlow ๋Š” Computation Graph ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋ž˜ํ”„๋ฅผ ๋งŒ๋“ค๊ณ ,
์ •์ œํ•œ๋’ค,
๋””๋ฐ”์ด์Šค์— ํ• ๋‹นํ•˜๊ณ ,
๋‚˜๋ˆ„์–ด ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
๋‹ค์Œ์— ๋˜ ๋งŒ๋‚˜์š” : Replicated Training
Synchronous data parallelism Asynchronous data parallelism Shared variables between different graphs

More Related Content

What's hot

๋น ๋ฅด๊ฒŒ ํ™œ์šฉํ•˜๋Š” ํŒŒ์ด์ฌ3 ์Šคํ„ฐ๋””(ch1~4)
๋น ๋ฅด๊ฒŒ ํ™œ์šฉํ•˜๋Š” ํŒŒ์ด์ฌ3 ์Šคํ„ฐ๋””(ch1~4)๋น ๋ฅด๊ฒŒ ํ™œ์šฉํ•˜๋Š” ํŒŒ์ด์ฌ3 ์Šคํ„ฐ๋””(ch1~4)
๋น ๋ฅด๊ฒŒ ํ™œ์šฉํ•˜๋Š” ํŒŒ์ด์ฌ3 ์Šคํ„ฐ๋””(ch1~4)
SeongHyun Ahn
ย 
Python - Module
Python - ModulePython - Module
Python - Module
YoungSu Son
ย 
H3 2011 ํŒŒ์ด์ฌ์œผ๋กœ ํด๋ผ์šฐ๋“œ ํ•˜๊ณ  ์‹ถ์–ด์š”
H3 2011 ํŒŒ์ด์ฌ์œผ๋กœ ํด๋ผ์šฐ๋“œ ํ•˜๊ณ  ์‹ถ์–ด์š”H3 2011 ํŒŒ์ด์ฌ์œผ๋กœ ํด๋ผ์šฐ๋“œ ํ•˜๊ณ  ์‹ถ์–ด์š”
H3 2011 ํŒŒ์ด์ฌ์œผ๋กœ ํด๋ผ์šฐ๋“œ ํ•˜๊ณ  ์‹ถ์–ด์š”
KTH
ย 

What's hot (20)

20150306 ํŒŒ์ด์ฌ๊ธฐ์ดˆ IPython์„์ด์šฉํ•œํ”„๋กœ๊ทธ๋ž˜๋ฐ_์ดํƒœ์˜
20150306 ํŒŒ์ด์ฌ๊ธฐ์ดˆ IPython์„์ด์šฉํ•œํ”„๋กœ๊ทธ๋ž˜๋ฐ_์ดํƒœ์˜20150306 ํŒŒ์ด์ฌ๊ธฐ์ดˆ IPython์„์ด์šฉํ•œํ”„๋กœ๊ทธ๋ž˜๋ฐ_์ดํƒœ์˜
20150306 ํŒŒ์ด์ฌ๊ธฐ์ดˆ IPython์„์ด์šฉํ•œํ”„๋กœ๊ทธ๋ž˜๋ฐ_์ดํƒœ์˜
ย 
Tensorflow service & Machine Learning
Tensorflow service & Machine LearningTensorflow service & Machine Learning
Tensorflow service & Machine Learning
ย 
๋น ๋ฅด๊ฒŒ ํ™œ์šฉํ•˜๋Š” ํŒŒ์ด์ฌ3 ์Šคํ„ฐ๋””(ch1~4)
๋น ๋ฅด๊ฒŒ ํ™œ์šฉํ•˜๋Š” ํŒŒ์ด์ฌ3 ์Šคํ„ฐ๋””(ch1~4)๋น ๋ฅด๊ฒŒ ํ™œ์šฉํ•˜๋Š” ํŒŒ์ด์ฌ3 ์Šคํ„ฐ๋””(ch1~4)
๋น ๋ฅด๊ฒŒ ํ™œ์šฉํ•˜๋Š” ํŒŒ์ด์ฌ3 ์Šคํ„ฐ๋””(ch1~4)
ย 
Python - Module
Python - ModulePython - Module
Python - Module
ย 
1.Introduction to Python and TensorFlow
1.Introduction to Python and TensorFlow1.Introduction to Python and TensorFlow
1.Introduction to Python and TensorFlow
ย 
Storm ํ›‘์–ด๋ณด๊ธฐ
Storm ํ›‘์–ด๋ณด๊ธฐStorm ํ›‘์–ด๋ณด๊ธฐ
Storm ํ›‘์–ด๋ณด๊ธฐ
ย 
Python basic
Python basicPython basic
Python basic
ย 
Python vs Java @ PyCon Korea 2017
Python vs Java @ PyCon Korea 2017Python vs Java @ PyCon Korea 2017
Python vs Java @ PyCon Korea 2017
ย 
ํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ ๋ถ„์„ 3์ข…์„ธํŠธ
ํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ ๋ถ„์„ 3์ข…์„ธํŠธํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ ๋ถ„์„ 3์ข…์„ธํŠธ
ํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ ๋ถ„์„ 3์ข…์„ธํŠธ
ย 
Cnn ๋ฐœํ‘œ์ž๋ฃŒ
Cnn ๋ฐœํ‘œ์ž๋ฃŒCnn ๋ฐœํ‘œ์ž๋ฃŒ
Cnn ๋ฐœํ‘œ์ž๋ฃŒ
ย 
Writing Fast Code (KR)
Writing Fast Code (KR)Writing Fast Code (KR)
Writing Fast Code (KR)
ย 
2016317 ํŒŒ์ด์ฌ๊ธฐ์ดˆ_ํŒŒ์ด์ฌ_๋‹ค์ค‘์„ค์น˜๋ถ€ํ„ฐ_Jupyter๋ฅผ์ด์šฉํ•œํ”„๋กœ๊ทธ๋ž˜๋ฐ_์ดํƒœ์˜
2016317 ํŒŒ์ด์ฌ๊ธฐ์ดˆ_ํŒŒ์ด์ฌ_๋‹ค์ค‘์„ค์น˜๋ถ€ํ„ฐ_Jupyter๋ฅผ์ด์šฉํ•œํ”„๋กœ๊ทธ๋ž˜๋ฐ_์ดํƒœ์˜2016317 ํŒŒ์ด์ฌ๊ธฐ์ดˆ_ํŒŒ์ด์ฌ_๋‹ค์ค‘์„ค์น˜๋ถ€ํ„ฐ_Jupyter๋ฅผ์ด์šฉํ•œํ”„๋กœ๊ทธ๋ž˜๋ฐ_์ดํƒœ์˜
2016317 ํŒŒ์ด์ฌ๊ธฐ์ดˆ_ํŒŒ์ด์ฌ_๋‹ค์ค‘์„ค์น˜๋ถ€ํ„ฐ_Jupyter๋ฅผ์ด์šฉํ•œํ”„๋กœ๊ทธ๋ž˜๋ฐ_์ดํƒœ์˜
ย 
Profiling - ์‹ค์‹œ๊ฐ„ ๋Œ€ํ™”์‹ ํ”„๋กœํŒŒ์ผ๋Ÿฌ
Profiling - ์‹ค์‹œ๊ฐ„ ๋Œ€ํ™”์‹ ํ”„๋กœํŒŒ์ผ๋ŸฌProfiling - ์‹ค์‹œ๊ฐ„ ๋Œ€ํ™”์‹ ํ”„๋กœํŒŒ์ผ๋Ÿฌ
Profiling - ์‹ค์‹œ๊ฐ„ ๋Œ€ํ™”์‹ ํ”„๋กœํŒŒ์ผ๋Ÿฌ
ย 
ํŒŒ์ด์„  ์‹ค์ „๊ณต๋žต-1
ํŒŒ์ด์„  ์‹ค์ „๊ณต๋žต-1ํŒŒ์ด์„  ์‹ค์ „๊ณต๋žต-1
ํŒŒ์ด์„  ์‹ค์ „๊ณต๋žต-1
ย 
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋Œ€ํšŒ: C++11 ์ด์•ผ๊ธฐ
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋Œ€ํšŒ: C++11 ์ด์•ผ๊ธฐํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋Œ€ํšŒ: C++11 ์ด์•ผ๊ธฐ
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋Œ€ํšŒ: C++11 ์ด์•ผ๊ธฐ
ย 
PyCon 12์›” ์„ธ๋ฏธ๋‚˜ - ์‹ค์ „ ํŒŒ์ด์ฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ฑ… ํ™๋ณด
PyCon 12์›” ์„ธ๋ฏธ๋‚˜ - ์‹ค์ „ ํŒŒ์ด์ฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ฑ… ํ™๋ณดPyCon 12์›” ์„ธ๋ฏธ๋‚˜ - ์‹ค์ „ ํŒŒ์ด์ฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ฑ… ํ™๋ณด
PyCon 12์›” ์„ธ๋ฏธ๋‚˜ - ์‹ค์ „ ํŒŒ์ด์ฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ฑ… ํ™๋ณด
ย 
[Main Session] ๋ฏธ๋ž˜์˜ Java ๋ฏธ๋ฆฌ๋ณด๊ธฐ - ์•ฐ๋ฒ„์™€ ๋ฐœํ• ๋ผ ํ”„๋กœ์ ํŠธ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ
[Main Session] ๋ฏธ๋ž˜์˜ Java ๋ฏธ๋ฆฌ๋ณด๊ธฐ - ์•ฐ๋ฒ„์™€ ๋ฐœํ• ๋ผ ํ”„๋กœ์ ํŠธ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ[Main Session] ๋ฏธ๋ž˜์˜ Java ๋ฏธ๋ฆฌ๋ณด๊ธฐ - ์•ฐ๋ฒ„์™€ ๋ฐœํ• ๋ผ ํ”„๋กœ์ ํŠธ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ
[Main Session] ๋ฏธ๋ž˜์˜ Java ๋ฏธ๋ฆฌ๋ณด๊ธฐ - ์•ฐ๋ฒ„์™€ ๋ฐœํ• ๋ผ ํ”„๋กœ์ ํŠธ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ
ย 
H3 2011 ํŒŒ์ด์ฌ์œผ๋กœ ํด๋ผ์šฐ๋“œ ํ•˜๊ณ  ์‹ถ์–ด์š”
H3 2011 ํŒŒ์ด์ฌ์œผ๋กœ ํด๋ผ์šฐ๋“œ ํ•˜๊ณ  ์‹ถ์–ด์š”H3 2011 ํŒŒ์ด์ฌ์œผ๋กœ ํด๋ผ์šฐ๋“œ ํ•˜๊ณ  ์‹ถ์–ด์š”
H3 2011 ํŒŒ์ด์ฌ์œผ๋กœ ํด๋ผ์šฐ๋“œ ํ•˜๊ณ  ์‹ถ์–ด์š”
ย 
Swift3 generic
Swift3 genericSwift3 generic
Swift3 generic
ย 
Swift3 subscript inheritance initialization
Swift3 subscript inheritance initializationSwift3 subscript inheritance initialization
Swift3 subscript inheritance initialization
ย 

Viewers also liked

Python์œผ๋กœ ํ•œ์ž๊ฒ€์ƒ‰ ํ…”๋ ˆ๊ทธ๋žจ ๋ด‡ ๊ฐœ๋ฐœ ํ›„๊ธฐ
Python์œผ๋กœ ํ•œ์ž๊ฒ€์ƒ‰ ํ…”๋ ˆ๊ทธ๋žจ ๋ด‡ ๊ฐœ๋ฐœ ํ›„๊ธฐPython์œผ๋กœ ํ•œ์ž๊ฒ€์ƒ‰ ํ…”๋ ˆ๊ทธ๋žจ ๋ด‡ ๊ฐœ๋ฐœ ํ›„๊ธฐ
Python์œผ๋กœ ํ•œ์ž๊ฒ€์ƒ‰ ํ…”๋ ˆ๊ทธ๋žจ ๋ด‡ ๊ฐœ๋ฐœ ํ›„๊ธฐ
DaeHyun Sung
ย 
ํ”Œ๋žซํผ ๊ฐ•์˜ ๋…ธํŠธ Lecture 07
ํ”Œ๋žซํผ ๊ฐ•์˜ ๋…ธํŠธ Lecture 07ํ”Œ๋žซํผ ๊ฐ•์˜ ๋…ธํŠธ Lecture 07
ํ”Œ๋žซํผ ๊ฐ•์˜ ๋…ธํŠธ Lecture 07
The Innovation Lab
ย 
Platform Strategy & Cases
Platform Strategy & CasesPlatform Strategy & Cases
Platform Strategy & Cases
SungHyuk Park
ย 
๋คํ”„ ํŒŒ์ผ์„ ํ†ตํ•œ ์‚ฌํ›„ ๋””๋ฒ„๊น… ์‹ค์šฉ ํ…Œํฌ๋‹‰ NDC2012
๋คํ”„ ํŒŒ์ผ์„ ํ†ตํ•œ ์‚ฌํ›„ ๋””๋ฒ„๊น… ์‹ค์šฉ ํ…Œํฌ๋‹‰ NDC2012๋คํ”„ ํŒŒ์ผ์„ ํ†ตํ•œ ์‚ฌํ›„ ๋””๋ฒ„๊น… ์‹ค์šฉ ํ…Œํฌ๋‹‰ NDC2012
๋คํ”„ ํŒŒ์ผ์„ ํ†ตํ•œ ์‚ฌํ›„ ๋””๋ฒ„๊น… ์‹ค์šฉ ํ…Œํฌ๋‹‰ NDC2012
Esun Kim
ย 

Viewers also liked (20)

Tensorflow internal
Tensorflow internalTensorflow internal
Tensorflow internal
ย 
ํ…์„œํ”Œ๋กœ ๊ฑธ์Œ๋งˆ (TensorFlow Tutorial)
ํ…์„œํ”Œ๋กœ ๊ฑธ์Œ๋งˆ (TensorFlow Tutorial)ํ…์„œํ”Œ๋กœ ๊ฑธ์Œ๋งˆ (TensorFlow Tutorial)
ํ…์„œํ”Œ๋กœ ๊ฑธ์Œ๋งˆ (TensorFlow Tutorial)
ย 
Advanced Spark and TensorFlow Meetup May 26, 2016
Advanced Spark and TensorFlow Meetup May 26, 2016Advanced Spark and TensorFlow Meetup May 26, 2016
Advanced Spark and TensorFlow Meetup May 26, 2016
ย 
ํ…์„œํ”Œ๋กœ์šฐ ์„ค์น˜๋„ ํ–ˆ๊ณ  ํŠœํ† ๋ฆฌ์–ผ๋„ ๋ดค๊ณ  ๊ธฐ์ดˆ ์˜ˆ์ œ๋„ ์งœ๋ดค๋‹ค๋ฉด TensorFlow KR Meetup 2016
ํ…์„œํ”Œ๋กœ์šฐ ์„ค์น˜๋„ ํ–ˆ๊ณ  ํŠœํ† ๋ฆฌ์–ผ๋„ ๋ดค๊ณ  ๊ธฐ์ดˆ ์˜ˆ์ œ๋„ ์งœ๋ดค๋‹ค๋ฉด TensorFlow KR Meetup 2016ํ…์„œํ”Œ๋กœ์šฐ ์„ค์น˜๋„ ํ–ˆ๊ณ  ํŠœํ† ๋ฆฌ์–ผ๋„ ๋ดค๊ณ  ๊ธฐ์ดˆ ์˜ˆ์ œ๋„ ์งœ๋ดค๋‹ค๋ฉด TensorFlow KR Meetup 2016
ํ…์„œํ”Œ๋กœ์šฐ ์„ค์น˜๋„ ํ–ˆ๊ณ  ํŠœํ† ๋ฆฌ์–ผ๋„ ๋ดค๊ณ  ๊ธฐ์ดˆ ์˜ˆ์ œ๋„ ์งœ๋ดค๋‹ค๋ฉด TensorFlow KR Meetup 2016
ย 
Python์œผ๋กœ ํ•œ์ž๊ฒ€์ƒ‰ ํ…”๋ ˆ๊ทธ๋žจ ๋ด‡ ๊ฐœ๋ฐœ ํ›„๊ธฐ
Python์œผ๋กœ ํ•œ์ž๊ฒ€์ƒ‰ ํ…”๋ ˆ๊ทธ๋žจ ๋ด‡ ๊ฐœ๋ฐœ ํ›„๊ธฐPython์œผ๋กœ ํ•œ์ž๊ฒ€์ƒ‰ ํ…”๋ ˆ๊ทธ๋žจ ๋ด‡ ๊ฐœ๋ฐœ ํ›„๊ธฐ
Python์œผ๋กœ ํ•œ์ž๊ฒ€์ƒ‰ ํ…”๋ ˆ๊ทธ๋žจ ๋ด‡ ๊ฐœ๋ฐœ ํ›„๊ธฐ
ย 
ํ”Œ๋žซํผ ๊ฐ•์˜ ๋…ธํŠธ Lecture 07
ํ”Œ๋žซํผ ๊ฐ•์˜ ๋…ธํŠธ Lecture 07ํ”Œ๋žซํผ ๊ฐ•์˜ ๋…ธํŠธ Lecture 07
ํ”Œ๋žซํผ ๊ฐ•์˜ ๋…ธํŠธ Lecture 07
ย 
Howto_Tensorflow+Linear Regression
Howto_Tensorflow+Linear RegressionHowto_Tensorflow+Linear Regression
Howto_Tensorflow+Linear Regression
ย 
แ„Œแ…กแ„‡แ…กแ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ธแ„แ…ณ ๊ณต๋ถ€๋ฅผ ์œ„ํ•œ ์ฑ… ์†Œ๊ฐœ
แ„Œแ…กแ„‡แ…กแ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ธแ„แ…ณ ๊ณต๋ถ€๋ฅผ ์œ„ํ•œ ์ฑ… ์†Œ๊ฐœแ„Œแ…กแ„‡แ…กแ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ธแ„แ…ณ ๊ณต๋ถ€๋ฅผ ์œ„ํ•œ ์ฑ… ์†Œ๊ฐœ
แ„Œแ…กแ„‡แ…กแ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ธแ„แ…ณ ๊ณต๋ถ€๋ฅผ ์œ„ํ•œ ์ฑ… ์†Œ๊ฐœ
ย 
Places in india which are an exact replica
Places in india which are an exact replicaPlaces in india which are an exact replica
Places in india which are an exact replica
ย 
Cells and chromosomes
Cells and chromosomesCells and chromosomes
Cells and chromosomes
ย 
๋ฐ•์Šค๋Ÿฌ๋„ˆ ํŠœํ† ๋ฆฌ์–ผ๋ถ
๋ฐ•์Šค๋Ÿฌ๋„ˆ ํŠœํ† ๋ฆฌ์–ผ๋ถ๋ฐ•์Šค๋Ÿฌ๋„ˆ ํŠœํ† ๋ฆฌ์–ผ๋ถ
๋ฐ•์Šค๋Ÿฌ๋„ˆ ํŠœํ† ๋ฆฌ์–ผ๋ถ
ย 
E business e e-commerce
E business e e-commerceE business e e-commerce
E business e e-commerce
ย 
์ž๋ฐ”8๊ฐ•์˜ 2๊ฐ•. Stream API
์ž๋ฐ”8๊ฐ•์˜ 2๊ฐ•. Stream API์ž๋ฐ”8๊ฐ•์˜ 2๊ฐ•. Stream API
์ž๋ฐ”8๊ฐ•์˜ 2๊ฐ•. Stream API
ย 
ํŠธ์œ„ํ„ฐ ๋ด‡ ๊ฐœ๋ฐœ ํ›„๊ธฐ
ํŠธ์œ„ํ„ฐ ๋ด‡ ๊ฐœ๋ฐœ ํ›„๊ธฐํŠธ์œ„ํ„ฐ ๋ด‡ ๊ฐœ๋ฐœ ํ›„๊ธฐ
ํŠธ์œ„ํ„ฐ ๋ด‡ ๊ฐœ๋ฐœ ํ›„๊ธฐ
ย 
Uncharted4 part1
Uncharted4 part1Uncharted4 part1
Uncharted4 part1
ย 
Platform Strategy & Cases
Platform Strategy & CasesPlatform Strategy & Cases
Platform Strategy & Cases
ย 
React ํŠœํ† ๋ฆฌ์–ผ 1์ฐจ์‹œ
React ํŠœํ† ๋ฆฌ์–ผ 1์ฐจ์‹œReact ํŠœํ† ๋ฆฌ์–ผ 1์ฐจ์‹œ
React ํŠœํ† ๋ฆฌ์–ผ 1์ฐจ์‹œ
ย 
๋คํ”„ ํŒŒ์ผ์„ ํ†ตํ•œ ์‚ฌํ›„ ๋””๋ฒ„๊น… ์‹ค์šฉ ํ…Œํฌ๋‹‰ NDC2012
๋คํ”„ ํŒŒ์ผ์„ ํ†ตํ•œ ์‚ฌํ›„ ๋””๋ฒ„๊น… ์‹ค์šฉ ํ…Œํฌ๋‹‰ NDC2012๋คํ”„ ํŒŒ์ผ์„ ํ†ตํ•œ ์‚ฌํ›„ ๋””๋ฒ„๊น… ์‹ค์šฉ ํ…Œํฌ๋‹‰ NDC2012
๋คํ”„ ํŒŒ์ผ์„ ํ†ตํ•œ ์‚ฌํ›„ ๋””๋ฒ„๊น… ์‹ค์šฉ ํ…Œํฌ๋‹‰ NDC2012
ย 
Google Firebase๋กœ ๋ ˆ๊ณ ๋ธ”๋Ÿญ ์กฐ๋ฆฝํ•˜๊ธฐ - IO Extended 2016
Google Firebase๋กœ ๋ ˆ๊ณ ๋ธ”๋Ÿญ ์กฐ๋ฆฝํ•˜๊ธฐ - IO Extended 2016Google Firebase๋กœ ๋ ˆ๊ณ ๋ธ”๋Ÿญ ์กฐ๋ฆฝํ•˜๊ธฐ - IO Extended 2016
Google Firebase๋กœ ๋ ˆ๊ณ ๋ธ”๋Ÿญ ์กฐ๋ฆฝํ•˜๊ธฐ - IO Extended 2016
ย 
๋ฌธ์ง€์˜์˜ ํ”„๋ฆฌ์  ํ…Œ์ด์…˜ ํด๋ฆฌ๋‹‰
๋ฌธ์ง€์˜์˜ ํ”„๋ฆฌ์  ํ…Œ์ด์…˜ ํด๋ฆฌ๋‹‰๋ฌธ์ง€์˜์˜ ํ”„๋ฆฌ์  ํ…Œ์ด์…˜ ํด๋ฆฌ๋‹‰
๋ฌธ์ง€์˜์˜ ํ”„๋ฆฌ์  ํ…Œ์ด์…˜ ํด๋ฆฌ๋‹‰
ย 

Similar to TenforFlow Internals

Direct x 12 ์ดˆ๊ธฐํ™”
Direct x 12 ์ดˆ๊ธฐํ™”Direct x 12 ์ดˆ๊ธฐํ™”
Direct x 12 ์ดˆ๊ธฐํ™”
QooJuice
ย 
[NDC2017 : ๋ฐ•์ค€์ฒ ] Python แ„€แ…ฆแ„‹แ…ตแ†ท แ„‰แ…ฅแ„‡แ…ฅ แ„‹แ…กแ†ซแ„‚แ…งแ†ผแ„’แ…กแ„‰แ…ตแ†ธแ„‚แ…ตแ„แ…ก - แ„†แ…ฉแ†ซแ„‰แ…ณแ„แ…ฅ แ„‰แ…ฒแ„‘แ…ฅแ„…แ…ตแ„€แ…ณ แ„€แ…ฆแ„‹แ…ตแ†ท แ„‰แ…ฅแ„‡แ…ฅ
[NDC2017 : ๋ฐ•์ค€์ฒ ] Python แ„€แ…ฆแ„‹แ…ตแ†ท แ„‰แ…ฅแ„‡แ…ฅ แ„‹แ…กแ†ซแ„‚แ…งแ†ผแ„’แ…กแ„‰แ…ตแ†ธแ„‚แ…ตแ„แ…ก - แ„†แ…ฉแ†ซแ„‰แ…ณแ„แ…ฅ แ„‰แ…ฒแ„‘แ…ฅแ„…แ…ตแ„€แ…ณ แ„€แ…ฆแ„‹แ…ตแ†ท แ„‰แ…ฅแ„‡แ…ฅ[NDC2017 : ๋ฐ•์ค€์ฒ ] Python แ„€แ…ฆแ„‹แ…ตแ†ท แ„‰แ…ฅแ„‡แ…ฅ แ„‹แ…กแ†ซแ„‚แ…งแ†ผแ„’แ…กแ„‰แ…ตแ†ธแ„‚แ…ตแ„แ…ก - แ„†แ…ฉแ†ซแ„‰แ…ณแ„แ…ฅ แ„‰แ…ฒแ„‘แ…ฅแ„…แ…ตแ„€แ…ณ แ„€แ…ฆแ„‹แ…ตแ†ท แ„‰แ…ฅแ„‡แ…ฅ
[NDC2017 : ๋ฐ•์ค€์ฒ ] Python แ„€แ…ฆแ„‹แ…ตแ†ท แ„‰แ…ฅแ„‡แ…ฅ แ„‹แ…กแ†ซแ„‚แ…งแ†ผแ„’แ…กแ„‰แ…ตแ†ธแ„‚แ…ตแ„แ…ก - แ„†แ…ฉแ†ซแ„‰แ…ณแ„แ…ฅ แ„‰แ…ฒแ„‘แ…ฅแ„…แ…ตแ„€แ…ณ แ„€แ…ฆแ„‹แ…ตแ†ท แ„‰แ…ฅแ„‡แ…ฅ
์ค€์ฒ  ๋ฐ•
ย 
[NDC2016] TERA ์„œ๋ฒ„์˜ Modern C++ ํ™œ์šฉ๊ธฐ
[NDC2016] TERA ์„œ๋ฒ„์˜ Modern C++ ํ™œ์šฉ๊ธฐ[NDC2016] TERA ์„œ๋ฒ„์˜ Modern C++ ํ™œ์šฉ๊ธฐ
[NDC2016] TERA ์„œ๋ฒ„์˜ Modern C++ ํ™œ์šฉ๊ธฐ
Sang Heon Lee
ย 
๋จธ์‹ ๋Ÿฌ๋‹ ๋ฐ ๋ฐ์ดํ„ฐ ๊ณผํ•™ ์—ฐ๊ตฌ์ž๋ฅผ ์œ„ํ•œ python ๊ธฐ๋ฐ˜ ์ปจํ…Œ์ด๋„ˆ ๋ถ„์‚ฐ์ฒ˜๋ฆฌ ํ”Œ๋žซํผ ์„ค๊ณ„ ๋ฐ ๊ฐœ๋ฐœ
๋จธ์‹ ๋Ÿฌ๋‹ ๋ฐ ๋ฐ์ดํ„ฐ ๊ณผํ•™ ์—ฐ๊ตฌ์ž๋ฅผ ์œ„ํ•œ python ๊ธฐ๋ฐ˜ ์ปจํ…Œ์ด๋„ˆ ๋ถ„์‚ฐ์ฒ˜๋ฆฌ ํ”Œ๋žซํผ ์„ค๊ณ„ ๋ฐ ๊ฐœ๋ฐœ๋จธ์‹ ๋Ÿฌ๋‹ ๋ฐ ๋ฐ์ดํ„ฐ ๊ณผํ•™ ์—ฐ๊ตฌ์ž๋ฅผ ์œ„ํ•œ python ๊ธฐ๋ฐ˜ ์ปจํ…Œ์ด๋„ˆ ๋ถ„์‚ฐ์ฒ˜๋ฆฌ ํ”Œ๋žซํผ ์„ค๊ณ„ ๋ฐ ๊ฐœ๋ฐœ
๋จธ์‹ ๋Ÿฌ๋‹ ๋ฐ ๋ฐ์ดํ„ฐ ๊ณผํ•™ ์—ฐ๊ตฌ์ž๋ฅผ ์œ„ํ•œ python ๊ธฐ๋ฐ˜ ์ปจํ…Œ์ด๋„ˆ ๋ถ„์‚ฐ์ฒ˜๋ฆฌ ํ”Œ๋žซํผ ์„ค๊ณ„ ๋ฐ ๊ฐœ๋ฐœ
Jeongkyu Shin
ย 
ํ…Œ๋ผ๋กœ ์‚ดํŽด๋ณธ MMORPG์˜ ๋…ผํƒ€๊ฒŸํŒ… ์‹œ์Šคํ…œ
ํ…Œ๋ผ๋กœ ์‚ดํŽด๋ณธ MMORPG์˜ ๋…ผํƒ€๊ฒŸํŒ… ์‹œ์Šคํ…œํ…Œ๋ผ๋กœ ์‚ดํŽด๋ณธ MMORPG์˜ ๋…ผํƒ€๊ฒŸํŒ… ์‹œ์Šคํ…œ
ํ…Œ๋ผ๋กœ ์‚ดํŽด๋ณธ MMORPG์˜ ๋…ผํƒ€๊ฒŸํŒ… ์‹œ์Šคํ…œ
QooJuice
ย 
GDB์™€ strace๋กœ Hang ๊ฑธ๋ฆฐ Python Process ์›๊ฒฉ ๋””๋ฒ„๊น…
GDB์™€ strace๋กœ Hang ๊ฑธ๋ฆฐ Python Process ์›๊ฒฉ ๋””๋ฒ„๊น…GDB์™€ strace๋กœ Hang ๊ฑธ๋ฆฐ Python Process ์›๊ฒฉ ๋””๋ฒ„๊น…
GDB์™€ strace๋กœ Hang ๊ฑธ๋ฆฐ Python Process ์›๊ฒฉ ๋””๋ฒ„๊น…
Youngmin Koo
ย 
๋™๊ธฐํ™”, ์Šค์ผ€์ค„๋ง
๋™๊ธฐํ™”, ์Šค์ผ€์ค„๋ง๋™๊ธฐํ™”, ์Šค์ผ€์ค„๋ง
๋™๊ธฐํ™”, ์Šค์ผ€์ค„๋ง
xxbdxx
ย 

Similar to TenforFlow Internals (20)

Direct x 12 ์ดˆ๊ธฐํ™”
Direct x 12 ์ดˆ๊ธฐํ™”Direct x 12 ์ดˆ๊ธฐํ™”
Direct x 12 ์ดˆ๊ธฐํ™”
ย 
Data-Oriented Design๊ณผ ์œ ๋‹ˆํ‹ฐ DOTS
Data-Oriented Design๊ณผ ์œ ๋‹ˆํ‹ฐ DOTSData-Oriented Design๊ณผ ์œ ๋‹ˆํ‹ฐ DOTS
Data-Oriented Design๊ณผ ์œ ๋‹ˆํ‹ฐ DOTS
ย 
Auto Scalable ํ•œ Deep Learning Production ์„ ์œ„ํ•œ AI Serving Infra ๊ตฌ์„ฑ ๋ฐ AI DevOps...
Auto Scalable ํ•œ Deep Learning Production ์„ ์œ„ํ•œ AI Serving Infra ๊ตฌ์„ฑ ๋ฐ AI DevOps...Auto Scalable ํ•œ Deep Learning Production ์„ ์œ„ํ•œ AI Serving Infra ๊ตฌ์„ฑ ๋ฐ AI DevOps...
Auto Scalable ํ•œ Deep Learning Production ์„ ์œ„ํ•œ AI Serving Infra ๊ตฌ์„ฑ ๋ฐ AI DevOps...
ย 
[NDC2017 : ๋ฐ•์ค€์ฒ ] Python แ„€แ…ฆแ„‹แ…ตแ†ท แ„‰แ…ฅแ„‡แ…ฅ แ„‹แ…กแ†ซแ„‚แ…งแ†ผแ„’แ…กแ„‰แ…ตแ†ธแ„‚แ…ตแ„แ…ก - แ„†แ…ฉแ†ซแ„‰แ…ณแ„แ…ฅ แ„‰แ…ฒแ„‘แ…ฅแ„…แ…ตแ„€แ…ณ แ„€แ…ฆแ„‹แ…ตแ†ท แ„‰แ…ฅแ„‡แ…ฅ
[NDC2017 : ๋ฐ•์ค€์ฒ ] Python แ„€แ…ฆแ„‹แ…ตแ†ท แ„‰แ…ฅแ„‡แ…ฅ แ„‹แ…กแ†ซแ„‚แ…งแ†ผแ„’แ…กแ„‰แ…ตแ†ธแ„‚แ…ตแ„แ…ก - แ„†แ…ฉแ†ซแ„‰แ…ณแ„แ…ฅ แ„‰แ…ฒแ„‘แ…ฅแ„…แ…ตแ„€แ…ณ แ„€แ…ฆแ„‹แ…ตแ†ท แ„‰แ…ฅแ„‡แ…ฅ[NDC2017 : ๋ฐ•์ค€์ฒ ] Python แ„€แ…ฆแ„‹แ…ตแ†ท แ„‰แ…ฅแ„‡แ…ฅ แ„‹แ…กแ†ซแ„‚แ…งแ†ผแ„’แ…กแ„‰แ…ตแ†ธแ„‚แ…ตแ„แ…ก - แ„†แ…ฉแ†ซแ„‰แ…ณแ„แ…ฅ แ„‰แ…ฒแ„‘แ…ฅแ„…แ…ตแ„€แ…ณ แ„€แ…ฆแ„‹แ…ตแ†ท แ„‰แ…ฅแ„‡แ…ฅ
[NDC2017 : ๋ฐ•์ค€์ฒ ] Python แ„€แ…ฆแ„‹แ…ตแ†ท แ„‰แ…ฅแ„‡แ…ฅ แ„‹แ…กแ†ซแ„‚แ…งแ†ผแ„’แ…กแ„‰แ…ตแ†ธแ„‚แ…ตแ„แ…ก - แ„†แ…ฉแ†ซแ„‰แ…ณแ„แ…ฅ แ„‰แ…ฒแ„‘แ…ฅแ„…แ…ตแ„€แ…ณ แ„€แ…ฆแ„‹แ…ตแ†ท แ„‰แ…ฅแ„‡แ…ฅ
ย 
C# Game Server
C# Game ServerC# Game Server
C# Game Server
ย 
Windows via C/C++ 06 ์Šค๋ ˆ๋“œ์˜ ๊ธฐ๋ณธ
Windows via C/C++ 06 ์Šค๋ ˆ๋“œ์˜ ๊ธฐ๋ณธWindows via C/C++ 06 ์Šค๋ ˆ๋“œ์˜ ๊ธฐ๋ณธ
Windows via C/C++ 06 ์Šค๋ ˆ๋“œ์˜ ๊ธฐ๋ณธ
ย 
[NDC2016] TERA ์„œ๋ฒ„์˜ Modern C++ ํ™œ์šฉ๊ธฐ
[NDC2016] TERA ์„œ๋ฒ„์˜ Modern C++ ํ™œ์šฉ๊ธฐ[NDC2016] TERA ์„œ๋ฒ„์˜ Modern C++ ํ™œ์šฉ๊ธฐ
[NDC2016] TERA ์„œ๋ฒ„์˜ Modern C++ ํ™œ์šฉ๊ธฐ
ย 
๋‚˜๋งŒ์˜ ์—”์ง„ ๊ฐœ๋ฐœํ•˜๊ธฐ
๋‚˜๋งŒ์˜ ์—”์ง„ ๊ฐœ๋ฐœํ•˜๊ธฐ๋‚˜๋งŒ์˜ ์—”์ง„ ๊ฐœ๋ฐœํ•˜๊ธฐ
๋‚˜๋งŒ์˜ ์—”์ง„ ๊ฐœ๋ฐœํ•˜๊ธฐ
ย 
๋จธ์‹ ๋Ÿฌ๋‹ ๋ฐ ๋ฐ์ดํ„ฐ ๊ณผํ•™ ์—ฐ๊ตฌ์ž๋ฅผ ์œ„ํ•œ python ๊ธฐ๋ฐ˜ ์ปจํ…Œ์ด๋„ˆ ๋ถ„์‚ฐ์ฒ˜๋ฆฌ ํ”Œ๋žซํผ ์„ค๊ณ„ ๋ฐ ๊ฐœ๋ฐœ
๋จธ์‹ ๋Ÿฌ๋‹ ๋ฐ ๋ฐ์ดํ„ฐ ๊ณผํ•™ ์—ฐ๊ตฌ์ž๋ฅผ ์œ„ํ•œ python ๊ธฐ๋ฐ˜ ์ปจํ…Œ์ด๋„ˆ ๋ถ„์‚ฐ์ฒ˜๋ฆฌ ํ”Œ๋žซํผ ์„ค๊ณ„ ๋ฐ ๊ฐœ๋ฐœ๋จธ์‹ ๋Ÿฌ๋‹ ๋ฐ ๋ฐ์ดํ„ฐ ๊ณผํ•™ ์—ฐ๊ตฌ์ž๋ฅผ ์œ„ํ•œ python ๊ธฐ๋ฐ˜ ์ปจํ…Œ์ด๋„ˆ ๋ถ„์‚ฐ์ฒ˜๋ฆฌ ํ”Œ๋žซํผ ์„ค๊ณ„ ๋ฐ ๊ฐœ๋ฐœ
๋จธ์‹ ๋Ÿฌ๋‹ ๋ฐ ๋ฐ์ดํ„ฐ ๊ณผํ•™ ์—ฐ๊ตฌ์ž๋ฅผ ์œ„ํ•œ python ๊ธฐ๋ฐ˜ ์ปจํ…Œ์ด๋„ˆ ๋ถ„์‚ฐ์ฒ˜๋ฆฌ ํ”Œ๋žซํผ ์„ค๊ณ„ ๋ฐ ๊ฐœ๋ฐœ
ย 
C# / .NET Framework๋กœ ๋ฏธ๋ž˜ ๋ฐฅ๊ทธ๋ฆ‡์„ ์ฑ™๊ฒจ๋ณด์ž (Basic)
C# / .NET Framework๋กœ ๋ฏธ๋ž˜ ๋ฐฅ๊ทธ๋ฆ‡์„ ์ฑ™๊ฒจ๋ณด์ž (Basic)C# / .NET Framework๋กœ ๋ฏธ๋ž˜ ๋ฐฅ๊ทธ๋ฆ‡์„ ์ฑ™๊ฒจ๋ณด์ž (Basic)
C# / .NET Framework๋กœ ๋ฏธ๋ž˜ ๋ฐฅ๊ทธ๋ฆ‡์„ ์ฑ™๊ฒจ๋ณด์ž (Basic)
ย 
spark database Service
spark database Servicespark database Service
spark database Service
ย 
ํ…Œ๋ผ๋กœ ์‚ดํŽด๋ณธ MMORPG์˜ ๋…ผํƒ€๊ฒŸํŒ… ์‹œ์Šคํ…œ
ํ…Œ๋ผ๋กœ ์‚ดํŽด๋ณธ MMORPG์˜ ๋…ผํƒ€๊ฒŸํŒ… ์‹œ์Šคํ…œํ…Œ๋ผ๋กœ ์‚ดํŽด๋ณธ MMORPG์˜ ๋…ผํƒ€๊ฒŸํŒ… ์‹œ์Šคํ…œ
ํ…Œ๋ผ๋กœ ์‚ดํŽด๋ณธ MMORPG์˜ ๋…ผํƒ€๊ฒŸํŒ… ์‹œ์Šคํ…œ
ย 
GDB์™€ strace๋กœ Hang ๊ฑธ๋ฆฐ Python Process ์›๊ฒฉ ๋””๋ฒ„๊น…
GDB์™€ strace๋กœ Hang ๊ฑธ๋ฆฐ Python Process ์›๊ฒฉ ๋””๋ฒ„๊น…GDB์™€ strace๋กœ Hang ๊ฑธ๋ฆฐ Python Process ์›๊ฒฉ ๋””๋ฒ„๊น…
GDB์™€ strace๋กœ Hang ๊ฑธ๋ฆฐ Python Process ์›๊ฒฉ ๋””๋ฒ„๊น…
ย 
RxJS๋กœ ๋น„๋™๊ธฐ์™€ ์นœํ•ด์ง€๊ธฐ
RxJS๋กœ ๋น„๋™๊ธฐ์™€ ์นœํ•ด์ง€๊ธฐRxJS๋กœ ๋น„๋™๊ธฐ์™€ ์นœํ•ด์ง€๊ธฐ
RxJS๋กœ ๋น„๋™๊ธฐ์™€ ์นœํ•ด์ง€๊ธฐ
ย 
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
ย 
Kubernetes
Kubernetes Kubernetes
Kubernetes
ย 
Lec 00, 01
Lec 00, 01Lec 00, 01
Lec 00, 01
ย 
2017 tensor flow dev summit
2017 tensor flow dev summit2017 tensor flow dev summit
2017 tensor flow dev summit
ย 
๋™๊ธฐํ™”, ์Šค์ผ€์ค„๋ง
๋™๊ธฐํ™”, ์Šค์ผ€์ค„๋ง๋™๊ธฐํ™”, ์Šค์ผ€์ค„๋ง
๋™๊ธฐํ™”, ์Šค์ผ€์ค„๋ง
ย 
Tips and experience of DX12 Engine development .
Tips and experience of DX12 Engine development .Tips and experience of DX12 Engine development .
Tips and experience of DX12 Engine development .
ย 

TenforFlow Internals

  • 1. Case Study TensorFlow Internals 2016. 3. Ver. Kiho Hong (swear013@gmail.com)
  • 2. Google TensorFlow โ€ข https://www.tensorflow.org โ€ข ๊ตฌ๊ธ€์ด ์˜คํ”ˆ ์†Œ์Šค๋กœ ๊ณต๊ฐœํ•œ ๋”ฅ๋Ÿฌ๋‹ ํ”Œ๋žซํผ โ€ข ๊ณ„์‚ฐ ๊ทธ๋ž˜ํ”„ ๋ชจ๋ธ โ€ข Multi-GPU, ๋ถ„์‚ฐ ํ™˜๊ฒฝ ์ง€์› โ€ข ๊ตฌ๊ธ€ ํด๋ผ์šฐ๋“œ API ์—์„œ๋„ ์ œ๊ณต๋จ (2016. 3. 24)
  • 3. TensorFlow LOC Module LOC ๋น„ ๊ณ  core 211,610 C++ ๋กœ ์ž‘์„ฑ๋œ TensorFlow ์ฝ”์–ด ์ฝ”๋“œ stream_executor 28,056 GPU CUDA ๊ด€๋ จ ์ฝ”๋“œ python 103,113 Python ํ™˜๊ฒฝ ์ง€์›์„ ์œ„ํ•œ ํŒŒ์ด์ฌ ์ฝ”๋“œ etc 68,368 contrib, models, tensorbard, tools, user_ops total 411,147 commit : 005386dc198220601293d4821e6de63246527b0c
  • 4. ๋‚ด ์šฉ โ€ข ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒƒ โ€ข ์ฝ”๋“œ ๋ ˆ๋ฒจ์—์„œ์˜ TensorFlow ๋™์ž‘ ๋ฐฉ์‹์„ ์‚ดํŽด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. โ€ข ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ โ€ข ๋”ฅ๋Ÿฌ๋‹ ์ด๋ก  ์ž์ฒด๋ฅผ ๋‹ค๋ฃจ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. โ€ข TensorFlow ์‚ฌ์šฉ๋ฒ•์„ ๋‹ค๋ฃจ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • 5. Simple Neural Network ๐ป = ๐‘…๐‘’๐ฟ๐‘ˆ(๐‘ค1 ๐‘ฅ) ๐‘ฆ = ๐‘ ๐‘œ๐‘“๐‘ก๐‘š๐‘Ž๐‘ฅ(๐‘ค2 ๐ป) โ‹‡ ๐‘ฆ = ๐‘ ๐‘œ๐‘“๐‘ก๐‘š๐‘Ž๐‘ฅ(๐‘ค2 ๐‘…๐‘’๐ฟ๐‘ˆ(๐‘ค1)) ๐‘…๐‘’๐ฟ๐‘ˆ ๐‘ง = max(0, ๐‘ง) ๐‘ ๐‘œ๐‘“๐‘ก๐‘š๐‘Ž๐‘ฅ ๐‘ง = exp(๐‘ง๐‘–) ๐‘— exp(๐‘ง๐‘—) input : MNIST x1 x2 x3 y1 y2 y3 w1 w2 ReLU Softmax
  • 6. ์ผ๋ฐ˜์ ์ธ ๊ตฌํ˜„ ์Šคํƒ€์ผ (with Torch) Net Li near Layer ReLU Layer Li near Layer Wei ght Wei ght Gr ad Gr ad scor e [ cr i t ] i nput updat er
  • 8. TensorFlow Language โ€ข Python โ€ข ๊ทธ๋ž˜ํ”„ ๊ตฌ์„ฑ์€ Python API ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ž‘์„ฑํ•  ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. โ€ข ์ด ์™ธ์—๋„ TensorFlow ๋ฅผ ์†์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. โ€ข C++ โ€ข ์„ฑ๋Šฅ์„ ์š”๊ตฌํ•˜๋Š” ์‹ค์ œ ์—ฐ์‚ฐ ์ž‘์—…์€ ๋ชจ๋‘ C++ ํ™˜๊ฒฝ์œผ๋กœ ์ž‘์„ฑ๋ฉ๋‹ˆ๋‹ค.
  • 9. Python API ๋กœ ํ•˜๋Š” ์ผ โ€ข ๊ทธ๋ž˜ํ”„๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. โ€ข Session ์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • 10. ๊ทธ๋ž˜ํ”„ ์ž‘์„ฑ โ€ข Python ๊ตฌ๋ฌธ์„ ์ด์šฉํ•˜์—ฌ ์—ฐ์‚ฐ์— ์‚ฌ์šฉํ•  ๊ทธ๋ž˜ํ”„๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. โ€ข ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๋Š” ์ฆ‰์‹œ ๋‚ด๋ถ€ ์—ฐ์‚ฐ์ด ์ˆ˜ํ–‰๋˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. โ€ข ์˜ค๋กœ์ง€ ์—ฐ์‚ฐ ๊ทธ๋ž˜ํ”„๊ฐ€ ์ž‘์„ฑ๋˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์น˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  • 11. Session์˜ ์—ญํ•  โ€ข Session์€ TensorFlow ๊ทธ๋ž˜ํ”„ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ์ž…๋‹ˆ๋‹ค. โ€ข Graph๋ฅผ ์ƒ์„ฑํ•˜๊ณ  Operation์„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ Tensor๋ฅผ ํ‰๊ฐ€(eval)ํ•ฉ๋‹ˆ๋‹ค. (C++ Session) โ€ข tf.Session ์€ ๋ฐ˜๋“œ์‹œ ํ•œ ๊ฐœ์˜ tf.Graph ๊ฐ์ฒด๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. โ€ข ํŠน์ • tf.Graph ๋ฅผ ๋ช…์‹œํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ default graph ๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • 13. Google Protocol buffer โ€ข ์•ž์„œ ๋ณธ ๋‚ด์šฉ์—์„œ๋Š” tf.Graph ์ •๋ณด๋ฅผ C++๋กœ ๋„˜๊ธฐ๋Š” ๋ถ€๋ถ„์ด ์—†์Šต๋‹ˆ๋‹ค. โ€ข tf.Graph ๋˜ํ•œ Python ๊ฐ์ฒด์ด๋ฏ€๋กœ ๋ฐ”๋กœ C++ ์ „๋‹ฌ์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. โ€ข tf.Graph ๋ฅผ Protocol Buffer ํƒ€์ž…์˜ ์ž๋ฃŒํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•œ ๋’ค ์ „๋‹ฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. โ€ข ๊ทธ๋ž˜ํ”„ ๊ตฌ์„ฑ ์ž์ฒด๋ฅผ ๊ธฐ์ˆ ํ•œ ์ •๋ณด๊ฐ€ Serialize๋œ ๋ฐ์ดํ„ฐ๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹œ๋ฉด ์‰ฝ์Šต๋‹ˆ๋‹ค.
  • 14. Overview (in C++) Session ๊ทธ๋ž˜ํ”„ ์—ฐ์‚ฐ ์ž‘์—… ๊ด€๋ฆฌ Device ๋””๋ฐ”์ด์Šค ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๊ฐ์ฒด Graph ์—ฐ์‚ฐ(op)๊ณผ ๊ฐ’(tensor)์„ ๊ทธ๋ž˜ํ”„ ๊ตฌ์กฐ๋กœ ์ €์žฅ Executor ๊ทธ๋ž˜ํ”„ ์—ฐ์‚ฐ์„ ์‹ค์ œ๋กœ ์ˆ˜ํ–‰ OpKernel ๊ทธ๋ž˜ํ”„ ๋…ธ๋“œ์— ์ง€์ •๋œ ์—ฐ์‚ฐ (Functor)
  • 15. Session โ€ข ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•œ๊ทธ๋ž˜ํ”„ ์—ฐ์‚ฐ์„ ์‹ค์ œ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. โ€ข ํ˜„์žฌ 2๊ฐ€์ง€ Session์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. โ€ข ๋กœ์ปฌ ํ™˜๊ฒฝ : DirectSession โ€ข ๋ถ„์‚ฐ ํ™˜๊ฒฝ : GrpcSession โ€ข ๋จผ์ € ๋กœ์ปฌ ํ™˜๊ฒฝ๋ถ€ํ„ฐ ์‚ดํŽด๋ด…์‹œ๋‹ค. Di r ect Sessi on Sessi on Gr pcSessi on Di r ect Sessi on Fact or y Gr pcSessi onFact or y Fact or y new( ) new( ) Sessi onFact or y
  • 17. Session : ๊ทธ๋ž˜ํ”„ ์ƒ์„ฑ โ€ข Session::Run() ํ˜ธ์ถœ์‹œ ๊ฐ€์žฅ ๋จผ์ € GraphDef ๋ฅผ Graph ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • 18. Rewrite Graph sess.Run([โ€œreluโ€], {image:xs}) fetch feed ๊ทธ๋Ÿฐ๋ฐ Run() ์‹คํ–‰์‹œ๋งˆ๋‹ค ์ด๋Ÿฐ ๋งŽ์€ ์ž‘์—…์„ ๋ฐ˜๋ณตํ•œ๋‹ค๊ณ ์š” ??? i mage hddn w1 ReLU w2 scor e pr ob l oss l abel f eed f et ch i mage hddn w1 ReLU w2 scor e pr ob l oss l abel
  • 19. Rewrite Graph (contโ€™d) Sessi on โ€œ xs, ys- >l oss: st ep/ โ€ โ€œ i ni t โ€ gr aphexecut or gr aphexecut or gr aphexecut or
  • 20. Node์— device ์„ค์ •ํ•˜๊ธฐ โ€ข ๊ทธ๋Ÿฐ๋ฐ TensorFlow ๋Š” GPU ํ™˜๊ฒฝ์—์„œ ๋Œ๋ ค๋ณผ ์ˆ˜ ์žˆ๋‚˜์š”? โ€ข ๋งŽ์€ ๋”ฅ๋Ÿฌ๋‹ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ Process ๋‹จ์œ„ CPU/GPU ๋ชจ๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. โ€ข ํ•˜์ง€๋งŒ TensorFlow ์—์„œ๋Š” Node ๋‹จ์œ„๋กœ Device๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. โ€ข Node ๋‹จ์œ„ ์‹คํ–‰์„ ์œ„ํ•ด Graph ๊ฐ์ฒด๋Š” ๋ถ„ํ• ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • 21. Node์— device ์„ค์ •ํ•˜๊ธฐ (Contโ€™d) โ€ข ์‚ฌ์šฉ์ž๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ์ฝ”๋“œ ์ƒ์—์„œ device๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. โ€ข ์ด๋Ÿฐ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๋‹น Node์— device ์ •๋ณด๊ฐ€ ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค. โ€ข Node์— device ์ •๋ณด๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ TensorFlow๊ฐ€ ์•Œ์•„์„œ device๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
  • 22. Device ํ• ๋‹น ์ œ์•ฝ ์‚ฌํ•ญ โ€ข Node์— device๋ฅผ ์ง€์ •ํ•  ๋•Œ์˜ ์ œ์•ฝ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. 1. ์‚ฌ์šฉ์ž๊ฐ€ ์ฝ”๋“œ ์ƒ์— ๋ช…์‹œ์ ์œผ๋กœ device ๋ฅผ ๊ธฐ์ˆ ํ•œ ๊ฒฝ์šฐ โ€ข ๋ฐ˜๋“œ์‹œ ํ•ด๋‹น device ๋กœ ๋…ธ๋“œ๋ฅผ ํ• ๋‹นํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. 2. ์–ด๋–ค ๋…ธ๋“œ๊ฐ€ ๋‹ค๋ฅธ ๋…ธ๋“œ์˜ ์ฐธ์กฐ ํƒ€์ž…์œผ๋กœ ์ƒ์„ฑ๋œ ๊ฒฝ์šฐ โ€ข ์ด ๊ฒฝ์šฐ ๋‘ ๋…ธ๋“œ๋Š” ๋™์ผํ•œ device ๋กœ ํ• ๋‹นํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. 3. A์™€ B๋…ธ๋“œ๊ฐ€ ์ฃผ์–ด์ง€๊ณ  B๋…ธ๋“œ์— @A์™€ ๊ฐ™์€ colocation์ด ์‚ฌ์šฉ๋œ ๊ฒฝ์šฐ โ€ข ์ด ๊ฒฝ์šฐ๋„ A์™€ B ๋…ธ๋“œ๋Š” ๋™์ผํ•œ device ๋กœ ํ• ๋‹น๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • 23. SimplePlacer Di r ect Sessi on Gr aphSi mpl ePl acer Devi ceSet devi ce_set devi ces Devi ce devi ces Devi ceMgr LookupDevi ce( ) Li st Devi ces( ) devi ces devi ce_mgr
  • 24. SimplePlacer (Contโ€™d) โ€ข ์ด๋ฆ„๋Œ€๋กœ ๊ฐ„๋‹จํ•œ ๋ฐฉ์‹์œผ๋กœ ์ž‘์—…ํ•ฉ๋‹ˆ๋‹ค. โ€ข TensorFow White Paper ์— ๋”ฐ๋ฅด๋ฉด, โ€ข ๋…ธ๋“œ ํ• ๋‹น์‹œ Cost ๊ธฐ๋ฐ˜ ํ• ๋‹น์„ ์ˆ˜ํ–‰ํ•œ๋‹ค๊ณ  ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. โ€ข ํ•˜์ง€๋งŒ ํ˜„์‹ค์€ ? โ€ข ์ผ๋‹จ device๋ฅผ ํ• ๋‹นํ•  ๋…ธ๋“œ๋Š” ๋ถ€๋ชจ ๋…ธ๋“œ์˜ device ์ •๋ณด๋ฅผ ์–ป์–ด ์ž์‹ ์˜ device ์ •๋ณด๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. โ€ข ์ด ๋•Œ ๋ถ€๋ชจ ๋…ธ๋“œ์˜ device๊ฐ€ ์ง€์ •๋˜์–ด ์žˆ์ง€ ์•Š์€ ๊ฒฝ์šฐ, ์‚ฌ์ „ ๊ณ ๋ ค๋œ ์ˆœ์„œ์— ๋”ฐ๋ผ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. โ€ข ๋”ฐ๋ผ์„œ GPU ์žฅ๋น„๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๋Š” ์žฅ๋น„์˜ ๊ฒฝ์šฐ ๋Œ€๊ฐœ GPU:0 ์ด ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. โ€ข ์ฆ‰, ํ• ๋‹น ์ •์ฑ…์€ ํ˜•ํŽธ์—†๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. (์ดํ›„์— ๋” ์ข‹์€ Placer ๊ฐ€ ๋‚˜์˜ฌ๊ฑฐ๋ผ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.) GPU: 0 GPU: 1 CPU: 0 i mage hddn w1 ReLU w2 scor e pr ob l oss l abel
  • 25. Graph partitioning โ€ข Device ๋‹จ์œ„๋กœ ํŒŒํ‹ฐ์…”๋‹์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. โ€ข ๊ทธ๋ž˜ํ”„ ๋ถ„ํ• ์„ ์™„๋ฃŒํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ถ”๊ฐ€ ์ž‘์—…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. โ€ข ์ ‘์ ์ด ๋˜๋Š” ๋…ธ๋“œ์— recv, send ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๊ทธ๋ž˜ํ”„ ๋ถ„ํ• ์„ ์™„์„ฑํ•ฉ๋‹ˆ๋‹ค. โ€ข ์ด ๋•Œ ์„œ๋ธŒ๊ทธ๋ž˜ํ”„์—์„œ recv๊ฐ€ ์—ฌ๋Ÿฌ ๋…ธ๋“œ์—์„œ ์‚ฌ์šฉ๋œ๋‹ค๋ฉด ํ•˜๋‚˜๋กœ ์น˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. GPU: 0 GPU: 1 CPU: 0 i mage hddn w1 ReLU w2 scor e pr ob l oss l abel send r ecv send r ecv send r ecv
  • 26. Executor โ€ข ๋ถ„ํ• ๋œ ๊ทธ๋ž˜ํ”„๋“ค์„ ์‹คํ–‰ํ•˜๋Š” ์ฃผ์ฒด๋Š” Executor ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.
  • 27. Executor โ€ข Executor๋Š” ์„œ๋ธŒ-๊ทธ๋ž˜ํ”„ ํ•˜๋‚˜๋งˆ๋‹ค ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. โ€ข Executor๋Š” ๊ฐœ๋ณ„์ ์ธ Thread ์ž‘์—…์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. โ€ข Executor๋Š” ์„œ๋ธŒ-๊ทธ๋ž˜ํ”„์˜ ์‹œ์ž‘ ๋…ธ๋“œ๋ฅผ ์ฐพ์•„ ๊ทธ๋ž˜ํ”„ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. โ€ข ๋ชจ๋“  Executor์˜ ์ž‘์—…์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ExecutorBarrier๊ฐ€ ๋ง‰์•„์ค๋‹ˆ๋‹ค. โ€ข Executor๊ฐ€ ํ•˜๋Š” ์ผ์€ ์ข€ ๋” ๋ณต์žกํ•˜์ง€๋งŒ ์ด ์ •๋„๋งŒ ์•Œ๊ณ  ๋„˜์–ด๊ฐ‘์‹œ๋‹ค.
  • 28. ๋ž‘๋ฐ๋ทฐ (Rendezvous) โ€ข ์„œ๋ธŒ-๊ทธ๋ž˜ํ”„ ์‚ฌ์ด์˜ send์™€ recv ๋…ธ๋“œ ๋ฐ์ดํ„ฐ๋ฅผ ๋™๊ธฐํ™”ํ•˜๋Š” ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. โ€ข ๊ฐ Executor ๋“ค์€ ์ž์‹ ์˜ ์„œ๋ธŒ ๊ทธ๋ž˜ํ”„ ๋‚ด์˜ send์™€ recv ๊ฐ์ฒด๋ฅผ Rendezvous ๊ฐ์ฒด์— ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค. โ€ข Send() โ€ข send ๋…ธ๋“œ์— ์†ํ•œ Tensor ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฅธ ๊ทธ๋ž˜ํ”„๋กœ ๋ณด๋‚ด์ค„ ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. โ€ข Send() ํ˜ธ์ถœ์‹œ ์ด๋ฏธ ๋‹ค๋ฅธ Executor ๊ฐ€ ํ•ด๋‹น ๋…ธ๋“œ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์š”๊ตฌํ•œ ์‚ฌ์‹ค์ด ์žˆ๋‹ค๋ฉด ๋ฐ”๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. โ€ข RecvAsync() โ€ข recv ๋…ธ๋“œ์— ์†ํ•œ Tensor ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฅธ ๊ทธ๋ž˜ํ”„๋กœ๋ถ€ํ„ฐ ์–ป์–ด์˜ฌ ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. โ€ข RecvAsync() ํ˜ธ์ถœ์‹œ ์ด๋ฏธ ๋‹ค๋ฅธ Executor ๊ฐ€ ํ•ด๋‹น ๋…ธ๋“œ๋ฅผ ๋“ฑ๋กํ•ด ๋†“์•˜๋‹ค๋ฉด ๋ฐ”๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์–ป์–ด์˜ต๋‹ˆ๋‹ค. I nt r aPr ocess Rendezvous Send( ) RecvAsync( ) l ocal Local RendezvousI mpl Rendezvous Send( ) RecvAsync( )
  • 30. Device ์‚ฌ์ด์˜ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ โ€ข ์•ž์„œ ์‚ดํŽด๋ณด์•˜์ง€๋งŒ ๊ฐ๊ฐ์˜ ๊ทธ๋ž˜ํ”„๋Š” device ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„์–ด์ง‘๋‹ˆ๋‹ค. โ€ข ๊ทธ๋ž˜ํ”„๊ฐ€ ์„œ๋กœ ์ฃผ๊ณ  ๋ฐ›๋Š” ๋ฐ์ดํ„ฐ๋Š” send์™€ recv ๋…ธ๋“œ์— ์†ํ•œ Tensor ํƒ€์ž…์˜ ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. โ€ข ์—ฌ๊ธฐ์„œ Tensor๋ž€ ์ฐจ์›(dimension) ์ •๋ณด๋ฅผ ๊ฐ€์ง„ ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ ๋ธ”๋ก์ž…๋‹ˆ๋‹ค. โ€ข ์„œ๋กœ ๋‹ค๋ฅธ device ์‚ฌ์ด์˜ ๋ฐ์ดํ„ฐ ๋ณต์‚ฌ๋Š” ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ์š”? โ€ข Device ๋ผ๋Š” ๊ฐ์ฒด์—๋Š” ์ž์‹ ์˜ Device ํƒ€์ž…๊ณผ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์šฉ Allocator๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. โ€ข InterProcessRendezvous ๊ฐ์ฒด์—์„œ Device ํƒ€์ž…์„ ์กฐํšŒํ•˜์—ฌ ์ ์ ˆํ•œ Copy ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด ์ค๋‹ˆ๋‹ค. CPU GPUCPU CPU GPUGPU
  • 31. ์„œ๋ธŒ ๊ทธ๋ž˜ํ”„์˜ ์‹คํ–‰ โ€ข Executor๊ฐ€ Graph๋ฅผ ์‹คํ–‰ํ•œ๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ ๋„๋Œ€์ฒด ๋ญ˜ ์‹คํ–‰์‹œํ‚ค๋Š” ๊ฑธ๊นŒ์š”? โ€ข ์‚ฌ์‹ค ํ•˜๋‚˜์˜ ๋…ธ๋“œ๋Š” ํ•˜๋‚˜์˜ Operation์„ ์˜๋ฏธํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. โ€ข ๊ทธ๋ฆฌ๊ณ  ์ด Operation์—๋Š” ์ ์ ˆํ•œ ์—ฐ์‚ฐ๋“ค์ด ์ •์˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. โ€ข ์ž…์ถœ๋ ฅ ๋ฐ์ดํ„ฐ๋Š” Operation์— ์„ค์ •๋œ Tensor ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. โ€ข ๋™์ผํ•œ ์—ฐ์‚ฐ์ด๋ผ๋„ Device ์— ๋”ฐ๋ผ ๊ตฌํ˜„์ด ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. โ€ข ์˜ˆ๋กœ CPU ์™€ GPU ํ™˜๊ฒฝ์—์„œ add ์—ฐ์‚ฐ์˜ ๊ตฌํ˜„์€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
  • 32. Operation โ€ข ๋…ธ๋“œ์— ์„ค์ •๋œ ์‹ค์ œ ์‹คํ–‰ํ•ด์•ผ ํ•  ์ž‘์—…์ž…๋‹ˆ๋‹ค. โ€ข ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ Operation ์„ ์ถ”๊ฐ€ํ• ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. (TensorFlow Tutorial ์ฐธ๊ณ ) โ€ข ์ƒํ™ฉ์— ๋”ฐ๋ผ Device ๋ณ„ Operation์„ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š”๊ฒŒ ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค. โ€ข ๊ทธ๋ฆฌ๊ณ  ํŠน์ •ํ•œ Device ์—์„œ๋งŒ ๋™์ž‘ํ•˜๋Š” Operation ์„ Kernel ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. โ€ข Op๋Š” Math ์—ฐ์‚ฐ์„ ์œ„ํ•œ Op์™€ Control Flow๋ฅผ ์œ„ํ•œ Op๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์‚ฌ์‹ค์€ ๋” ์žˆ์–ด์š”.) โ€ข ์ด ์ค‘ Math์—ฐ์‚ฐ์„ ์œ„ํ•œ ๊ธฐ๋Šฅ์€ TensorFlow๋„ ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค. โ€ข CPU : ์„ ํ˜•๋Œ€์ˆ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ Eigen์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. โ€ข GPU : Cuda ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (Cublas/CuDNN/CuFFT ํ˜น์€ Cuda Kernel)๋‚˜ Eigen ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • 33. Operation example ์ง„์งœ ๋Œ์•„๊ฐ€๋Š” ์ฝ”๋“œ๋Š” ์•„๋‹™๋‹ˆ๋‹ค.
  • 34. TensorFlow ๋ถ„์‚ฐ ๋ฒ„์ „ โ€ข 2016๋…„ 3์›”์— TensorFlow ๋ถ„์‚ฐ ๋ฒ„์ „ ์ดˆ์•ˆ์ด ๊ณต๊ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. โ€ข gRPC๋ฅผ ์ด์šฉํ•œ ๋ถ„์‚ฐ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค. โ€ข ์•„์ง ์ดˆ๊ธฐ ๋ฒ„์ „์ด๋ผ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์•„์ฃผ ๋งŽ์Šต๋‹ˆ๋‹ค. โ€ข ์—ฌ๊ธฐ์„œ๋Š” ์•„์ฃผ ๊ฐœ๋žต์ ์ธ ๊ฐœ๋…๋งŒ์„ ์‚ดํŽด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
  • 35. gRPC โ€ข ๊ตฌ๊ธ€์ด ๋งŒ๋“  RPC ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. (http://www.grpc.io/) โ€ข ๊ธฐ์กด RPC ๋ฐฉ์‹๊ณผ๋Š” ์•ฝ๊ฐ„ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. โ€ข ์ž…์ถœ๋ ฅ ์ž๋ฃŒํ˜•์œผ๋กœ protocol buffer ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. โ€ข ํ•จ์ˆ˜ ์„ ์–ธ์„ protocol buffer message ๋กœ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. โ€ข ์‹ค์ œ ๋„คํŠธ์›Œํฌ ํ”„๋กœํ† ์ฝœ์€ SPDY (HTTP2.0)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • 37. GrpcServer โ€ข GrpcServer๋Š” ๊ทธ๋ž˜ํ”„ ์—ฐ์‚ฐ Process ์‹œ์ž‘ ์ „์— ์ด๋ฏธ ๊ฐ ์žฅ๋น„์—์„œ ๊ตฌ๋™๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. โ€ข Binary ๋ช…๋ น์–ด๋กœ ์‹คํ–‰ํ• ์ˆ˜๋„ ์žˆ๊ณ , python ์ฝ”๋“œ๋กœ๋„ ๊ตฌ๋™ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. (Binary ๋Š” ์ˆจ๊ฒจ์ ธ ์žˆ์–ด์š”.) Mast er ser vi ce Mast er St ubRPC Wor ker St ub RPC Wor ker ser vi ce Gr pcSer ver Local Devi ce I nf o
  • 38. Distributed Computation Graph โ€ข Client : Master๋กœ GraphDef ๊ฐ์ฒด๋ฅผ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. โ€ข Master : Graph ๊ฐ์ฒด๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ๋ถ„ํ• ํ•˜์—ฌ Worker์—๊ฒŒ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. โ€ข Worker : ๋กœ์ปฌ ๋จธ์‹ ์—์„œ ์ฒ˜๋ฆฌํ•œ ๊ฒƒ๊ณผ ๋™์ผํ•˜๊ฒŒ Graph ๋ฅผ ์—ฐ์‚ฐํ•ฉ๋‹ˆ๋‹ค. Cl i ent Gr pcRemot eMast er st ub Mast er 0 Gr pcMast er Ser vi ce st ubRPC Gr aphDef Mast er Sessi on gr pc_sessi on Wor ker 0 Gr pcRemot eWor ker st ub Gr pcWor ker Ser vi ce st ub Wor ker 1 Gr pcWor ker Ser vi ce st ub RPC RPC Gr aphDef Gr aphDef Gr aphDef
  • 39. Cluster example ember Gr pcSer ver ember 0: : 2222 / j ob: ember / t ask0 pol y Gr pcSer ver pol y0: 2222 / j ob: pol y/ t ask0 ember cpu: 0 gpu: 0 gt x980 gpu: 1 gt x980 pol y cpu: 0 gpu: 0 t i t an x gpu: 1 t i t an x
  • 41. ๊ทธ๋ž˜ํ”„ ์ „๋‹ฌ [๋งˆ์Šคํ„ฐ ์„œ๋ฒ„] 1. SimplePlacer๋กœ ๊ฐ ๋…ธ๋“œ์— ๋””๋ฐ”์ด์Šค ํ• ๋‹น 2. Task ์„œ๋ฒ„ ๋‹จ์œ„ ํŒŒํ‹ฐ์…”๋‹ (recv, send ์—†์Œ) 3. ์ƒ์„ฑ๋œ GraphDef ๋ฅผ ๊ฐ task ์„œ๋ฒ„์— ์ „๋‹ฌ [์›Œ์ปค ์„œ๋ฒ„] 1. Task ์„œ๋ฒ„์—์„œ๋Š” ๊ฐ ๊ทธ๋ž˜ํ”„ ๊ฐœ๋ณ„ ์‹คํ–‰ 2. ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜
  • 43. ์ด๊ฒƒ๋งŒ์€ ๊ธฐ์–ตํ•˜์ž. โ€ข TensorFlow ๋Š” Computation Graph ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜ํ”„๋ฅผ ๋งŒ๋“ค๊ณ , ์ •์ œํ•œ๋’ค, ๋””๋ฐ”์ด์Šค์— ํ• ๋‹นํ•˜๊ณ , ๋‚˜๋ˆ„์–ด ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • 44. ๋‹ค์Œ์— ๋˜ ๋งŒ๋‚˜์š” : Replicated Training Synchronous data parallelism Asynchronous data parallelism Shared variables between different graphs