Эффективная передача данных с сервера REST API на Ray Pipeline - PullRequest
2 голосов
/ 17 апреля 2019

У меня есть ML-конвейер с несколькими лучами (https://ray.readthedocs.io/en/latest/) акторов (1 Tensorflow, несколько шагов предварительной обработки и несколько постобработок), соединенными друг с другом.

Я бы хотел сделатьэтот конвейер доступен через REST API, который должен принимать изображения, помещать изображения в конвейер (выполняется Ray) и возвращать результаты обратно.

Мне было интересно, какое лучшее и наиболее эффективное архитектурное решение состоит в том, чтобы сделать Ray'sудаленные функции, доступные через REST API? Изображения могут быть довольно большими, поэтому в идеале кодовый блок, в котором работает REST API, должен быть в состоянии поместить изображение непосредственно в плазменное хранилище Ray.

Я работаюЛуч в кластере kubernetes. Сервер REST API основан на Python / asyncio.

Одно простое решение:

  • Создать модуль kubernetes, обслуживающий сервер REST API, и использовать ray.init(...)внутри этого контейнера для подключения к кластеру Ray и передачи данных в конвейер. Однако, я думаю, таким образом, REST APIстручок не сможет вставить данные изображения непосредственно в общую память Рэя?В этом образе (https://youtu.be/D_oz7E4v-U0?t=830) я вижу, что нормально иметь несколько рабочих / драйверов на 1 физическом компьютере. Но учитывается ли это, если Ray работает внутри Docker / Kubernetes? В примере развертывания kubernetes естьустановка явно иметь только 1 работника на узел (https://github.com/ray-project/ray/blob/master/kubernetes/worker.yaml#L18).

Еще одно (хакерское?) решение:

  • Реализация сервера API REST внутри модуля Ray Worker.Таким образом, я предполагаю, что код API REST сможет получить доступ к той же общей памяти, что и рабочий, обеспечивая эффективную передачу данных.

Последний вариант:

  • Реализация API-сервера как функции Ray или актера Ray.Но если функция / субъект развернута на случайном узле внутри кластера Ray, я не уверен, как публично представить этот API-сервер ..

Может ли кто-нибудь, обладающий более глубоким пониманием Рэя, помочь мне с лучшим вариантом (одним из вышеперечисленных или другим)?

Большое спасибо!

...