Ай Дайджест

Свежая выжимка ml и AI статей - каждый день

Подборка статей по тегу "throughput"

APOLLO: Эффективное обучение больших языковых моделей с использованием памяти

Модели крупного языка (LLM) известны своей высокой затратностью по памяти во время обучения, особенно с популярным оптимизатором AdamW. Эта нагрузка на память необходимость использования более мощных графических процессоров или уменьшения размеров пакетов, что ограничивает масштабируемость и пропускную способность обучения. Для решения этой проблемы предложены различные оптимизаторы с низким потреблением памяти, которые уменьшают использование памяти оптимизатора. Однако они сталкиваются с критическими проблемами: (i) зависимость от дорогих операций SVD; (ii) значительные компромиссы в производительности по сравнению с AdamW; и (iii) по-прежнему значительные накладные расходы по памяти оптимизатора для поддержания конкурентоспособной производительности. В этой работе мы определяем, что правило адаптации скорости обучения AdamW может быть эффективно упрощено в качестве структурированного обновления скорости обучения. Основываясь на этом выводе, мы предлагаем Приблизительное Масштабирование Градиентов для Оптимизации LLM с Низким Потреблением Памяти (APOLLO), которое приближает масштабирование скорости обучения с помощью вспомогательного состояния оптимизатора низкого ранга на основе чистой случайной проекции. Это структурированное правило обновления скорости обучения делает APOLLO очень терпимым к дальнейшему уменьшению памяти при предоставлении сопоставимой производительности предварительного обучения. Даже его вариант ранга-1, APOLLO-Mini, dостигает превосходной производительности предварительного обучения по сравнению с AdamW с затратами на память на уровне SGD. Обширные эксперименты показывают, что серия APOLLO работает на уровне или лучше, чем AdamW, при этом достигая больших savings в памяти за счет почти полного устранения состояний оптимизации AdamW. Эти сбережения обеспечивают значительные преимущества на уровне системы: (1) Увеличенная Пропускная Способность: В 3 раза больше пропускной способности на установке 8xA100-80GB по сравнению с AdamW за счет поддержки 4x больших размеров пакетов. (2) Улучшенная Масштабируемость Модели: Предварительное обучение LLaMA-13B с наивным DDP на графических процессорах A100-80GB без оптимизаций на уровне системы. (3) Дружелюбный к Низким Графическим Процессорам Предварительное обучение: Предварительное обучение LLaMA-7B на одном графическом процессоре с использованием менее 12 ГБ памяти с квантованием весов.

Оптимизация больших языковых моделей с помощью Puzzle: новый подход к ускорению вывода

Большие языковые модели (LLM) продемонстрировали выдающиеся возможности, но их внедрение ограничивается высокими вычислительными затратами во время вывода. Хотя увеличение числа параметров повышает точность, это также увеличивает разрыв между современными возможностями и практической применимостью. Мы представляем Puzzle, фреймворк для ускорения вывода LLM на конкретном оборудовании, сохраняя их возможности. Посредством инновационного применения поиска нейронной архитектуры (NAS) в беспрецедентном масштабе, Puzzle систематически оптимизирует модели с десятками миллиардов параметров в условиях аппаратных ограничений. Наш подход использует блоковую локальную дистилляцию знаний (BLD) для параллельного изучения архитектуры и применяет смешанное целочисленное программирование для точной оптимизации ограничений. Мы демонстрируем влияние нашего фреймворка в реальных условиях через Llama-3.1-Nemotron-51B-Instruct (Nemotron-51B), общедоступную модель, производную от Llama-3.1-70B-Instruct. Nemotron-51B достигает 2,17-кратного ускорения пропускной способности вывода, помещаясь на один графический процессор NVIDIA H100, сохраняя при этом 98,4% возможностей оригинальной модели. Nemotron-51B в настоящее время является самой точной языковой моделью, способной на вывод с использованием одного GPU при больших размерах пакетa. Удивительно, что для этой трансформации потребовалось всего 45 миллиардов токенов для обучения, в то время как для модели 70B использовалось более 15 триллионов токенов. Это устанавливает новую парадигму, в которой мощные модели могут быть оптимизированы для эффективного развертывания с лишь незначительным компромиссом в их возможностях, демонстрируя, что производительность вывода, а не только количество параметров, должна определять выбор модели. С выпуском Nemotron-51B и представлением фреймворка Puzzle мы предоставляем практикам немедленный доступ к современным возможностям языкового моделирования при значительно сниженными вычислительными затратами.

Эффективное использование памяти при обучении больших языковых моделей

По мере того как языковые модели становятся всё больше, растут и их словари. Это привело к непропорциональному увеличению объема памяти, используемого LLMs во время обучения, особенно в одном слое: при вычислении кросс-энтропии в функции потерь. Кросс-энтропия создает матрицу логитов с элементами для каждой пары входных токенов и элементов словаря и, для небольших моделей, потребляет на порядок больше памяти, чем остальная часть LLM вместе взятая. Мы предлагаем метод Cut Cross-Entropy (CCE), который вычисляет потери кросс-энтропии без материализации логитов для всех токенов в глобальной памяти. Вместо этого, CCE вычисляет логит только для правильного токена и оценивает log-sum-exp по всем логитам на лету. Мы реализовали специальное ядро, которое выполняет матричные умножения и редукцию log-sum-exp по словарю во флэш-памяти, делая потребление глобальной памяти для вычислений кросс-энтропии незначительным. Это имеет драматический эффект. Например, в случае модели Gemma 2 (2B), CCE снижает объем памяти, необходимый для вычисления потерь, с 24 ГБ до 1 МБ, а общее потребление памяти при обучении головы классификатора - с 28 ГБ до 1 ГБ. Для улучшения пропускной способности CCE мы используем врожденную разреженность softmax и предлагаем пропускать элементы вычисления градиента, которые имеют пренебрежимо малый вклад в градиент (то есть ниже численной точности). Эксперименты показывают, что драматическое сокращение потребления памяти достигается без ущерба для скорости обучения или сходимости.

Балансировка параллелизма конвейера с параллелизмом словаря

Параллелизм конвейера широко используется для масштабирования обучения крупных языковых моделей на базе трансформеров; различные работы были проведены для улучшения его пропускной способности и объема памяти. В данной статье мы рассматриваем часто упускаемую из виду проблему: слои словаря могут вызывать несбалансированное использование вычислительных ресурсов и памяти на различных этапах конвейера, что усугубляет проблемы с "пузырями" конвейера и узкими местами памяти. Чтобы решить эту проблему, мы равномерно распределяем слои словаря по устройствам конвейера и группируем вычисления в проходы конвейера. Для уменьшения накладных расходов на память активации мы предлагаем несколько алгоритмов для снижения барьеров коммуникации внутри слоев словаря. Кроме того, мы используем обобщенный метод для интеграции параллелизма словаря с существующими расписаниями конвейера. Сочетая эти методы, наши подходы эффективно балансируют вычисления и память параметров с небольшим постоянным накладным расходом на память активации. Особо следует отметить, что при сочетании с расписаниями, балансирующими память активаций, такими как V-Half, наш подход достигает идеального баланса как по памяти, так и по вычислениям. Обширные оценки показывают, что наш метод обеспечивает баланс вычислений и памяти независимо от размера словаря, что приводит к улучшению пропускной способности на 5% до 51% по сравнению с наивными подходами, одновременно значительно снижая пиковое использование памяти, особенно в сценариях с большим словарём. Наша реализация доступна в открытом доступе по адресу https://github.com/sail-sg/VocabularyParallelism.