Также существуют большие и маленькие модели, а их размер измеряется количеством параметров. GPT-3 имеет 175 миллиардов параметров, а Grok-1 ещё более впечатляющий — 314 миллиардов параметров. Конечно, есть и более тонкие модели, такие как Llama, число параметров которых составляет от 7 до 70 миллиардов.
Упомянутое здесь число 70B относится не к объему обучающих данных, а к плотно упакованным параметрам модели. Эти параметры подобны маленьким «клеткам мозга». Чем их больше, тем умнее может быть модель и тем лучше она может понимать сложные взаимосвязи в данных. Благодаря этим «мозговым клеткам» модель может лучше справляться с задачами.
Эти параметры большой модели подобны «архитектору» внутри модели. С помощью сложных алгоритмов и процессов обучения этот огромный языковой мир строится шаг за шагом. Каждый параметр имеет свою роль, и они работают вместе, чтобы позволить модели более точно понимать наш язык и давать более подходящие ответы.
Итак, как же составлены параметры большой модели?
Параметры большой модели — это ее «внутренние части». Каждая из этих частей имеет свое назначение, обычно включая, помимо прочего, следующие категории:
Эти параметры обычно используют четыре формата выражения и хранения:
Вообще говоря, количество параметров является основным фактором, влияющим на производительность больших моделей. Например, модель 13B-int8 в целом лучше модели 7B-BF16 той же архитектуры.
Перед инженерами стоит вопрос, сколько ресурсов памяти будет использоваться при обучении или выводе больших моделей. Хотя V100 (с 32 ГБ памяти графического процессора) или A100 (с 40 ГБ памяти графического процессора) являются мощными, однако большие модели невозможно обучать на одном графическом процессоре с помощью Tensorflow или PyTorch.
Во время обучения модели это в основном отражается на требованиях к хранению в памяти состояния модели и процесса активации. Состояние модели состоит из тензоров, состоящих из состояния оптимизатора, градиентов и параметров. В процесс активации включаются любые тензоры, созданные в прямом канале, которые необходимы для расчета градиента в обратном канале.
В любой момент обучения для каждого параметра модели всегда должно быть достаточно памяти графического процессора для хранения:
Это означает, что для хранения всего состояния модели и данных обработки во время обучения требуется следующая память:
(x+y+12 ) * model_size
На этапе вывода используется предварительно обученный LLM для выполнения таких задач, как генерация текста или перевод. Здесь требования к памяти, как правило, ниже, при этом основными влияющими факторами являются:
Память, необходимая для фазы вывода, составляет не более четверти памяти, необходимой для фазы обучения для того же количества и типа параметров. Например, для модели 7B в целом для использования точности с плавающей запятой требуется 28 ГБ памяти, для использования точности BF16 требуется 14 ГБ памяти, а для использования точности int8 требуется 7 ГБ памяти. Этот метод грубой оценки может быть соответственно применен к другим версиям модели.
Кроме того, точная настройка требует большего объема памяти при настройке LLM для конкретной задачи. Точная настройка обычно включает в себя более длительные обучающие последовательности, позволяющие уловить нюансы целевой задачи. Это приведет к увеличению количества активаций, поскольку LLM обрабатывает больше текстовых данных. Процесс обратного распространения ошибки требует хранения промежуточных значений для вычислений градиента, которые используются для обновления весов модели во время обучения. Это добавляет значительную нагрузку на память по сравнению с логическим выводом.
В частности, для большой модели на базе Трансформера попробуйте посчитать объем памяти, необходимый для обучения, где:
Здесь 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.
Учитывая требования к памяти для параметров больших моделей, мы можем дополнительно оценить количество графических процессоров, необходимых для обучения и вывода больших моделей. Однако, поскольку оценка количества графических процессоров основана на несколько большем количестве параметров, кто-то (доктор Валид Соула, https://medium.com/u/e41a20d646a8) дал простую формулу для грубой оценки, которая также имеет определенное справочное значение в инженерия.
в,
В качестве практического примера, предполагая, что используется графический процессор NVIDIA RTX 4090 с 24 ГБ видеопамяти, рассчитайте количество графических процессоров, необходимых для обучения модели «Llama3 7B», которое примерно составляет:
Общее количество графических процессоров ≈ (7*18*1,25)/24, что примерно равно 7
Для вывода его можно упростить до 1/8–1/9 этапа обучения. Конечно, это лишь приблизительные оценки в общем смысле.
Понимание состава больших параметров модели и их требований к памяти и графическому процессору может помочь глубже понять проблемы, с которыми сталкивается распределенное обучение в инженерной практике.
Реализация стратегии распределенного обучения может быть значительно упрощена за счет принятия платформы, предназначенной для распределенного обучения, такой как TensorFlow или PyTorch, которая предоставляет богатый набор инструментов и API. Используя такие методы, как накопление градиента перед обновлением модели, или такие методы, как сжатие градиента, для уменьшения объема обмена данными между узлами, можно эффективно снизить затраты на связь. Крайне важно определить оптимальный размер пакета для распределенного обучения (слишком маленькое значение параметра b может увеличить накладные расходы на связь, а слишком большое значение может привести к нехватке памяти).
Значение LLMOps становится все более важным. Регулярный мониторинг показателей производительности, настроенных для распределенного обучения, и корректировка гиперпараметров, стратегий секционирования и настроек связи для оптимизации производительности являются ключом к повышению эффективности обучения. Внедрение механизма контрольных точек для модели и эффективного восстановления в случае сбоя гарантирует продолжение процесса обучения без необходимости начинать его с нуля.
Другими словами, обучение/вывод больших моделей — это, по сути, сложная задача проектирования архитектуры распределенной системы, например:
Однако в действительности большинство инженеров могут не участвовать непосредственно в конкретной работе по обучению, а сосредоточиться на том, как параметры большой модели можно использовать при построении приложений.
Понимание большого приложения модели из парадигмы программирования,То есть программирование для Промптиз,Вы можете обратиться к соответствующим текстам, таким как《Интерпретация оперативного инжиниринга》и《Агент используется в оперативных проектах》а также《Советы по 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. Наконец, этот отфильтрованный набор перенормируется и используется в последующем процессе выборки.
В инженерной практике имеет смысл разбираться в параметрах больших моделей. Параметры играют решающую роль в больших моделях. Они определяют поведение, производительность, затраты на реализацию и требования к ресурсам больших моделей. Понимание параметров большой модели в инженерии означает понимание взаимосвязи между сложностью, производительностью и возможностями модели. Правильная настройка и оптимизация этих параметров с точки зрения хранения и вычислений позволяет лучше выбирать и оптимизировать модели для практических приложений, чтобы адаптироваться к различным требованиям задач и ограничениям ресурсов.
【Ссылка】