Моя модель написана и обучена в Керасе. Я пытаюсь использовать это для вывода в производстве. Я получаю SQS-сообщения «задачи», содержащие кортеж (path_in, path_out)
.
Я, очевидно, могу использовать:
BATCH_SIZE = 10
batch_messages = []
while True:
while len(batch_messages) < BATCH_SIZE:
msg = sqs.read_messsage()
batch_messages.apend(msg)
assert len(batch_messages) == BATCH_SIZE
batch = np.array([read_image(msg.path_in) for msg in batch_messages])
output_batch = model.predict(batch)
for i in range(BATCH_SIZE):
write_output(output_batch[i], path=batch_messages[i].path_out)
batch_messages = []
Проблема в том, что код тратит большую часть времени на чтение из SQS, чтение изображения с диска и запись в конце. Это означает, что GPU простаивает все это время.
Мне известно о Sequence
Keras, но я не уверен, предназначено ли оно и для этого случая, и для вывода (а не для обучения)