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

Занимаюсь исследованиями по ML инфре, аспирант сколтеха
Download Telegram
На идею предыдущего поста навела статья от meta
MobileLLM: Optimizing Sub-billion Parameter Language Models for On-Device Use Cases
LLM оптимизируют под мобильные девайсы. Пишут, что исследовали текущие подходы и сделали новую sota модель 125 и 350 Мб
Основные идеи:

1. Глубина сети сильно важнее ширины для компактных нейросетей

2. Давайте матрица преобразования эмбединга в предсказанный токен будет одновременно являться матрицей для получения ебмединга по токену (весом в nn.Embeding). На маленьких архитектурах можно секономить 10% модели почти не потеряв в качестве

3. Будем использовать Grouped Query Attention для экономии параметров. В нем каждая Key-Value голова используется для нескольких Query голов (в multihead соотношение 1-1). Оптимальное количество уникальных KV-голов - 16, но можно без существенной просадки снизить до 4х и уменьшить вес модели еще на 10%

4. Переиспользование параметров в рамках модели. Это версия модели LS (Layer Sharing). Попробовали разные схемы. Лучше работает, если блоки переиспользовать в обратном порядке, но эффективнее, если загрузите один раз блок и сразу два раза примените на нем forward и позже backward. Если посмотреть на неагрегированные замеры качества, там не однозначно: идея либо чуть хуже, либо на пункт лучше, хотя и выглядит интересно

5. Используют линейные слои с активацией swiGLU
SwiGLU(x, W, V, b, c, β) = Swishβ(xW + b) ⊗ (xV + c)
🔥3
Ухх
Stable Diffusion 3 статья
Наткнулся на хорошую обзорную статью по эффетивным LLM
Efficient Large Language Models: A Survey

Смысла пытаться пересказать нет, там очень много материала. По картинкам можно понять, что разобрано и структурировать у себя в голове (за что я люблю такие статьи, если они написаны хорошо)
Большинство идей так или иначе применимы шире, не только для LLM
3
⚙️ Из общей картины выбивается обзор фреймворков. Для большинства направлений DL их выбор достаточно прямолинеен, особенно в контексте инфраструктуры инференса и обучения. Но в LLM, видимо, из-за больших размеров и вычислительных сложностей моделей, а также взрывного роста популярности - было создано очень много специфичных фреймворков. Думаю, часть из них забудется в рамках консолидации (все таки глобальные фреймворки типа torch и tensorrt имеют ряд серьезных преимуществ), а часть останется плагинами под системы - такие как Ray-LLM .

🏆 Вообще RAY большие молодцы - сейчас они де факто заняли нишу инфраструктуры инференса на кубернетесе (примерно все для не очень интенсивных моделей его используют), хотя изначально система была задумана для мультиагентных систем и обучения с подкреплением
Добавляет похвалы факт того, что такой большой проект вышел с лаборатории университета UC Berkeley (ну и помощи основателя Databricks 😉)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
🔍 Почему стоит читать лицензии в opensource?

Наткнулся на исследователя, который разрабатывает базовые алгоритмы и продает на них лицензии
Тут можно посмотреть, какие алгоритмы он уже разработал

⚠️ Если посмотреть в лицензию, увидите там очень интересный пункт (100к USD per project basis)
Справедливости ради, он не скрывает, что занимается этим
Но вот незадача - не обратите внимания, скопируете себе, зальете в опенсорс - и вот Вы и Ваша компания попали

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

🟰 Справедливости ради, исследователь уровня разработчика подобных алгоритмов стоит от 300-400к USD в год в Америке. И, получается, как будто вы его наняли на несколько месяцев (кастомная оптимизация и бенчмаркинг кода в рамках процессов компании - дело не быстрое). И если его алгоритм/структура данных делает вам большую дельту в качестве системы - это не дорого

