7Б? 13Б? 175Б? Интерпретация параметров больших моделей
7Б? 13Б? 175Б? Интерпретация параметров больших моделей

Также существуют большие и маленькие модели, а их размер измеряется количеством параметров. GPT-3 имеет 175 миллиардов параметров, а Grok-1 ещё более впечатляющий — 314 миллиардов параметров. Конечно, есть и более тонкие модели, такие как Llama, число параметров которых составляет от 7 до 70 миллиардов.

Упомянутое здесь число 70B относится не к объему обучающих данных, а к плотно упакованным параметрам модели. Эти параметры подобны маленьким «клеткам мозга». Чем их больше, тем умнее может быть модель и тем лучше она может понимать сложные взаимосвязи в данных. Благодаря этим «мозговым клеткам» модель может лучше справляться с задачами.

Эти параметры большой модели подобны «архитектору» внутри модели. С помощью сложных алгоритмов и процессов обучения этот огромный языковой мир строится шаг за шагом. Каждый параметр имеет свою роль, и они работают вместе, чтобы позволить модели более точно понимать наш язык и давать более подходящие ответы.

Итак, как же составлены параметры большой модели?

1. Параметры больших моделей

Параметры большой модели — это ее «внутренние части». Каждая из этих частей имеет свое назначение, обычно включая, помимо прочего, следующие категории:

  • Веса: Веса подобны «проводам» в нейронной сети, соединяющим каждый нейрон. Они отвечают за регулировку «громкости» передачи сигнала, позволяя важной информации передаваться дальше, а менее важной — тише. Например, в полностью связном слое весовая матрица W представляет собой «карту», ​​которая сообщает нам, какие входные объекты наиболее тесно связаны с выходными объектами.
  • Предвзятости. Предвзятости подобны «маленьким помощникам» нейронов, отвечающим за установку базовой линии реакции нейрона. С его помощью нейроны знают, на каком уровне им следует быть активными.
  • Параметры механизма внимания (Attention Параметры): В Трансформере, основанном на зз Модель, эти параметры подобны «компасу», сообщающему Модели, какая информация наиболее ценна. на. Они включают в себя матрицы запросов, матрицы ключей, матрицы значений и т. д., которые подобны поиску наиболее важных «подсказок» в большом объеме информации.
  • Матрица встраивания (Вложение Matrices):обработка текстаданныечас,Матрица встраивания – это «словарь Модельиз». Каждый столбец представляет словарь,Обозначьте это слово числом. так,Модель может понять смысл текста из.
  • Параметры начального скрытого состояния: эти параметры используются для установки начального скрытого состояния модели.,Это как задать тон модели.,Дайте ему знать, с чего начать «думать».
  • ......

Эти параметры обычно используют четыре формата выражения и хранения:

  1. Float: 32-битное число с плавающей запятой, то есть 4 байта.
  2. Half/BF16: 16-битное число с плавающей запятой, т.е. 2 байта.
  3. Int8: 8-битное целое число, т.е. 1 байт.
  4. Int4: 4-битное целое число, 0,5 байта.

Вообще говоря, количество параметров является основным фактором, влияющим на производительность больших моделей. Например, модель 13B-int8 в целом лучше модели 7B-BF16 той же архитектуры.

2. Требования к памяти для больших параметров модели

Перед инженерами стоит вопрос, сколько ресурсов памяти будет использоваться при обучении или выводе больших моделей. Хотя V100 (с 32 ГБ памяти графического процессора) или A100 (с 40 ГБ памяти графического процессора) являются мощными, однако большие модели невозможно обучать на одном графическом процессоре с помощью Tensorflow или PyTorch.

2.1 Требования к памяти на этапе обучения

Во время обучения модели это в основном отражается на требованиях к хранению в памяти состояния модели и процесса активации. Состояние модели состоит из тензоров, состоящих из состояния оптимизатора, градиентов и параметров. В процесс активации включаются любые тензоры, созданные в прямом канале, которые необходимы для расчета градиента в обратном канале.

