Kitty Bytes AI – Telegram
Kitty Bytes AI
366 subscribers
25 photos
21 links
ML лонгриды для души🥰
Download Telegram
xLSTM: Extended Long Short-Term Memory

#rnn

Как и обещал, подготовил для вас подробный разбор статьи xLSTM. Знаю, что за это время вышло уже несколько разборов этой архитектуры, но на русскоязычных ресурсах наиболее детального обзора xLSTM на данный момент я не видел (сам не похвалишь, никто не похвалит 😃).

В статье разработано улучшение сети LSTM с помощью двух архитектур - sLSTM и mLSTM. Каждая архитектура, направлена на решение проблем оригинальной сети. Добавлены параллельные вычисления в mLSTM, способность корректировать запоминание информации, а также введено матричное представление данных внутри сети. Эксперименты доказывают, что xLSTM сравнима с GPT моделями, а результаты предсказания лексем SlimPajama превосходят по точности Llama 1.3B.

Читать больше в Teletype 🔄

Arxive 🤓
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍6🔥5👏2
Large Parallelism Post: Part I

#parallelism

Я долго ничего не публиковал, потому что решил сделать большой пост о параллелизме в нейросетях. Как оказалось, эта тема довольно обширная и с регулярными публикациями. Пришлось потратить много времени на сбор информации, структуризацию и написание текста. В конечном итоге материала оказалось так много, что я решил разбить его на серию постов.

В первой части собраны базовые методы параллелизма:
Data Parallel - самый простой метод параллелизма, в котором мы копируем модель на все GPU, и обучаем каждую ее копию, после чего аккумулируем градиенты🚬
Distributed Data Parallel - обновление метода Data Parallel с возможностью параллелизма модели на нескольких нодах💪
Model Parallelism - если у нас большая модель, то давайте просто порежем ее слои🔪
Pipeline Parallelism - улучшение Model Parallelism, который разработали ребята из Google, позволяющий избегать простоя GPU с помощью разделения данных на micro-batches📈

Читать больше в Teletype 🔄

Если чтиво вам покажется довольно простым, то советую дождаться разбора методов Tensor Parallelism и ZeRO😳
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12👏32🔥1
Large Parallelism Post: Part II
Megatron-LM: Training Multi-Billion Parameter Language Models Using Model Parallelism


#parallelism

Во второй части нашего ралли по методам параллелизма я подробно разобрал Tensor Parallelism на основе статьи Megatron-LM 🌿

Сама суть методики заключается в параллелизме не просто слоев модели, а ее блоков. В статье разработан пайплайн разделения блоков трансформера (MLP и Attention) с помощью column и row parallelism - так достигается корректность матричных вычислений и нелинейных функций. Особое внимание уделено минимизации коммуникации между GPU - на Forward и Backward приходится всего 4 AllReduce. Также исследован совмещенный пайплайн: Tensor Parallelism + Data Parallel 🪑

Читать больше в Teletype 🔄

Arxive 🤓
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥53👍3👏3
Large Parallelism Post: Part III
Mixed Precision Training


#parallelism #optimization

В третьей части разберем не столько способ параллелизма, сколько оптимизации тренировки моделей, без которого уже невозможно работать с большими моделями 🗯

В Mixed Precision (MP) почти все значения переводятся из FP32 формата в FP16, чем достигается уменьшение потребления памяти в 2 раза. Однако не все так просто - авторам пришлось ввести Loss Scaling для предотвращения зануления многих параметров, которые выходили за пределы диапазона FP16. Более того, некоторые вычисления (такие как векторное произведение) требуют накопления результатов в формате FP32, а только потом перевод в формат FP16 для хранения в памяти 🤏

Не смотря на такие доработки, результаты впечатляющие - во всех задачах (CNNs Detection, Speech Recognition, Machine Translation, Language Modeling, GANs) MP показал сравнительную, а нередко даже превосходящую точность над Baseline расчетами в FP32 формате 😎

Читать больше в Teletype 🔄

Arxive 🤓
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍3👏3
Large Parallelism Post: Part IV
ZeRO: Memory Optimizations Toward Training Trillion Parameter Models

#parallelism

Админ вернулся из отпуска 🍷 втянулся в работу😮‍💨 и готов продолжить марафон по параллелизму.

