Онлайн-прогнозы облачной ИИ Google: как распараллелить запросы, чтобы ускорить время ответа? - PullRequest
0 голосов
/ 12 марта 2020

У меня есть модель, развернутая на платформе ИИ, которая работает. Однако обрабатывать запросы очень медленно, слишком медленно, чтобы использовать их в prod, поэтому у меня была идея разделить данные для отправки нескольких запросов одновременно и обработать их одновременно разными узлами.

Вот мой код:

from multiprocessing import Pool
from googleapiclient import discovery
from oauth2client.client import GoogleCredentials

instances = [...] # 100 items

def f(data):
    credentials = GoogleCredentials.get_application_default()
    api = discovery.build('ml', 'v1', credentials=credentials, discoveryServiceUrl='https://storage.googleapis.com/cloud-ml/discovery/ml_v1_discovery.json')

    PROJECT = ...
    MODEL_NAME = ...
    VERSION_NAME = ...

    parent = "projects/{}/models/{}/versions/{}".format(PROJECT, MODEL_NAME, VERSION_NAME)

    response = api.projects().predict(body={"instances": data}, name=parent).execute()

    return response

p = Pool(4)

n = 4

print(p.map(f, [
    (instances)
] * n))

Однако это не работает. Это должно быть примерно в 4 раза быстрее, чем если бы я отправлял все данные сразу, но на самом деле это занимает примерно то же время. В чем может быть проблема?

...