В любой момент обучения для каждого параметра модели всегда должно быть достаточно памяти графического процессора для хранения:

  • Копия параметра модели из байта номера x
  • Количество байтов, скопированных градиентом y
  • Статус оптимизатора обычно составляет 12 байт, который в основном представляет собой копию параметров, дисперсии и т. д. Весь статус оптимизатора будет сохранен в FP32, чтобы обеспечить стабильное обучение и избежать числовых аномалий.

Это означает, что для хранения всего состояния модели и данных обработки во время обучения требуется следующая память:

(x+y+12 ) * model_size

2.2 Требования к памяти на этапе вывода

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

  • Ограниченный контекст: вывод обычно имеет дело с более короткими входными последовательностями.,Требует меньше памяти для хранения, связанного с меньшим количеством текстовых блоков при активации.
  • Без обратного распространения ошибки: Во время заключения LLM Нет необходимости сохранять промежуточные значения посредством обратного распространения ошибки — метода корректировки параметров во время обучения. Это устраняет множество накладных расходов.

Память, необходимая для фазы вывода, составляет не более четверти памяти, необходимой для фазы обучения для того же количества и типа параметров. Например, для модели 7B в целом для использования точности с плавающей запятой требуется 28 ГБ памяти, для использования точности BF16 требуется 14 ГБ памяти, а для использования точности int8 требуется 7 ГБ памяти. Этот метод грубой оценки может быть соответственно применен к другим версиям модели.

Кроме того, точная настройка требует большего объема памяти при настройке LLM для конкретной задачи. Точная настройка обычно включает в себя более длительные обучающие последовательности, позволяющие уловить нюансы целевой задачи. Это приведет к увеличению количества активаций, поскольку LLM обрабатывает больше текстовых данных. Процесс обратного распространения ошибки требует хранения промежуточных значений для вычислений градиента, которые используются для обновления весов модели во время обучения. Это добавляет значительную нагрузку на память по сравнению с логическим выводом.

2.3 Оценка памяти больших моделей на основе Transformer

В частности, для большой модели на базе Трансформера попробуйте посчитать объем памяти, необходимый для обучения, где:

  • l: количество слоев трансформатора
  • а: количество голов внимания
  • б: размер партии
  • s:длина последовательности
  • h:Размеры скрытых слоевразмер
  • p:Точность

Здесь bshp = b * s * h * p представляет размер входных данных. В линейной части трансформатора для последующих активаций необходимо примерно 9bshp+bsh пространства. В части внимания самовнимание может выражаться как:

softmax((XQ)(XK)^T)XV

Тогда XQ, XK и XV требуют пространства размером bshp. В стандартном самообслуживании результатом умножения (XQ)*(XK)^T является просто матрица b*s*s, содержащая логит. Однако на практике из-за использования многоголовочного механизма внимания для каждой головки необходимо создавать отдельное место хранения с*с. Это означает, что требуются байты abssp, а для хранения вывода softmax также требуются байты abssp. После softmax для хранения маски обычно требуются дополнительные байты abss, поэтому для части внимания требуется 2abssp+abss места для хранения.

Кроме того, в трансформаторе есть два слоя Норм, каждый из которых по-прежнему требует места для хранения бшп, всего 2 бшп.

Таким образом, объем памяти, необходимый для обучения большой модели на основе Transformer, составляет примерно:

L(9bshp+bsh+2abssp+abss +2bshp) = Lbshp[16+2/p+(as/h)(2+1/p)]

Чтобы объяснить, объем памяти, необходимый для обучения большой модели на основе Transformer, составляет примерно:

Количество слоев модели x Размер обучающего пакета x Длина последовательности x Размерность скрытого слоя x Точность x Целое число больше 16

Это может быть теоретическая нижняя граница требований к памяти для больших параметров модели во время обучения на основе Transfromer.

3. Требования к графическому процессору для больших параметров модели