Сегодня разберем один из самых эффективных (и непростых) методов параллелизма очень больших 💪 моделей - ZeRO. Он позволяет эффективно обучать LLM (размером до 1трлн) за счет параллельного хранения и вычисления параметров модели, градиентов и параметров оптимизатора, сохраняя при этом низкий объем коммуникаций и высокую гранулярность вычислений. Мало кто знает, но он состоит из двух частей - ZeRO-DP и ZeRO-R. ZeRO-DP как раз параллелит параметры модели/градиентов/оптимизатора, а ZeRO-R оптимизирует память, сохраняя промежуточные активации/определяя размер буфера/дефрагментируя память.

Думаю о результатах говорить подробно излишне - ZeRO позволил начать тренировать огромные модели в индустрии, а также вдохновил на создание метода FSDP. Подробный разбор, как всегда, читайте в teletype.

Читать больше в Teletype 🔄

Arxive 📖
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👏4👍2
Large Parallelism Post: Part V
FSDP: Fully Sharded Data Parallel

#parallelism

Заключительный пост марафона по параллелизму посвящается методу FSDP - параллелизму с полным шардингом данных 🥰

Реализован за счет разбиения операции AllReduce на две - ReduceScatter и AllGather, а также за счет перегруппировки этих операций. Имея шард модели, данные весов собираются с других GPU за счет AllGather, далее происходит Forward pass, после чего снова собираются веса через AllGather, и только потом проиходит Backward pass. В конце градиенты обновляются с помощью ReduceScatter. Имеет 3 типа шардинга - DDP, Hybrid Sharding и Full Sharding 👀

Осветив подробно мир параллелизма больших моделей, мне захотелось погрузиться в квантизацию 🥺 поэтому ожидайте следующих постов👴

Читать больше в Teletype 🔄

Arxive 📖
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍3
ML System Design

#mlsys

Все знают, что для высоких грейдов в ML айтишке вы обязательно будете проходить собес по системному дизайну. Более того, именно на этом собесе проверяется ваш уровень "сеньёрности", а значит и ваша зп. Сложность интервью заключается в том, что к нему трудно подготовиться - здесь важное значение играет как опыт инженера, так и его кругозор

Сам собес выглядит просто - вам дается задача, про которую надо рассказать, как вы будете ее решать. Пример - "Разработайте систему рекомендаций в видеохостинге". После этого начинается ваш монолог-рассуждение о том, какие метрики будете мерить (online/offline), как будет выглядеть логика MVP, какие данные у вас есть, как они хранятся, как вы их будете обрабатывать, есть ли у компании ассесоры, какие фичи вы будете выделять в данных и как их будете представлять итд...

Задача может быть любой - от рекомендаций в любой сфере (финансы, маркетплейс, видеохостинг, онлайн-объявления...) до создания распределенной системы семантического поиска (по тексту/фото/видео/звуку)

Сегодня хочу вам порекомендовать литературу и источники, которые помогут вам подготовиться к такому собеседованию и расширят ваш кругозор по проектированию ML систем (что поможет вам даже на текущей работе)

🖥 Репа alirezadir - короткий markdown файл с описанием основных вопросов, на которые вы должны ответить при построении ML системы + порядка 20-30 решений популярных задач с ml sysdes интервью

🥰 EvidentlyAI - база данных 450 кейсов по проектированию ML систем в 100+ компаниях мира. Изучить все сразу сложно, но теперь вы знаете что можно читать в метро/на выходных/на парах

🌿 Stanford MLSys Seminars - почти 100 семинаров по системному дизайну трехлетней давности от стэнфорда. Классика актуальна всегда и вы точно преисполнитесь полезной информацией. Каждый семинар ведут разные люди из разных компаний, на которых подробно рассказывают, как устроены системы в FAANG и что нужно знать для прохождения собесов в эти компании

🦜 ODS ML System Design - если вам не заходят англоязычные лекторы, то есть отечественный 💪 аналог таких лекций от российского коммьюнити

🧖 Babushkin - то, с чего начинал я. В ходе лекции и последующих трех тренировочных интервью со студентами Валера разбирает основы системного дизайна + дает неплохую вводную и понимание чего от вас ожидают на этом интервью и чего говорить точно не нужно. Видосы не находятся в каком-то отдельном месте, поэтому прикреплю сразу 4 ссылки:
Лекция; Собес1; Собес2; Собес3

Если есть, что добавить, то предлагайте в комментариях 🍿

@kitty_bytes
Please open Telegram to view this post
VIEW IN TELEGRAM
20🔥4🤗3👍2
Пока все сходят с ума из-за новой мультимодальной Llama 3.2 🌿, я радуюсь своим маленьким достижениям в рисерче (мем с фермером и честной работой👴):