🚫 Но любая серьезная ИТ компания конечно на входе заблокирует подобный код. Часто есть апроксимации или аналоги с схожими характеристиками. Контролировать, что никакой инженер из добрых побуждений не утащит себе в проект код и не спишет с вас еще 100к $ - бессмысленно (когда лазишь по репозиторию компании - априори не будешь читать файлы с лицензиями)
Please open Telegram to view this post
VIEW IN TELEGRAM
😱2🔥1
Почему большая пауза в постах?

Были достаточно тяжелые и напряженные май и июнь
Я закончил магистратуру, шад, поступил в аспирантуру и перебрался ближе к исследованиям.
Все так же делаю ML/DL инфраструктуру

Буду продолжать писать, возможно, не сильно часто. Новостной канал особо возможности делать нет (да их и куча уже). А вот точечные качественные посты - это круто.
Следующая серия постов уже сейчас, обсудим GPU под под AI
3👏1
Какие GPU использовать под AI? Nvidia

Ответ - используйте новейшие H100 80Gb и не парьтесь - имеет место быть, но не то чтобы сильно хорош. Они дорогие, да и поставки сейчас от полугода окольными путями (хотя все как-то научились возить)

Возникает вопрос - а если деньги считать? Что лучше?
В больших компаниях уже все сами протестили, и уже в открытый доступ куча информации вышло (у всех +- одинаковые выводы)

На основе чего мы технически оцениваем GPU? Если выделить самое важное:
1. Производительность (измеряем по своим бенчмаркам)
2. Память GPU. Данный пункт является блокирующим. Если вы используете модели, занимающие 25Gb+ на девайсе, то речи о игровых картах с 24Gb быть не может
При этом каждый следующие 10Gb памяти будут стоить Вам на порядок дороже

Давайте теперь соотнесем бенчмарки и стоимость карт:
Бенчмарк инференса для игровых карт (stable diffusion)
Бенчмарк обучение/инференс (lambda cloud marketing)
Обратите внимание, что игровая 4090 относительно близка по производительности к Nvidia A100. А RTX 4080 super не то чтобы сильно хуже 4090

Cтоимость в ритейле (данные примерные. В случае с игровыми стоимость +-15% в зависимости от качества исполнения)
1. 4080ti super 16Gb - 120т руб
2. 4090 24Gb - 200-250т руб
3. A100 -1000т+ руб
4. H100 80Gb - 3000т+ руб
🔥4
Какие карты в итоге использовать?

Пока только об Nvidia. H100 тут не советую, это и так понятно, что они самые лучшие и самые дорогие

Для обучения
Попробуйте достать A100, они все еще крутые. Да и для распределенного обучения игровые варианты ввиду отсутствия NVLink и медленной шины - не очень удобны.
Альтернативы:
1. Другие нефронтирные серверные карты: A30/L40/T4/A6000 и другие, которые сможете достать по хорошим ценам
2. 4090 24Gb. Исследователи часто используют их для обучения и в них влезает большинство адекватных сетей

Но это варианты, которые так или иначе свяжут руки разрабам

Для инференса
Мое мнение - модели в инференсе должны влезать даже в 8-16Gb. Иначе у вас unit экономика не сойдется, посчитайте стоимость инференса по ценам облака и умножьте на свой RPS. Квантизуй и дистилируй или погибни)

Поэтому
1. Рассмотрите 4090/4080 super, если ваши модели влезают в 16-24Gb. Они имеют лучшее соотношение цена/производительность
2. Многие используют А30 для инференса/рендеринга. Они в 2 раза дороже 4090 и хуже по производительности. Так что брать их стоит только из соображений совместимости с AI инференсом и серверного форм-фактора из коробки (есть еще причины - их обсудим в следующем посте)
3. Сделайте инференс на A100, если деньги не проблема или вы делаете большие LLM

А если быть реалистами, для многих стартапов в инференсе даже 4060 12Gb подойдет (~40т руб). И лучше собрать сервер на 4-8GPU и балансировать между ними трафик
🔥51
Почему персональные и серверные GPU Nvidia схожи по производительности и отличаются по стоимости в разы?