Учитывая требования к памяти для параметров больших моделей, мы можем дополнительно оценить количество графических процессоров, необходимых для обучения и вывода больших моделей. Однако, поскольку оценка количества графических процессоров основана на несколько большем количестве параметров, кто-то (доктор Валид Соула, https://medium.com/u/e41a20d646a8) дал простую формулу для грубой оценки, которая также имеет определенное справочное значение в инженерия.

в,

  • Параметры модели в миллиардах указаны в единицах B из Модель параметров количество;
  • 18 – коэффициент занятости различных компонентов при обучении;
  • 1,25 представляет коэффициент изпамятиколичества, необходимый для процесса активации, который изменяется по мере того, как Модель обрабатывает входные данные из динамической структуры данных.
  • GPU Size in ГБ доступны GPU Память Общая сумма

В качестве практического примера, предполагая, что используется графический процессор NVIDIA RTX 4090 с 24 ГБ видеопамяти, рассчитайте количество графических процессоров, необходимых для обучения модели «Llama3 7B», которое примерно составляет:

Общее количество графических процессоров ≈ (7*18*1,25)/24, что примерно равно 7

Для вывода его можно упростить до 1/8–1/9 этапа обучения. Конечно, это лишь приблизительные оценки в общем смысле.

4. От больших параметров модели к распределенному обучению

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

Реализация стратегии распределенного обучения может быть значительно упрощена за счет принятия платформы, предназначенной для распределенного обучения, такой как TensorFlow или PyTorch, которая предоставляет богатый набор инструментов и API. Используя такие методы, как накопление градиента перед обновлением модели, или такие методы, как сжатие градиента, для уменьшения объема обмена данными между узлами, можно эффективно снизить затраты на связь. Крайне важно определить оптимальный размер пакета для распределенного обучения (слишком маленькое значение параметра b может увеличить накладные расходы на связь, а слишком большое значение может привести к нехватке памяти).

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

Другими словами, обучение/вывод больших моделей — это, по сути, сложная задача проектирования архитектуры распределенной системы, например:

  • Накладные расходы на связь: при выполнении вычислений градиента и обновлении данных.,Время, необходимое для связи, может повлиять на общий эффект ускорения.
  • Сложность синхронизации. Когда несколько машин обучаются параллельно, необходимо тщательно продумать сложность синхронизации.
  • Отказоустойчивость и управление ресурсами: влияние единой точки отказа на обучение и вывод моделей, а также на распределение ресурсов ЦП и графических процессоров и стратегии планирования.
  • ......

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

5. Параметры, используемые в приложениях для больших моделей.

Понимание большого приложения модели из парадигмы программирования,То есть программирование для Промптиз,Вы можете обратиться к соответствующим текстам, таким как《Интерпретация оперативного инжиниринга》и《Агент используется в оперативных проектах》а также《Советы по 10 шаблонам проектирования в инженерии》。

Основное внимание здесь уделяется трем параметрам, которые можно настроить при использовании большой модели для вывода текста: температура, Top-K и Top-P.

Параметр «Температура» часто неправильно понимается как переключатель, который контролирует только креативность модели, но на самом деле его более глубокая роль заключается в настройке «мягкости» распределения вероятностей. Когда значение температуры установлено выше, распределение вероятностей становится более мягким и равномерным, что побуждает модель генерировать более разнообразные и творческие результаты. И наоборот, более низкие значения температуры сделают распределение более резким и будут иметь более очевидные пики, что приведет к получению результатов, аналогичных обучающим данным.

Параметр Top-K используется для ограничения вывода модели наиболее вероятных токенов Top-K на каждом этапе. Таким образом, можно уменьшить бессвязное или бессмысленное содержимое выходных данных. Эта стратегия создает баланс между поддержанием максимально возможной согласованности результатов и обеспечением определенной степени творческой выборки.

Top-P — это еще один метод декодирования, который выбирает минимальный набор слов с кумулятивной вероятностью, превышающей значение P, в качестве выходных данных на основе заданного значения P (0≤P≤1). Этот метод позволяет динамически увеличивать или уменьшать количество выбранных слов в зависимости от распределения вероятностей следующего слова. В частности, когда значение P равно 1, Top-P выберет все слова, что эквивалентно выборке из всего распределения, тем самым создавая более разнообразный результат, тогда как когда значение P равно 0, Top-P выбирает только слова; с наибольшей вероятностью, аналогично жадному декодированию, делает вывод более целенаправленным и последовательным.

Эти три параметра работают вместе и влияют на поведение модели. Например, при настройке температуры=0,8, Top-K=36 и Top-P=0,7 модель сначала вычисляет полное ненормализованное логарифмическое распределение вероятностей всего словаря на основе контекста. Температура = 0,8 означает, что каждая логарифмическая вероятность делится на 0,8, что эффективно повышает уверенность модели в своих прогнозах до нормализации. Top-K=36 означает выбор 36 маркеров с наибольшей пропорциональной логарифмической вероятностью частоты. Затем Top-P=0,7 применяет фильтрацию в этом наборе Top-K=36, сохраняя сортировку от высокой вероятности к низкой до тех пор, пока совокупная вероятность не достигнет 0,7. Наконец, этот отфильтрованный набор перенормируется и используется в последующем процессе выборки.

6. Резюме

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

【Ссылка】

  • ZeRO: Memory Optimizations Toward Training Trillion Parameter Models ,https://arxiv.org/pdf/1910.02054v3.pdf
  • Reducing Activation Recomputation in Large Transformer Models,https://arxiv.org/pdf/2205.05198.pdf
  • https://timdettmers.com/2023/01/30/which-gpu-for-deep-learning/
  • https://blog.eleuther.ai/transformer-math/
boy illustration
Разрешение циклических зависимостей Spring Bean: существует ли неразрешимая циклическая ссылка?
boy illustration
Разница между промежуточным программным обеспечением ASP.NET Core и фильтрами
boy illustration
[Серия Foolish Old Man] Ноябрь 2023 г. Специальная тема Winform Control Элемент управления DataGridView Подробное объяснение
boy illustration
.NET Как загрузить файлы через HttpWebRequest
boy illustration
[Веселый проект Docker] Обновленная версия 2023 года! Создайте эксклюзивный инструмент управления паролями за 10 минут — Vaultwarden
boy illustration
Высокопроизводительная библиотека бревен Golang zap + компонент для резки бревен лесоруба подробное объяснение
boy illustration
Концепция и использование Springboot ConstraintValidator
boy illustration
Новые функции Go 1.23: точная настройка основных библиотек, таких как срезы и синхронизация, значительно улучшающая процесс разработки.
boy illustration
[Весна] Введение и базовое использование AOP в Spring, SpringBoot использует AOP.
boy illustration
Чтобы начать работу с рабочим процессом Flowable, этой статьи достаточно.
boy illustration
Байтовое интервью: как решить проблему с задержкой сообщений MQ?
boy illustration
ASP.NET Core использует функциональные переключатели для управления реализацией доступа по маршрутизации.
boy illustration
[Проблема] Решение Невозможно подключиться к Redis; вложенное исключение — io.lettuce.core.RedisConnectionException.
boy illustration
От теории к практике: проектирование чистой архитектуры в проектах Go
boy illustration
Решение проблемы искажения китайских символов при чтении файлов Net Core.
boy illustration
Реализация легких независимых конвейеров с использованием Brighter
boy illustration
Как удалить и вернуть указанную пару ключ-значение из ассоциативного массива в PHP
boy illustration
Feiniu fnos использует Docker для развертывания учебного пособия по AList
boy illustration
Принципы и практика использования многопоточности в различных версиях .NET.
boy illustration
Как использовать PaddleOCRSharp в рамках .NET
boy illustration
CRUD используется уже два или три года. Как читать исходный код Spring?
boy illustration
Устраните проблему совместимости между версией Spring Boot и Gradle Java: возникла проблема при настройке корневого проекта «demo1» > Не удалось.
boy illustration
Научите вас шаг за шагом, как настроить Nginx.
boy illustration
Это руководство — все, что вам нужно для руководства по автономному развертыванию сервера для проектов Python уровня няни (рекомендуемый сборник).
boy illustration
Не удалось запустить docker.service — Подробное объяснение идеального решения ️
boy illustration
Настройка файлового сервера Samba в системе Linux Centos. Анализ NetBIOS (супер подробно)
boy illustration
Как настроить метод ssh в Git, как получить и отправить код через метод ssh
boy illustration
RasaGpt — платформа чат-ботов на основе Rasa и LLM.
boy illustration
Nomic Embed: воспроизводимая модель внедрения SOTA с открытым исходным кодом.
boy illustration
Улучшение YOLOv8: EMA основана на эффективном многомасштабном внимании, основанном на межпространственном обучении, и эффект лучше, чем у ECA, CBAM и CA. Малые цели имеют очевидные преимущества | ICASSP2023