λ²μ : Python2 w/ GPUμ©μΌλ‘ 미리 λΉλλ¨(μ§κΈ λ§)
λ€μ μ½λκ° "10.0"μ 3λ² μΈμν κ²μΌλ‘ μμνμ§λ§ session.runμ΄ λͺ¨λ λΆκΈ°λ νλ‘μΈμ€μμ λ©μ·μ΅λλ€.
import tensorflow as tf
import multiprocessing as mp
import os
class Worker(mp.Process):
def __init__(self, gid):
self.gid = gid
super(Worker, self).__init__()
def run(self):
G = tf.Graph()
with G.as_default():
x = tf.placeholder(tf.float32, shape=[])
y = x * 2
sess = tf.Session()
print sess.run(y, feed_dict={x: 5})
G = tf.Graph()
with G.as_default():
sess = tf.Session()
with sess.as_default():
x = tf.placeholder(tf.float32, shape=[])
y = x * 2
print sess.run(y, feed_dict={x: 5})
procs = [Worker(k) for k in range(2)]
for p in procs: p.start()
for p in procs: p.join()
λ§μ€ν° νλ‘μΈμ€μμ κ·Έλν/μΈμ
μ μ κ±°νλ©΄ λ¬Έμ κ° ν΄κ²°λ©λλ€. κ·Έλμ μΈμ
μ΄ μμΌλ©΄ ν¬ν¬λ₯Ό μ¬μ©ν μ μλ κ² κ°μ΅λλ€.
λ¬Έμ λ GPU μ 무μ κ΄κ³μμ΄ μ‘΄μ¬ν©λλ€.
μ°Έκ³ : μ΄ μ½λλ μ μμ μΌλ‘ μ’ λ£λμ§ μμ΅λλ€. λ§μ€ν°κ° μ’ λ£λ ν λΆκΈ°λ νλ‘μΈμ€λ₯Ό μλμΌλ‘ μ’ λ£ν΄μΌ ν μλ μμ΅λλ€.
μ§ν μ€μΈ μΈμ
(μ¦, μΈμκ° μλ tf.Session()
)μ fork()
-μμ νλλ‘ μ€κ³λμ§ μμμ΅λλ€. μ¬λ¬ νλ‘μΈμ€ κ°μ μ₯μΉ μ§ν©μ 곡μ νλ €λ©΄ ν νλ‘μΈμ€μμ tf.train.Server
λ₯Ό λ§λ€κ³ λ€λ₯Έ νλ‘μΈμ€μμ ν΄λΉ μλ²μ μ°κ²°νλ μΈμ
( tf.Session("grpc://...")
)μ λ§λλλ€.
@mrryν©λκΉ κ±°κΈ° μλ―Έ μμ±νλ λ°©λ²μ
λλ€ fork
μμ tf.Session
μ tf.Session(args)
?
@mavenlin
tf.Session
μ νλ‘ν νμ
μ
tf.Session.__init__(target='', graph=None, config=None)
μ¬κΈ°μ target
λ μ°κ²°ν μ€ν μμ§μ λνλ
λλ€. μ¦, λΆμ° λͺ¨λμ λ€λ₯Έ νλ‘μΈμ€μμ μμ
μΈμ
μ μ€νν΄μΌ νλ©° μΈμκ° μλ tf.Session
λ μ¬μ ν fork()
-safeνμ§ μμ΅λλ€.
μ¬ν μμ.
κ°μ₯ μ μ©ν λκΈ
@mrryν©λκΉ κ±°κΈ° μλ―Έ μμ±νλ λ°©λ²μ λλ€
fork
μμ tf.Session
μtf.Session(args)
?