Есть несколько причин:
1. Спрос. Компании в Америке скупают новейшие карты тысячами. Nvidia на кварталы вперед в предзаказах H100/B200
2. Санкции. 4090, A100, H100 - запрещены для ввоза на материковый Китай и РФ. Результат - все все равно доступно, стало дороже и возможны проблемы с документами
3. Ценовая политика. Игровые карты предназначены для геймеров. Доля стоимости видеокарты в сбалансированном компьютере - 40-60%. Не то чтобы много людей, готовый за игровой компьютер платить 300-400т+, потому слишком завышать цену не получится
4. Память. У серверных карт она производительнее, так что в некоторых интенсивных сценариях она может помешать утилизировать вычислитель.
Для сравнение пропускная способность: 4090 - 32Gb/s, у А100 - 64Gb/s, у H100 - 128GB/s
5. Нагрев. У 4090 заявлена мощность нагрева - до 450W, у А100 - 300W. Хотя при этом H100 - до 700W, но там и охлаждение продумано за вас
6*. Охлаждение. Серверные карты можно поставить "бутербродом" за счет турбинного охлаждения или вплотную (как у dgx/hgx) за счет продуманных потоков воздуха. Игровые от такой компоновки расплавятся, да и горячий/холодный коридор дома вы делать не будете. Есть еще вариант оторвать родной радиатор и поставить турбину или водяное охлаждение (так даже уже делают) - но вы слетите с гарантии**
7**. Есть некоторая лицензия, не позволяющая использовать игровые карты для профессиональных целей
Честно, я ее не видел, но все о ней говорят. Скиньте в комменты, пожалуйста, если вы ее видели.
8. Взаимодействие GPU в сервере. В игровых больше нет NVLink, так что распределенное обучение там будет медленное
9. Количество доступных стоек и места в них. Если свои помещения, то количество стоек ограничено стенами. Поэтому чем больше GPU помещается в сервер, тем лучше

* У Gigabyte появились turbo-fan версии 4070 ti super для AI (прямо сейчас в РФ они только на Авито). Так что существенность и правдивость данных пунктов становится более сомнительной.
** Nvidia ушла с рынка и не обслуживает свои продукты, так что возможность слететь с "гарантии" - это не аргумент. Гарантийные обязательства реализуются поставщиками самостоятельно (либо путем вывоза в соседние страны)

На фото hgx 4xA100 с башенным охлаждением. Трудно представить себе такую компоновку 4090
🔥3
Развитие железа для Deep Learning

Нашел классное выступление от одного из лидирующих архитекторов Nvidia и экс профессора Стенфорда

Несколько основных мыслей:
1. Рассказал про то, чем получается добиться максимум производительности и за счет чего они сделали кратный рост производительности
Основное - кастомные типы данных и операции, структурная разреженность
Сейчас есть несколько идущих проектов по различным способам использования разреженности
2. Research Nvidia работает где-то на 2 поколения вперед. То есть то, что они придумывают и тестируют сейчас - будет реализовано через 2-4 года
Сейчас, кажется, все легкие идеи уже опробованы, но пока они не истощились
3. Конкуренты Nvidia далеко позади. Особенно что касается типов данных, производительности и универсальности. И они постоянно только догоняют (см пункт 2). Тулчейн cuda разрабатывается с 2003 года
4. Успех DL во многом благодаря кратному росту производительности GPU (они сейчас по закону Мура пока движутся - 2 года = х2 мощность)
Мол чем круче девайсы, тем больше возможностей у разработчиков и возможно большие модели в разумные сроки обучить
5. Идея совместной оптимизации алгоритма и девайса. Можно заниматься переписывание алгоритма с одного девайса на другой, а можно переосмыслить сам алгоритм под девайс, получив новый с другими гарантиями и ускорив решение задачи в тысячи раз
6. У nvidia есть ресерч проекты по созданию асиков с университетами (EIE, Eyeriss, SCNN, Simba). Это прям круто, даже если им отдаются идеи, которые как есть не лягут в железку
🔥41👍1
Чего хотеть от фреймворка инференса?

Первое что приходит в голову - производительности 😎
Но сосредоточиться только на ней будет ошибкой

