Tensorflow: Sesi macet setelah garpu

Dibuat pada 21 Mei 2016  ·  3Komentar  ·  Sumber: tensorflow/tensorflow

Versi: nightly prebuilt untuk Python2 w/ GPU (baru saja)

Saya mengharapkan kode berikut untuk mencetak "10.0" 3 kali, tetapi session.run macet di semua proses bercabang.

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()

Menghapus grafik/sesi dalam proses master akan menyelesaikan masalah. Jadi sepertinya begitu ada sesi, kita tidak bisa menggunakan fork?
Masalahnya ada dengan dan tanpa GPU.

CATATAN: kode ini tidak berakhir secara normal. Anda mungkin perlu mematikan proses bercabang secara manual setelah master keluar.

Komentar yang paling membantu

@mrry Apakah itu berarti ada cara untuk membuat fork safe tf.Session dengan tf.Session(args) ?

Semua 3 komentar

Sesi dalam proses (yaitu tf.Session() tanpa argumen) tidak dirancang untuk menjadi fork() -aman. Jika Anda ingin berbagi satu set perangkat di antara beberapa proses, buat tf.train.Server dalam satu proses, dan buat sesi yang terhubung ke server itu (dengan tf.Session("grpc://...") ) di proses lain.

@mrry Apakah itu berarti ada cara untuk membuat fork safe tf.Session dengan tf.Session(args) ?

@mavenlin
Prototipe tf.Session adalah

tf.Session.__init__(target='', graph=None, config=None)

Di sini target mengacu pada mesin eksekusi yang akan dihubungkan. Artinya, seseorang harus menjalankan sesi kerja di proses lain, dalam mode terdistribusi, dan tf.Session dengan argumen masih tidak fork() -aman.

Berita buruk.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

anilsathyan7 picture anilsathyan7  ·  102Komentar

keon picture keon  ·  246Komentar

ravwojdyla picture ravwojdyla  ·  112Komentar

amitport picture amitport  ·  139Komentar

ymfa picture ymfa  ·  145Komentar