Давай деплой ML!
424 subscribers
50 photos
1 video
1 file
59 links
Пишу об ML инфраструктуре и алгоритмах, позволяющих ML системам работать эффективнее

Занимаюсь исследованиями по ML инфре, аспирант сколтеха
Download Telegram
Channel photo updated
Я - разработчик и создаю инфраструктуру для рекомендательных систем в одной из самых крупных ИТ-компаний, раньше делал платформу для MLOps и обучал AI-модели в других компаниях. Закончил ВМК МГУ, учусь в ШАДе и на ФКН в ВШЭ.

🔴Этот канал - для моих мыслей о технологиях и о том, как они развиваются и меняют бизнес. Буду писать о том, с чем работаю каждый день :

- Инфраструктура, облака и сервисы для разработки, обучения и инференса моделей
- AI-модели и их архитектура, кейсы в разработке и внедрении
- Проекты, задачи, команда, обучение, развитие и другие мысли и инсайты из моих будней

💬Комменты и реакции открыты, заходите с любыми идеями и обратной связью)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥43
Цена хайпа инференса

OpenAI тратит на инференс по разным оценкам 100-700k USD в день. А ещё такие нейронки нужно учить - и это тоже огромные затраты (которые кратно больше затрат на инференс)

Большие ИИ-модели требовательны к ресурсам.
Например, для инференса одной GPT2/3/3.5/4 - нужно 4 или 8 высокопроизводительных карт с быстрым соединением между ними. Реальное использование в проде LLM требует ~40-100 видеокарт под постоянную утилизацию. Подходят сервера dgx/hgx от nvidia по 8 карт с nvlink. Сейчас в России такие в достаточном количестве есть только у Сбера и Яндекса.

💰 Один сервер на 8 карт А100 стоит 200-300k USD (примерные оценки, без установки и поддержки), в итоге получается стоимость проекта только по железу от 200k USD и других вариантов при желании все разворачивать на своей инфре нет. Аренда тоже дорога - от 16k USD в месяц. Вывод понятен - GPT (и другие большие модели) отлично себя показывают, но для использования нужно учится резать косты

⚡️Я вижу две развилки:
Первый вариант - сжатие сети под конкретные задачи (с потерей качества).
Второй - появление отдельных компаний, которые будут инференсить тяжелые модели и давать их рынку по Pay as you go

В развитие обоих направлений верю, хотя в прод сейчас идут сильно сжатые модели (дообучение под задачу + квантизация в int4)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2🫡1
👨‍💻 Очень производительный брокер сообщений

Почти любой продакшен обрабатывает часть данных через брокеров сообщений. На слуху есть 3 фреймворка: Apache Kafka, Rabbit MQ, Apache Flink
Причем Kafka чаще всего используют в больших проектах

Недавно увидел Redpanda
Ребята написали хороший стриминг на c++, получив значительный буст в производительности
▶️ API взято из Kafka - что очень круто. То есть вы можете не переписывая свой код начать их использовать (в идеале)
▶️ Сборка в один бинарь (single binary). Полагается для отказоустойчивости на свою реализацию рафта и не зависит от, например, zookeeper как в Kafka
▶️ Архитектура - по треду на каждое cpu. Должны выжимать все с низлежащей машины. Попозже внимательно посмотрю в код
▶️ Есть UI. Очень похож на Kowl для Кафки. Даже свежее выглядит
▶️ Их уже используют стриминговые, трейдинговые и другие нагруженные кампаний, так что гарантии и цифры не только на бумаге

🛞 Здесь можно посмотреть бенчмарки
Крутое и наглядное сравнение. Обычно таких бенчмарков у проектов нет
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Зачем намеренно снижать скорость ответа ML сервиса?
🤔 Многие хотят, чтобы ML работал в режиме реального времени.
Это круто для MVP или тестов, но приводит к проблемам при выходе в продакшен:
необработанным запросам и доступностью на уровне 95-98%

Альтернативы:

Пересчет по таймеру
Скапливаем данные и иногда (раз в час/день/неделю) обрабатываем. Если что-то пойдет не так, вы сможете починить систему и обработать накопившиеся данные.
Самый простой и правильный способ для первой версии продукта

