Недавно исследователи из ISTA предложили новый метод квантования модели, QMoE, который может сжать SwitchTransformer с 1,6 триллионами параметров до менее чем 160 ГБ (0,8 бита на параметр) с небольшой потерей точности.
Источник изображения: Generated by Unbounded AI
Поскольку архитектура GPT-4 является «открытым исходным кодом» известных лидеров отрасли, гибридная экспертная архитектура (MoE) снова оказалась в центре внимания.
GPT-4 имеет 16 экспертных моделей с общим количеством 1,8 триллиона параметров. Каждая генерация токенов требует около 280 миллиардов параметров и 560 терафлопс
Однако цена более быстрой и точной модели — это огромное количество параметров и высокая стоимость, которая с этим связана.
Например, для эффективной работы модели SwitchTransformer-c2048 с 1,6 триллионами параметров требуется 3,2 ТБ памяти графического процессора.
Для решения этой проблемы исследователи из Австрийского технологического института (ISTA) предложили совершенно новый фреймворк сжатия и исполнения – QMoE.
Адрес:
Используя специально разработанное ядро декодирования графического процессора, QMoE имеет эффективный сквозной вывод сжатия, который может достичь до 20-кратного сжатия с небольшой потерей точности.
В частности, QMoE может сжать модель SwitchTransformer-c2048 с 1,6 триллионами параметров до менее чем 160 ГБ на одном GPU-сервере за один день, что эквивалентно всего 0,8 бита на параметр.
Это позволяет работать на 4 графических процессорах NVIDIA RTX A6000 или 8 графических процессорах NVIDIA RTX 3090 с затратами менее 5% от стоимости инференса для несжатой модели.
Квантование модели MoE
Основная идея гибридной модели (MoE) заключается в увеличении количества параметров модели для улучшения возможностей моделирования сети, сохраняя при этом вычислительные затраты почти на том же уровне по сравнению со стандартной архитектурой прямого распространения.
Поскольку для обработки каждого входного токена необходимо вызвать лишь небольшую часть сети, эта схема может использовать 100 или даже 1000 «экспертов» для создания гипермасштабируемых моделей для эффективного обучения и вывода.
Было доказано, что MoE может значительно повысить точность и скорость обучения, когда скорость вывода сопоставима. Но такой большой объем означает, что для запуска модели требуется много видеопамяти.
Основной проблемой при сжатии MoE является необходимость поддерживать большой набор активаций.
В связи с этим промежуточные данные, которые необходимо рассчитать, можно контролировать в небольшой части, тщательно организуя выполнение модели. Это разгружает основное хранилище с графического процессора на более дешевую и дорогую память процессора.
В частности, поддерживайте большой буфер B и обновите плотную часть блока Transformer следующим образом:
От CPU к GPU возьмите «образец» X, содержащий сотни токенов;
Через соответствующий плотный слой получается результат Y;
Рассчитать и хранить экспертное распределение токенов в Y;
Отправьте Y обратно в процессор и перезапишите X в B.
Для разреженных секций:
От CPU к GPU возьмите все токены в B, которые были назначены эксперту E, представленные X_E.
Используйте их для генерации сжатых экспертных E (например, с помощью GPTQ).
Запустите X_E через E', чтобы получить Y_E'.
Отправьте Y_E' обратно в процессор и перезапишите X_E в B.
Как показано на рисунке 2, этот процесс минимизирует потребление памяти и затраты на передачу: требуется только одна копия B, а каждый токен считывается и записывается только дважды в каждом блоке Transformer.
Кроме того, исследователи разработали схему кодирования и ядро CUDA для достижения сжатия менее 1 бита на вес и минимизации накладных расходов на выполнение графического процессора для логического вывода.
Эффект сжатия
Точность
Во-первых, исследователи квантовали все модели SwitchTransformer до 2-битной и троичной точности, а затем оценили их потери при валидации.
Для 128 экспертов размер калибровочной выборки по умолчанию составляет 10 КБ; Для экспертов 2048 размер калибровочной выборки по умолчанию составляет 160 КБ. В то же время исследователи также протестировали 0,5-кратные и 2-кратные размеры выборки.
Результаты показывают, что 2-значная модель может быть достигнута с минимальными потерями (1,7% относительно C2048) и небольшим увеличением потерь при троичной точности (6,7% относительно C2048) с использованием квантования, зависящего от данных.
Это не только доказывает эффективность предложенного усовершенствованного метода количественной оценки, но и показывает, что сжатие с чрезвычайно низкой шириной бита действительно подходит для крупномасштабных МОЭ.
Кроме того, исследователи оценили данные из arXiv, GitHub, StackExchange и Википедии от RedPajama.
Несмотря на то, что только <0,01 % данных калибровки поступает с этих сайтов, сжатая модель по-прежнему сохраняет почти ту же производительность, что и основное распределение.
В случае калибровочных данных увеличение размера выборки обычно немного улучшает производительность и наиболее заметно при троичном квантовании. Но есть и некоторый шум в процессе, особенно на 2 битах.
### Сжатие
В тесте исследователи учитывали как сжатие только модуля MoE, так и сжатие относительно всей модели и всех ее метаданных.
Только для MoE сжатие >16x достигается во всех масштабах, что эквивалентно 1 биту <пространства памяти для каждого параметра.
На c2048 общая степень сжатия составляет 19,81 раза, что соответствует 0,807 бита на параметр, даже включая все несжатые плотные слои, уменьшая размер контрольной точки с 3142 ГБ до 158,6 ГБ.
Кроме того, можно наблюдать, что степень сжатия увеличивается с увеличением размера модели по двум причинам:
(a) естественная разреженность увеличивается, и исследователи оптимизировали словарь кодирования для C2048;
(b) Чем крупнее слой, тем ближе к независимости весовое распределение.
### Время выполнения
Наконец, исследователи оценили время, необходимое для создания сжатой модели на одном графическом процессоре A6000 для различных объемов данных калибровки.
Результаты показывают, что модели меньшего размера могут быть сжаты менее чем за час, и даже c2048 может быть завершен менее чем за день, что подтверждает высокую эффективность QMoE.
От large128 до c2048 увеличение времени выполнения в основном пропорционально разнице в размерах, хотя в последнем используется в 16 раз больше образцов. Это связано с тем, что размер выборки на одного эксперта остается прежним, в то время как размер эксперта увеличивается незначительно.
### Результат выполнения
Во-первых, прямое (изолированное) сравнение сжатого ядра матрично-векторного произведения с (несжатым) ядром bfloat16 cuBLAS стандарта PyTorch.
На рисунке 5 (слева) показано время, необходимое MoE для обнаружения формы матрицы на двух разных графических процессорах по сравнению с ядрами bfloat16.
Несмотря на то, что исследователи использовали низкую производительность хранилища, выполнение ядра сжатия все равно заняло меньше времени, чем почти идеальный базовый уровень bfloat16. До 35% быстрее при заданной форме матрицы.
Задержка этих операций также очень низкая: наименьшая матрица занимает < 0,02 мс, а наибольшая < 0,05 мс.
Впоследствии исследователи провели сквозной бенчмарк ядра в HuggingFace с использованием фактических весов сжатой модели MoE.
Как показано на рисунке 5 (справа), сквозное выполнение сжатой модели всего на <5% медленнее, чем стандартной (несжатой) модели.
Несмотря на то, что синхронизация каждого уровня происходит быстрее, скорость все же немного снижается, поскольку кодировщик иногда направляет несколько маркеров одному и тому же эксперту.
Текущая реализация заключается в том, чтобы выполнить отдельное матричное векторное произведение для каждой лексемы, в то время как базовый план выполняет более эффективное совместное умножение матриц.
В некоторых приложениях это большое узкое место. Это можно сделать, введя в ядро цикл in-token или, в случае большого количества токенов, выполнив полную распаковку перед выполнением стандартного умножения матриц.
Обсуждение и ограничения
Подводя итог, можно сказать, что QMoE - это комплексная среда сжатия и логического вывода с открытым исходным кодом, предназначенная для решения проблемы чрезмерных накладных расходов на память в процессе логического вывода MoE.
Впервые исследователи продемонстрировали, что модель с триллионом параметров, такая как SwitchTransformer c2048, может быть точно сжата до менее чем 1 бит на параметр со степенью сжатия почти в 20 раз. Кроме того, впервые эффективное сквозное выполнение таких моделей достигается на одном GPU-сервере потребительского класса.
Однако, поскольку в открытом доступе имеется лишь небольшое количество крупномасштабных и точных МОЭ, набор изучаемых моделей ограничен.
Кроме того, из-за своего огромного размера большинство МО обучаются и развертываются в различных пользовательских фреймворках, что требует сложной ручной интеграции для дальнейших исследований.
Тем не менее, исследователи рассмотрели некоторые из самых крупных и точных MoE, в частности, SwitchTransformer.
Ресурсы:
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
8 3090, 1 день сжатия триллион параметров большая модель! 3,2 ТБ — до 160 ГБ, а коэффициент сжатия — до 20 раз
Источник статьи: New Zhiyuan
Поскольку архитектура GPT-4 является «открытым исходным кодом» известных лидеров отрасли, гибридная экспертная архитектура (MoE) снова оказалась в центре внимания.
Однако цена более быстрой и точной модели — это огромное количество параметров и высокая стоимость, которая с этим связана.
Например, для эффективной работы модели SwitchTransformer-c2048 с 1,6 триллионами параметров требуется 3,2 ТБ памяти графического процессора.
Для решения этой проблемы исследователи из Австрийского технологического института (ISTA) предложили совершенно новый фреймворк сжатия и исполнения – QMoE.
Используя специально разработанное ядро декодирования графического процессора, QMoE имеет эффективный сквозной вывод сжатия, который может достичь до 20-кратного сжатия с небольшой потерей точности.
В частности, QMoE может сжать модель SwitchTransformer-c2048 с 1,6 триллионами параметров до менее чем 160 ГБ на одном GPU-сервере за один день, что эквивалентно всего 0,8 бита на параметр.
Это позволяет работать на 4 графических процессорах NVIDIA RTX A6000 или 8 графических процессорах NVIDIA RTX 3090 с затратами менее 5% от стоимости инференса для несжатой модели.
Квантование модели MoE
Основная идея гибридной модели (MoE) заключается в увеличении количества параметров модели для улучшения возможностей моделирования сети, сохраняя при этом вычислительные затраты почти на том же уровне по сравнению со стандартной архитектурой прямого распространения.
Поскольку для обработки каждого входного токена необходимо вызвать лишь небольшую часть сети, эта схема может использовать 100 или даже 1000 «экспертов» для создания гипермасштабируемых моделей для эффективного обучения и вывода.
Было доказано, что MoE может значительно повысить точность и скорость обучения, когда скорость вывода сопоставима. Но такой большой объем означает, что для запуска модели требуется много видеопамяти.
В связи с этим промежуточные данные, которые необходимо рассчитать, можно контролировать в небольшой части, тщательно организуя выполнение модели. Это разгружает основное хранилище с графического процессора на более дешевую и дорогую память процессора.
В частности, поддерживайте большой буфер B и обновите плотную часть блока Transformer следующим образом:
От CPU к GPU возьмите «образец» X, содержащий сотни токенов;
Через соответствующий плотный слой получается результат Y;
Рассчитать и хранить экспертное распределение токенов в Y;
Отправьте Y обратно в процессор и перезапишите X в B.
От CPU к GPU возьмите все токены в B, которые были назначены эксперту E, представленные X_E.
Используйте их для генерации сжатых экспертных E (например, с помощью GPTQ).
Запустите X_E через E', чтобы получить Y_E'.
Отправьте Y_E' обратно в процессор и перезапишите X_E в B.
Как показано на рисунке 2, этот процесс минимизирует потребление памяти и затраты на передачу: требуется только одна копия B, а каждый токен считывается и записывается только дважды в каждом блоке Transformer.
Кроме того, исследователи разработали схему кодирования и ядро CUDA для достижения сжатия менее 1 бита на вес и минимизации накладных расходов на выполнение графического процессора для логического вывода.
Эффект сжатия
Точность
Во-первых, исследователи квантовали все модели SwitchTransformer до 2-битной и троичной точности, а затем оценили их потери при валидации.
Для 128 экспертов размер калибровочной выборки по умолчанию составляет 10 КБ; Для экспертов 2048 размер калибровочной выборки по умолчанию составляет 160 КБ. В то же время исследователи также протестировали 0,5-кратные и 2-кратные размеры выборки.
Результаты показывают, что 2-значная модель может быть достигнута с минимальными потерями (1,7% относительно C2048) и небольшим увеличением потерь при троичной точности (6,7% относительно C2048) с использованием квантования, зависящего от данных.
Это не только доказывает эффективность предложенного усовершенствованного метода количественной оценки, но и показывает, что сжатие с чрезвычайно низкой шириной бита действительно подходит для крупномасштабных МОЭ.
Несмотря на то, что только <0,01 % данных калибровки поступает с этих сайтов, сжатая модель по-прежнему сохраняет почти ту же производительность, что и основное распределение.
В случае калибровочных данных увеличение размера выборки обычно немного улучшает производительность и наиболее заметно при троичном квантовании. Но есть и некоторый шум в процессе, особенно на 2 битах.
В тесте исследователи учитывали как сжатие только модуля MoE, так и сжатие относительно всей модели и всех ее метаданных.
Только для MoE сжатие >16x достигается во всех масштабах, что эквивалентно 1 биту <пространства памяти для каждого параметра.
На c2048 общая степень сжатия составляет 19,81 раза, что соответствует 0,807 бита на параметр, даже включая все несжатые плотные слои, уменьшая размер контрольной точки с 3142 ГБ до 158,6 ГБ.
Кроме того, можно наблюдать, что степень сжатия увеличивается с увеличением размера модели по двум причинам:
(a) естественная разреженность увеличивается, и исследователи оптимизировали словарь кодирования для C2048;
(b) Чем крупнее слой, тем ближе к независимости весовое распределение.
Наконец, исследователи оценили время, необходимое для создания сжатой модели на одном графическом процессоре A6000 для различных объемов данных калибровки.
Результаты показывают, что модели меньшего размера могут быть сжаты менее чем за час, и даже c2048 может быть завершен менее чем за день, что подтверждает высокую эффективность QMoE.
От large128 до c2048 увеличение времени выполнения в основном пропорционально разнице в размерах, хотя в последнем используется в 16 раз больше образцов. Это связано с тем, что размер выборки на одного эксперта остается прежним, в то время как размер эксперта увеличивается незначительно.
Во-первых, прямое (изолированное) сравнение сжатого ядра матрично-векторного произведения с (несжатым) ядром bfloat16 cuBLAS стандарта PyTorch.
На рисунке 5 (слева) показано время, необходимое MoE для обнаружения формы матрицы на двух разных графических процессорах по сравнению с ядрами bfloat16.
Несмотря на то, что исследователи использовали низкую производительность хранилища, выполнение ядра сжатия все равно заняло меньше времени, чем почти идеальный базовый уровень bfloat16. До 35% быстрее при заданной форме матрицы.
Задержка этих операций также очень низкая: наименьшая матрица занимает < 0,02 мс, а наибольшая < 0,05 мс.
Как показано на рисунке 5 (справа), сквозное выполнение сжатой модели всего на <5% медленнее, чем стандартной (несжатой) модели.
Несмотря на то, что синхронизация каждого уровня происходит быстрее, скорость все же немного снижается, поскольку кодировщик иногда направляет несколько маркеров одному и тому же эксперту.
Текущая реализация заключается в том, чтобы выполнить отдельное матричное векторное произведение для каждой лексемы, в то время как базовый план выполняет более эффективное совместное умножение матриц.
В некоторых приложениях это большое узкое место. Это можно сделать, введя в ядро цикл in-token или, в случае большого количества токенов, выполнив полную распаковку перед выполнением стандартного умножения матриц.
Обсуждение и ограничения
Подводя итог, можно сказать, что QMoE - это комплексная среда сжатия и логического вывода с открытым исходным кодом, предназначенная для решения проблемы чрезмерных накладных расходов на память в процессе логического вывода MoE.
Впервые исследователи продемонстрировали, что модель с триллионом параметров, такая как SwitchTransformer c2048, может быть точно сжата до менее чем 1 бит на параметр со степенью сжатия почти в 20 раз. Кроме того, впервые эффективное сквозное выполнение таких моделей достигается на одном GPU-сервере потребительского класса.
Однако, поскольку в открытом доступе имеется лишь небольшое количество крупномасштабных и точных МОЭ, набор изучаемых моделей ограничен.
Кроме того, из-за своего огромного размера большинство МО обучаются и развертываются в различных пользовательских фреймворках, что требует сложной ручной интеграции для дальнейших исследований.
Тем не менее, исследователи рассмотрели некоторые из самых крупных и точных MoE, в частности, SwitchTransformer.
Ресурсы: