Знает кто как реализовать задачу? У меня есть кластер с GPU

серверами, там нейросети картинки делают, клал бы я задачи в очередь и получал бы результат, но есть но

1) У разных серверов разный набор моделей и они могут меняться и обновляться
2) Если GPU занят генерацией то другую работу он делать не может, т.е. только одна картинка в один момент времени


И вот я пробовал создавать на каждую модель свою очередь, но поскольку в серверах по несколько моделей то они подписываются на несколько очередей, и проблема в том, что даже если я укажу в MassTransit лимит на одновременную обработку только 1 задания в момент времени, сервер все равно заблокирует минимум по 1 заданию в других тасках и не даст другим взять их в работу

Пробовал как-то сделать фильтрацию по типу модели в одной обей очереди, чтобы каждый подписчик вообще не мог брать задания с моделями которых у него нет, но тут кажется это вообще не поддерживается

В общем, как можно еще реализовать? Сам я начал изучать эту технологию день назад и для меня многое непонятно

3 ответов

33 просмотра

Одним реббитом врядли получится. Как я бы сделал такую задачу. Для начала один эксейндж куда залетают задачи с роутинг кеями=моделям. Сервер декларирует под каждый свой гпу очередь (представим что там по одному гпу, значит сервер генерирует себе одну индивидуальную очередь) затем он биндит жту очередь на тот самый эксчейндж всеми присутсаующими у него моделями-роутинг кеями. Таким образом в каждую очередь каждого сервера будут попадать только задачи которые он может обработать. Остаётся проблема дедупликации (потому что задача появится в очереди у всех серверов с одинаковыми моделями) Тут уже реббит не помощник, ставим редиску и в начале обработки сообщения проверяем - никто еще не начинал обработку жтооо сообщения? Если начал - то просто отбрасываем, если мы первые - ставим признак в редис и начинаем обработку.

Тут идеально ложатся селекторы на очередь. В этом случае можно обойтись одной очередью и консьюмеры сами решают что им нужно. Но в rabbit их нет. Есть в activemq, соответственно если смена mq допустима, то вариант прекрасный. Если нет, то я бы пожалуй складывал всё в базу и оттуда уже выбирал нужное, городить что-то на кролике не вижу смысла

Kyle-Nekto Автор вопроса
d.
Тут идеально ложатся селекторы на очередь. В этом ...

well, это были увлекательные 2 дня с кроликом, но я уже поднял activemq, спасибо за совет

Похожие вопросы

Обсуждают сегодня

Всем привет. Понимаю, что, наверное, сто раз поднимали эту тему, но по ключевым словам не смог найти. Как передать в values.yaml зависимого хелм-чарта теги образов, собираемых...
Vitalik Petrov
4
@aigrychev, @ilya_lesikov добрый день! а поддерживает ли werf helm xxxx или werf bundle xxxx работу с сабчартами через http-прокси? (сработает ли использование HTTP_PROXY/HTTP...
Сергей Голод
4
Всем привет. Werf v2.10.5 При удалении релиза вместе с неймспейсом (werf dismiss --namespace namespace_name) Сыпятся ошибки ┌ Waiting for resources elimination: namespaces/rel...
Vitalik Petrov
1
Добрый день! Удалил все файлы с переменными из проекта, получил Error: release deploy: process resources: error validating adoptable resources: adoption validation failed: re...
Evgheni Mad
2
Привет! Вопрос про werf helm Приложение деплоится через werf helm upgrade --atomic Иногда(все условия для воспроизведения до конца непонятны, но есть версия, что это происходи...
𝓐𝓵͢͢͢𝓮𝔁 C
2
Всем привет. Сегодня добавили в приложение дополнительный образ nginx, в который докидывается системная статика прям в образ. При деплое бандлами деплоилось 200+ джоб(клиентов...
Владимир Муковоз
6
Добрый день, после перехода с версии 1.2 на 2.10 werf cleanup начал удалять использующиеся теги, и до и после обновления использовались дефолтные политики keepPolicies Подскаж...
Дмитрий
29
Блин а мне как поумнеть ?
Toxin
191
Друзья, добрый день. Прошу подсказать с базовым вопросом по использованию CI переменных gitlab в werf.yaml. Хочу в beforeInstall использовать env переменную с токеном. Мне нуж...
Anton Zol
10
Вопросик не совсем werf. Но вдруг мы подскажите воркэраунд или ещё что-нибудь. Могу ли я как-нибудь в моменте деплоя внутри heml рендера получить хэшсумму файла шаблона (./tem...
Alex Подрябинкин
11
Карта сайта