рд╕рдВрд╕реНрдХрд░рдг: 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)
рдмрдирд╛рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?
@рдорд╛рд╡реЗрдирд▓рд┐рди
tf.Session
рдХрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╣реИ
tf.Session.__init__(target='', graph=None, config=None)
рдпрд╣рд╛рдВ target
рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрди рдЗрдВрдЬрди рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЕрд░реНрдерд╛рддреН, рдХрд┐рд╕реА рдХреЛ рдХрд╛рд░реНрдп рд╕рддреНрд░ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рд╡рд┐рддрд░рд┐рдд рдореЛрдб рдореЗрдВ рдЪрд▓рд╛рдирд╛ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ tf.Session
рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдЕрднреА рднреА fork()
-рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИред
рджреБрдЦрдж рдЦрдмрд░ред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
@mrry рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐
fork
рд╕реБрд░рдХреНрд╖рд┐рддtf.Session
рд╕рд╛рдеtf.Session(args)
рдмрдирд╛рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?