We are delighted to inform you that your submission, EAI: Emotional Decision-Making of LLMs in Strategic Games and Ethical Dilemmas, has been accepted at NeurIPS 2024 as a poster. Congratulations!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16🎉9👍3
Мое выступление на ODS 2024 выложили отдельно на ютуб и многие не могут найти те обзоры RAG систем, о которых я рассказываю. Для людей, которые зашли почитать об этом дублирую ссылки на мои посты
Пользуйтесь на здоровье🙃

Advanced RAG Pipelines

RAPTOR

P.S.
Я знаю, что давно не публиковал ничего в канал, но это не значит, что я ничего не подготовил)
К сожалению, очередной научный проект и запись видео на NeurIPS потребовали времени☔️
Через пару дней будет новый лонгрид🐕
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥65👍2
Чуть поздно, но выскажу свое субъективное мнение на счет Нобелевской премии по физике и химии🏆

Напомню, что по физике она присуждена John J. Hopfield и Geoffrey E. Hinton “for foundational discoveries and inventions that enable machine learning with artificial neural networks.”
А по химии Demis Hassabis and John Jumper have developed an AI model to solve a 50-year-old problem: predicting proteins’ complex structures.

Для начала немного истории 💊

Был такой выдающийся ученый Альфред Нобель - химик, инженер и изобретатель (прям как Тони Старк). За годы жизни, обогатившись на патенте от создания динамита, Нобель накопил внушительное состояние. И в своем заявлении он написал буквально следующее (сократил текст, полную версию выложу в комментариях):

... Доходы от вложений должны принадлежать фонду, который будет ежегодно распределять их в виде премий тем, кто в течение предыдущего года принёс наибольшую пользу человечеству. Указанные проценты необходимо разделить на пять равных частей, которые предназначаются: одна часть ... изобретение в области физики; другая ... усовершенствование в области химии; третья ... открытие в области физиологии или медицины; четвёртая ... выдающееся литературное произведение идеалистического направления; пятая ... существенный вклад в сплочение наций...

Мне кажется невозможно утверждать, что ИИ не принес пользу человечеству и не повлиял на его развитие. Он задействован во многих сферах - от безопасности (распознавания лиц) до LLM, которыми уже очень часто пользуются даже ученые. Приложения и технологии пронизаны рекомендательными системами, голосовыми ассистентами и другими "умными" системами. Не замечать влияния ИИ на человечество и научный мир нельзя и, думаю, именно поэтому Шведская академия наук решила номинировать ученых, которые повлияли на развитие ИИ.

С другой стороны Ян Лекун считает наоборот:
...машина Больцмана и сети Хопфилда, за которые эту премию дали – это бесполезные алгоритмы.


Лично я вижу в этом суету😎
ИИ правда оказал влияние на нашу жизнь. Правда, что это всего лишь предсказание следующего токена подкрепленное матстатом и инженерной смекалкой. Правда, что было много других достойных открытий в физике и химии, которые были ни чуть не хуже этих. Но, как физик и как МЛщик, мне приятно, что научное сообщество выделило достижения в сфере ИИ Нобелевской премией🙃
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍4🔥4
Quantization Marathon: Part I
Linear Quantization


#quantization

Разобравшись с основными пайплайнами параллелизма LLM, перейдем к не менее актуальной теме - квантизации. Очевидно, данное направление набирает популярность по мере роста размеров моделей📈

Я думаю многие уже слышали про новый курс про квантизацию от HuggingFace совместно с DeepLearning.AI. Я решил начать с него и, оказалось, что он совсем несложный, но тем не менее дает необходимую базу в понимании ключевых аспектов квантизации моделей

В курсе все внимание уделено разбору простейшего преобразования - Linear Quantization. Она применяется для перехода из одного типа данных в другой с помощью элементарных операций. Например, если мы хотим перевести числа из float32 в int8, то нам достаточно сопоставить границы областей значений данных и их центры. А далее, с помощью элементарных преобразований и операции округления, мы получаем биективное отображение, которое может работать в обе стороны.

Также в курсе вводится понятие гранулярности - когда референсные точки преобразования рассчитываются не для каждого отдельного значения, а для группы элементов в тензоре или сразу для всего тензора. Это упрощает вычисления и экономит память, однако снижает точность квантизации.

