Comments 9
Отличная статья! Спасибо!
Работает ли это для CPU?
Почему python, а не go
А почему не плюсы с CUDA? Или вся мощь железа не интересует?
Даже не плюсы, а С-шные вставки в критичных местах в акведуке имеются, про это скоро будет отдельная статья от инженера который их делал.
К CUDA пока привязываться нет смысла, так как это можно сделать в самой модели. Уже на усмотрение самого разработчика, можно использовать любые другие способы оптимизации. Например, у нас есть сервис где используется разделяемая память от pytorch на GPU, работает коллоссально быстро, но это кастомное решение под конкретную модель и фреймворк. Поэтому в акведук мы это не выносили.
А что вы думаете об использовании Nvidia Triton? Стандартное решение по нынешним временам)
Лайк за картинки с вращающимся сыром 🧀
В конце статьи про это есть комментарий, тритон это мощь, но это способ плейсинга моделей, его вполне можно сочетать с акведуком, который больше про организацию оптимального конвейера вычислений.
А как это должно работать?
Запустить тритон в сайдкаре и по grpc в него ходить? А зачем тогда акведук в этой цепочке?
Да, закинуть модельку в тритон и в шаге с моделью дергать по grpc, для этого акведук не нужен. Дальше многое зависит от самой модели. Самое первое что приходит в голову - надо готовить данные для модели, это можно организовать в виде предварительных шагов в акведуке и причем можно готовить данные параллельно, сразу пачкой по 12 штук например. Дальше, на шаге с моделью, если она поддерживает батчирование то акведук поможет собрать батч и вы сможете эту пачку сразу отправить в модель. После модели можно также параллельно обрабатывать данные с уже полученными ответами от модели, это все тоже можно оформить в виде шага акведука после модели. Вот для этого всего подходит акведук.
1) Если ходить в triton по grpc, то снова нужна серриализация картинок.
2) Батчинг есть и на стороне тритона -- если использовать его вместе с акведуком, то будет двойной батчинг?
3) Кажется, что из плюшек Aqueduct -- это ассинхронная подгрузка изображений по ссылке. А triton, на сколько я понимаю, этого не умеет и ожидает, что все данные будут переданы в запросе
---
Статья была бы более полной, если бы вы опубликовали сравнение или бенчмарки: Aqueduct / Aqueduct + Triton / Triton / ...
Aqueduct: Как мы экономим железо для МЛ-вычислений