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

Занимаюсь исследованиями по ML инфре, аспирант сколтеха
Download Telegram
Выглядит это все конечно немного сюрреалистично. Как и венчур в целом. Большинство этих компаний просто не имеют ничего кроме софтины за спиной и около нуля платящих клиентов. Потому большинство из них просто живет, пока есть фандинг.
А потом напишут:
“Мы не смогли поднять раунд, извините, мы закрываемся. И да, ваши инстансы с данными будут удалены через 2 недели. Хорошего вам дня! С любовью, команда ХХХ“
😁2
Про обучение больших трансформеров

В основном в проде все используют LLM размера не больше 35B. А на деле даже чаще 7B или 15B
Связано это в первую очередь с эффективностью и расходимостью юнит экономики (ее бы с маленькими моделями свести для начала. GPU дороги)

Но параллельно есть товарищи, которые учат максимально большие сети. Прямого коммерческого смысла в этом сейчас нет - слишком дорогие косты инференса - сложно придумать маржинальное использование. А капекс на обучение самой сети очень велик
Зачем же тогда учат? Чтобы:
- Дистилировать в маленькую модель
- Новые идеи
- Перестраховаться на случай прорыва в вычислительных технологиях

Увидел статью Nvidia, как учить большие сети, когда под один эксперимент используется 1000+ GPU
Я выше писал, что мне очень нравится концепция Ray, однако самая большая его проблема - невозможность хорошо делить память девайса. И таким образом в любой момент времени только 1 операция может занимать GPU. Так вот для LLM это не большая проблема - нейронки большие, можно пофьюзить слои, да и воообще только Вы на кластере
Частичное решение данной проблемы - виртуальный сплит GPU, например MIG

При параллелизме вычисления нейросети (forward pass) есть 3 техники - параллелизм данных, тензоров и графа модели
В статье немного другая терминология - intra (== data + tensor. Параллелизм данных это по сути параллелизм тензора по внешней батч размерности) и inter (граф модели)
В такой терминологии удобнее мыслить блоками и связями между ними

Теперь к тому, как собственно устроено обучение:
1. Есть код в Jax
2. Далее alpa (сейчас функционал auto_sharding в рамках XLA) оптимальную модель intra вычислений (например матричных умножений)
3. alpa рассчитывает inter план вычислений
4. Компилируем каждый блок графа в IR представление (ака JIT)
5. Шедулим исполнение “бинарей” поверх акторной модели Ray

При всех доделках получаем утилизацию 57.5%, так что еще есть куда копать
🔥5
2 рупора относительно того, как надо деплоить нейросети

1. Построим большие датацентры за ооочень много денег. Будем инференсить централизованно все там. На масштабе точно окупится. Ну сейчас не окупается, да. Но мы что-нибудь придумаем
Это приходит в голову в перую очередь и на самом деле почти все стартапы и рнд отделы именно так деплоят (отсюда и заказы на тысячи видеокарт)

2. А почему мы? У пользователей смартфоны, планшеты, умные колонки, часы и вообще много всего умного
Пусть их устройства и считают все эти нейронки. Железо существенно спрогрессировало на мобильных устройствах
И это более разумный рупор. Так делают примерно все производители мобильных (как минимум в камерах +- каждая уважающая себя компания использует или пыталется использовать не одну нейронку)

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

При этом выглядит все органично. Команды с разным фокусом естественно пытаются перетянуть одеяло на себя
Но глобально одни пытаются обучить большую и умную базовую модель (однако “как есть” не особо пригодную из-за высокой стоимости инференса), а другие танцами с бубном пытаются сделать из базовых сетей прикладной алгоритм
3👍1🔥1
На идею предыдущего поста навела статья от 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