Помимо этих тем, показан лайфхак, как можно сжать значение с 8 бит до 2. Это подойдет для оптимизации хранения LLM. После квантизации, в 8 битных интовых ячейках памяти нередко содержится много нулей в начале каждой двоичной записи. Хранить их бессмысленно - они не несут никакой информации. Тогда давайте срежем у каждых четырех чисел первые 6 нулей, сократив каждое до 2 бит, а из них составим новое 8 битное значение. К сожалению, использовать на инференсе такую модель не получится - для этого необходимо провести обратную операцию распаковки всех значений.

Подробный разбор всего курса читайте в Teletype (время чтения 10 минут). А я буду готовить разбор новой статьи, про которую мало кто слышал, но она может иметь огромное влияние на всю индустрию LLM😇

Читать больше в Teletype 🔄
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍9🔥3😁3
DenseAttention: No-Compromise Exact All NxN Interactions Algorithm with O(N) Space and Time Complexity

Возможны ли нейросети без нелинейностей? Казалось бы нет, ведь линейная комбинация линейных отображений есть линейное отображение. А возможно ли сделать трансформер только из матричных умножений - наиболее эффективных по вычислениям и с возможностью параллелизма, которые способны решить неэффективность работы архитектуры? И самое главное - не потерять при этом точность работы трансформера📊

В этой статье предлагается новая архитектура DenseAttention Network (DANet), которая решает основные проблемы стандартной архитектуры Transformer: низкую эффективность по вычислениям и памяти, а также избавляется от квадратичной сложности по длине последовательности.

DenseAttention устраняет компоненты, ограничивающие память, такие как Softmax и LayerNorm, сохраняя при этом точные взаимодействия между токенами. Это позволяет достичь вычислительной сложности O(N) или O(N^2), что вычислительно превосходит стандартную архитектуру, особенно на длинных последовательностях. Для предотвращения числовой нестабильности вводится MaxNormActivation, а для замены RoPE предлагается новая функция Cosine Relative Positional Embeddings (Cosine RelPE), которая повышает эффективность работы модели.

DenseAttention показывает высокую скорость на малых последовательностях и значительно превосходит FlashAttention на больших контекстах. Обучение моделей на последовательностях длиной до 16K демонстрирует производительность, сопоставимую или превосходящую BERT-large, с улучшенной скоростью и эффективностью. Модель достигает высоких результатов на LRA-бенчмарке среди архитектур на базе Transformer.

Подробный разбор статьи читайте в Teletype (время чтения 15 минут)

Автор статьи 👉 @andrewargatkiny

Читать больше в Teletype 🔄

GitHub DenseAttention 🖥
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍74🔥4
Тут Meta релизнули новую либу для обучения моделей - optimizers и я решил рассказать вам про основные особенности чуть более подробно, чем это сделали @data_secrets 😎

Для чего она нужна? Optimizers сильно расширяют функционал контроля обучения моделей для ускорения их сходимости. По видимому, в бигтехах устали от самописно-костыльных решений и Meta решила помочь всем и сразу🍷 Более того, красота этого оптимизатора в том, что его можно встроить в существующий пайплайн обучения модели, улучшив сходимоть обучаемой модели.

На данный момент в либе единственным оптимизатором является Distributed Shampoo, с помощью которого реализованы остальные методы оптимизации: SGD, Adagrad, RMSProp и Adam. К нему добавили новые гиперпараметры max_preconditioner_dim и precondition_frequency , которые позволяют регулировать размерность и частоту обновления матрицы preconditioner - оператора, который используется для преобразования задачи оптимизации, чтобы ускорить сходимость, изменяя масштаб его градиентов. Ограничивая его размер, мы регулируем объем вычисления и затраты на память, что может быть важно при обучении больших моделей. Частота обновления preconditioner влияет на точность сходимости, однако при высоких значениях требует больше памяти. Да, админу пришлось хорошо вспомнить линал, чтобы разобраться в подкапотных тонкостях😱

Порадовало, что Distributed Shampoo поддерживает разные варианты распределенного обучения, включая DDP и FSDP. Для DDP предусмотрена поддержка ZeRO-1, что снижает требования к памяти и времени выполнения. Однако для FSDP требуется использование дополнительной памяти для восстановления исходных параметров. Кстати в DDP можно обучать квантизованные модельки (BF16, FP16, FP32)🕺

Либа поддерживает чекпоинты, но в типе DTensor, который не поддерживается торчом, поэтому нужно применять методы distributed_state_dict и load_distributed_state_dict 🥺

Теперь основной вопрос - как эту всю красоту использовать?

