Я - разработчик и создаю инфраструктуру для рекомендательных систем в одной из самых крупных ИТ-компаний, раньше делал платформу для MLOps и обучал AI-модели в других компаниях. Закончил ВМК МГУ, учусь в ШАДе и на ФКН в ВШЭ.
🔴 Этот канал - для моих мыслей о технологиях и о том, как они развиваются и меняют бизнес. Буду писать о том, с чем работаю каждый день :
- Инфраструктура, облака и сервисы для разработки, обучения и инференса моделей
- AI-модели и их архитектура, кейсы в разработке и внедрении
- Проекты, задачи, команда, обучение, развитие и другие мысли и инсайты из моих будней
💬 Комменты и реакции открыты, заходите с любыми идеями и обратной связью)
- Инфраструктура, облака и сервисы для разработки, обучения и инференса моделей
- AI-модели и их архитектура, кейсы в разработке и внедрении
- Проекты, задачи, команда, обучение, развитие и другие мысли и инсайты из моих будней
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4❤3
Цена хайпа инференса
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)
OpenAI тратит на инференс по разным оценкам 100-700k USD в день. А ещё такие нейронки нужно учить - и это тоже огромные затраты (которые кратно больше затрат на инференс)
Большие ИИ-модели требовательны к ресурсам.
Например, для инференса одной GPT2/3/3.5/4 - нужно 4 или 8 высокопроизводительных карт с быстрым соединением между ними. Реальное использование в проде LLM требует ~40-100 видеокарт под постоянную утилизацию. Подходят сервера dgx/hgx от nvidia по 8 карт с nvlink. Сейчас в России такие в достаточном количестве есть только у Сбера и Яндекса.
Первый вариант - сжатие сети под конкретные задачи (с потерей качества).
Второй - появление отдельных компаний, которые будут инференсить тяжелые модели и давать их рынку по 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++, получив значительный буст в производительности
Крутое и наглядное сравнение. Обычно таких бенчмарков у проектов нет
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Зачем намеренно снижать скорость ответа ML сервиса?
🤔 Многие хотят, чтобы ML работал в режиме реального времени.
Это круто для MVP или тестов, но приводит к проблемам при выходе в продакшен:
необработанным запросам и доступностью на уровне 95-98%
Альтернативы:
Пересчет по таймеру
Скапливаем данные и иногда (раз в час/день/неделю) обрабатываем. Если что-то пойдет не так, вы сможете починить систему и обработать накопившиеся данные.
Самый простой и правильный способ для первой версии продукта
Обработка около реального времени. Брокеры сообщений
Пользуемся брокерами сообщений и поточными протоколами. Ускоряем предыдущий способ, делаем надежнее, добавляем больше железа.
Показываете MVP, и потом, когда бизнес часть проекта подтверждена, занимаетесь его улучшением
Самый использующийся подход
🛠 Если все таки надо реальное время - ограничивайте масштабы теста, чтобы нагрузка повышалась плавно, делайте нагрузочное тестирование и подключайте мониторинг с уведомлениями
🤔 Многие хотят, чтобы ML работал в режиме реального времени.
Это круто для MVP или тестов, но приводит к проблемам при выходе в продакшен:
необработанным запросам и доступностью на уровне 95-98%
Альтернативы:
Пересчет по таймеру
Скапливаем данные и иногда (раз в час/день/неделю) обрабатываем. Если что-то пойдет не так, вы сможете починить систему и обработать накопившиеся данные.
Самый простой и правильный способ для первой версии продукта
Обработка около реального времени. Брокеры сообщений
Пользуемся брокерами сообщений и поточными протоколами. Ускоряем предыдущий способ, делаем надежнее, добавляем больше железа.
Показываете MVP, и потом, когда бизнес часть проекта подтверждена, занимаетесь его улучшением
Самый использующийся подход
🛠 Если все таки надо реальное время - ограничивайте масштабы теста, чтобы нагрузка повышалась плавно, делайте нагрузочное тестирование и подключайте мониторинг с уведомлениями
⚡1
Наткнулся на пост Андрея Карпатого (сооснователь 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 публично возмущались, мол, "вы у нас рынок отбираете"
Вот так и родилась на свет, без особого шума, 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 транспорт - сложная штука, а упоминаний о нем я не вижу
При инференсе ML моделей могут возникнуть несколько вычислительных сложностей
1. Модель не влезает на одну GPU
2. Модель содержит несколько тяжелых слоев, из-за которых приходиться масштабировать модель целиком
3. Инференс одного батча очень длинный, из-за чего пропускная способность мала
🛠 Одно из решений - пайплайнинг:
Разпиливаем граф модели на несколько и коннектим выходы и входы кусочков друг к другу через транспорт (infiniband, cuda_ipc, RoCE, tcp - тут кто чем богат). И вместо одного большого графа нейросети получаем несколько отдельных моделей, которые можно масштабировать по-отдельности или даже запускать на разных физических девайсах
Обычно речь в таком случае идет о написании транспорта руками: либо пишем микросервисы и соединяем, либо используем MPI для запуска и контроля процессов
Все это не для простых смертных и потребует хорошей квалификации
Ray - это мультиакторный фремворк с хорошими абстракциями, кодом и даже кластером для запуска на железе или кубернетесе. В одном из следующих постов пройдусь по нему
🤔 Однако на момент моего последнего копания Ray поддержка Gpu там была плохой
Один процесс монопольно занимал одну Gpu на время исполнения - а значит могут быть проблемы с утилизацией
А местный Object Storage (с ассинхронным обменом данных) не умел в Gpu память - а это вообще-то чуть ли не самое крутое, что в Ray есть
🌟 Пост по мотиву статьи от ByteDance
Есть в английском варианте от Ray
Не понятно, что они делали с пересылкой между серверами
Похоже, там обычный tcp: Gpu транспорт - сложная штука, а упоминаний о нем я не вижу
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
Написал про особенности формата, конвертеры в ONNX и из него в инференс
Если не знакомы - будет полезно, там внутри много ссылок
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Почему ONNX так популярен в ML: конвертации, утилиты и инференс
Большинство инженеров, работающих с машинным обучением, уже знакомы с форматом данных ONNX. Его часто используют для хранения обученных моделей и конвертации их мeжду фреймворками. В этой статье...
🔥12