Я пытаюсь делать прогнозы с помощью модели TensorFlow Keras асинхронно. Модель работает нормально без многопроцессорности, однако, как только она вызывается с помощью mp.Process, она никогда не запускается.
import multiprocessing as mp
import tensorflow as tf
import numpy as np
def predict(data):
a = tf.keras.Sequential([tf.keras.layers.Dense(4, input_shape=(16,))])
return a.predict(data)
fake_data = np.zeros((100, 16))
# Works
for i in range(4):
print(predict(fake_data).shape)
# Never finishes running
processes = []
for i in range(4):
p = mp.Process(target=predict, args=(fake_data,))
p.start()
processes.append(p)
for p in processes:
p.join()
Почему это происходит? Есть ли обходные пути / я что-то делаю не так? Я пробовал обернуть внутреннюю часть predict
with tf.device('/cpu:0')
, но проблема не устранена.
EDIT: проблема, похоже, возникает независимо от TF 1 или 2