Имея основной метод оптимизации, мы заменяем его на конфиг метода из либы (i.e. SGDGraftingConfig ), оставляя при этом старые значения некоторых гиперпараметров. Другие гиперпараметры тюнятся для повышения эффективности сходимости и этому делу посвящена целая глава в ридми проекта. Все это дело оборачивается в DistributedShampoo , который и является основным методом оптимизации.

Но что именно происходит, когда мы заменяем наш метод оптимизации на Shampoo? Понятно, что имея такой инструментарий, мы хотим применять этот оптимизатор для уточнения сходимости ранее обученных моделей. Но как подобрать верные параметры Shampoo, чтобы он не дестабилизировал модель, а действительно улучшил ее? Зная гиперпараметры заменяемого оптимизатора, мы можем вычислить последовательность и размер шагов обучения и приблизить Shampoo к этому процессу. На языке линала это происходит так:

1) Мы берём норму шага обучения из прошлого оптимизатора
2) Нормализуем шаг Shampoo, чтобы он имел ту же норму
3) Масштабируем нормализованный шаг Shampoo, умножая его на произведение нормы шага нашего оптимизатора и коэффициента обучения

В результате мы получили новый оптимизатор, настроенный на обучение нашей модели с любого этапа, который может обеспечить нам лучшую сходимость модели👏
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥8👍5🤔3👌1
Разработка нового alignment в нашей команде подошла к моменту, когда необходимо анализировать внутреннее состояние LLM, поэтому для тех, кто занимается интерпретацией языковых моделей и исследованием их внутреннего состояния в зависимости от промпта, нашел кое-что интересное😽

🥂 Либа TransformerLens - позволяет довольно подробно и с хорошей визуализацией интерпертировать внутреннее состояние LLM. Она поддерживает более 50 опенсурс моделей таких как Llama-3.1-70B-Instruct, Qwen2-7B-Instruct, t5-large, Mixtral-8x7B-v0.1 и другие (полный список тут).

Авторы составили супер подробный гайд в ноутбуке, что очень упрощает вкат в новую либу. Там же вы можете попробовать основные функции TransformerLens:

🔷Извлекать и анализировать внутренние активации модели, что помогает понять, как модель обрабатывает входные данные
🔷С помощью hook points позволяет изменять внутренние активации без изменения структуры модели. Это очень крутая фича, которую мы будем юзать в нашем исследовании - попробуем менять внутреннее состояние LLM, чтобы она на положительный промпт реагировала отрицательно. Так хотим определить зоны, ответственные принятие решений. Чем-то напоминает ЭЭГ мозга👦
🔷Анализировать изменения в модели на различных этапах обучения, включая изучение формирования induction heads - пары attention heads в разных слоях, которые работают вместе для копирования или завершения паттернов attention. Подробнее про них можно прочитать в статье Anthropic

Прям в ноутбуке вы сможете найти очень интересные тонкости, которые не всегда очевидны. Например, трансформеры, как правило, странно относятся к первому токену (BOS) - это, действительно, не имеет значения при обучении модели (когда все входные данные составляют > 1000 токенов), но это может стать большой проблемой с использованием коротких промптов. Вот различие логитов с применением BOS и без него, а также различие токенизации имени:


Logit difference with BOS: 6.754
Logit difference without BOS: 2.782

| Claire| -> [' Claire']
|Claire| -> ['Cl', 'aire']


Когда я проверял различие внутренних состояний gpt-2 в двух промптах ('You have happy emotion in yourself!' и 'You have angry emotion in yourself!') оказалось, что сильное различие токенов эмоций возникает лишь в самых первых слоях трансформера, а к концу оно затухает. Напротив, знак препинания (!) особо сильно выделился только в последнем слое.

🥂В качестве небольшого бонуса - если вам нужны идеи как именно модель интерпретирует каждый токен, то можете обратиться к Neuronpedia. Здесь можно проанализировать поведение модели Gemma-2 и понять как она примерно классифицирует токены полученной информации. Я бы не относил этот инструмент к основным в области рисерча интерпретируемости, но как референс результата почему бы и нет?

P.S.
Если знаете еще какие нибудь классные инструменты интерпретации LLM, делитесь в комментариях
(Transluce не предлагать⌨️)
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍10🔥42👌1
Всех подписчиков поздравляю с Новым Годом!🎅Желаю схождения моделей, низкого лосса, высокого хирша и приятной зп😳
В честь праздника делюсь с вами подборкой мемов. Да прибудет с вами хорошее настроение🥳
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉62👍1