Вот несколько других параметров:

1. Язык реализации. Если у вас малые нейронки или размеры входов, то издержки взаимодействия с питоном будут существенны под нагрузкой и стоит смотреть c++ фреймворки. Если матрицы большие, то, на самом деле, можно вполне пользоваться питоном пока нагрузки не велики (те же llm могут тратить десятки секунд на обработку контекста). Да и сами операции в питон фреймворках реализованы через биндинги С/С++

2. Среда использования. Если вы экспериментируете с составом кластера, и у вас наряду с nvidia картами есть еще и amd/intel/huawei - хорошей идеей будет подумать об одном общем фреймворке с реализацией нужных бекендов

3. Сборка. Просто ли собрать код, загрузить его на сервер и запустить? Контейнер может весить 10-20Гб и загрузка его с диска на рестартах может занимать десятки минут. Если уходить еще ниже на уровень бинарей, то возить с собой все .so библиотеки может быть проблематично. И, кстати, никто не обещал что залинкованная динамически библиотека на сборке не крашнет вам бинарь в неподходящий момент

4. Память. Если ваша нагрузка memory-bound (GPU VRAM переполнена), то имеет смысл смотреть реальную занимаемую память на нагрузке для одного запроса

5. Наличие хаков для нишевых сценариев. Инференсить llm без спекулятивного декодинга, kv cache, квантизаций, батчевания prefill/decode - равно тратить в разы больше ресурсов. В некоторых движках этих фичей может не быть

6. Качество кода. Разные фреймворки написаны с разным отношением. Кто-то пишет интуитивно понятный код, который легко раздебажить, а кто-то пишет все в одном файле на 3к строк и потом с пеной у рта говорит про эффективность (удачи дебажить ошибки в коде nvidia 🚬, но их не поймут, если они напишут не самый оптимальный код). В любом коде будут ошибки, любой будет падать - это просто факт, посмотрите в Release notes на исправленные в патчах ошибки, и вам покажется, что фреймворк вообще своей жизнью живет, иногда новые релизы просто не собираются
Так вот вы либо имеете контроль над кодом и можете на своей стороне сделать патч, либо с синими глазами даунгрейдите версию фреймворка в надежде поймать фикс и ждете исправлений в апстриме

📝 В общем, тут все не так однозначно. И кстати интересная тенденция - чем сложнее система и больше продакшен, тем большей простоты от кода и сборки стараются достичь. Потому что, когда все упадет, спросят с тебя, а не с разработчиков TensorRT
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥71
AMD Instinct MI325X Accelerators

Новая игрушка от AMD 🧸
256Gb видеопамяти на плате - это мощно 🌠 И компьют хороший
У nvidia есть свой аналог H200 - там 141Gb (у A100/H100 - 80Gb)

Для кого это и почему это круто?
99% - для ML инженеров на время разработки. Дело в том, что релизы новых моделей, если их не тюнить, часто не влезают в 80Gb (да-да дожились). Либо работают долго
Из моих последних использований:
1. Open-Sora для генерации видео лезет только в 4GPU, если генерить в 720p. У меня получилось уместить с приседаниями, но все же
2. Flux для генерации изображений - генерит одну картинку 30 сек на А100, что не быстро для model-surgery

🏆 Так вот если у тебя есть такая плата - ты на коне. Просто берешь почти любую модель и разворачиваешь за пару минут. Да и компьют быстрый. А не мучаешься с model/sequence/tensor параллелизмом

Для инференса эта штука может быть полезна в контексте LLM с очень большими последовательностями - размеры KV-Cache могут быть оч большими при нагрузке. Но, думаю, врятли кто-то будет особо использовать

Ps:
Мне кажется, что amd уже очень даже конкурентноспособны для AI. У меня чешутся руки прикупить такую карточку и поделать на ней замеры
Ps2:
Мы такие платы пока не получим, H100 и так с скрипом завозят, а эти лимитированы и продаются избранным, не слышал, чтобы у кого-то были
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👍2