Обработка около реального времени. Брокеры сообщений
Пользуемся брокерами сообщений и поточными протоколами. Ускоряем предыдущий способ, делаем надежнее, добавляем больше железа.
Показываете MVP, и потом, когда бизнес часть проекта подтверждена, занимаетесь его улучшением
Самый использующийся подход

🛠 Если все таки надо реальное время - ограничивайте масштабы теста, чтобы нагрузка повышалась плавно, делайте нагрузочное тестирование и подключайте мониторинг с уведомлениями
1
💡 Какие Deep Learning инженеры интересны Карпатому?

Наткнулся на пост Андрея Карпатого (сооснователь OpenAI и уже бывший директор по AI в Tesla). В Deep Learning он хочет прежде всего инженеров-разработчиков, а уже потом умеющих учить нейронки

🤔 Почему так?
Потому что нейронка - это малая часть успеха. Что-то вроде доказательство теоремы существования продукта/функционала.

🛠 В больших компаниях сложный продакшен - написано и внедрено много инструментов
Поэтому, чтобы свой код туда внедрить, нужно еще в 3-4 раза больше времени вложить в разработку
И в большинстве случаев придется писать не только на python, но и на C++, Go и других языках
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
А Вы слышали о таком звере?
💸 Переупаковка видеокарты. Или что делать, если нельзя, но очень хочется

Случайно наткнулся на карту Nvidia A800. Подумал, что это неизвестная мне абревиатура для сервера с восемью картами А100
Оказалось, что такая видеокарта существует, и я проспал все веселье (и Вы скорее всего тоже)

🚫Недавно был запрет на ввоз карт Nvidia A100 и H100 (самых мощных датацентровых карт Nvidia) в Китай со стороны регулятора США (в рамках торговых санкций)
И Nvidia публично возмущались, мол, "вы у нас рынок отбираете"
Вот так и родилась на свет, без особого шума, Nvidia A800

💯 Эта та же самая карта А100, судя по открытым спецификациям
Только пропускную способность NVLink уменьшили на треть (600GB/s -> 400GB/s)
Это снизит эффективность распределенного обучения, а значит эффективность обучения больших нейронок, под предлогом которых вводили ограничения

Видимо, американский регулятор остался доволен, либо сделал вид, что не заметил (регуляторы не очень любят отменять свои решения)
💡 А мы можем понаблюдать за умением договариваться и переупаковывать продукт
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2😁1
🚀 Построение ML пайплайнов инференса на Ray

При инференсе ML моделей могут возникнуть несколько вычислительных сложностей
1. Модель не влезает на одну GPU
2. Модель содержит несколько тяжелых слоев, из-за которых приходиться масштабировать модель целиком
3. Инференс одного батча очень длинный, из-за чего пропускная способность мала

🛠 Одно из решений - пайплайнинг:
Разпиливаем граф модели на несколько и коннектим выходы и входы кусочков друг к другу через транспорт (infiniband, cuda_ipc, RoCE, tcp - тут кто чем богат). И вместо одного большого графа нейросети получаем несколько отдельных моделей, которые можно масштабировать по-отдельности или даже запускать на разных физических девайсах

Обычно речь в таком случае идет о написании транспорта руками: либо пишем микросервисы и соединяем, либо используем MPI для запуска и контроля процессов
Все это не для простых смертных и потребует хорошей квалификации

💡 А можно использовать для этой цели Ray
Ray - это мультиакторный фремворк с хорошими абстракциями, кодом и даже кластером для запуска на железе или кубернетесе. В одном из следующих постов пройдусь по нему

🤔 Однако на момент моего последнего копания Ray поддержка Gpu там была плохой
Один процесс монопольно занимал одну Gpu на время исполнения - а значит могут быть проблемы с утилизацией
А местный Object Storage (с ассинхронным обменом данных) не умел в Gpu память - а это вообще-то чуть ли не самое крутое, что в Ray есть

🌟 Пост по мотиву статьи от ByteDance
Есть в английском варианте от Ray
Не понятно, что они делали с пересылкой между серверами
Похоже, там обычный tcp: Gpu транспорт - сложная штука, а упоминаний о нем я не вижу
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4