Зв'язатися з нами

Штучний Інтелект

Розуміння параметрів великої мовної моделі та вимог до пам’яті: глибоке занурення

mm

опублікований

 on

Розрахунок параметрів у LLM на основі трансформатора

Великі мовні моделі (LLMs) за останні роки досягла значних успіхів. Такі моделі, як GPT-4, Gemini від Google і Claude 3, встановлюють нові стандарти можливостей і програм. Ці моделі не тільки покращують генерацію та переклад тексту, але й відкривають нові шляхи мультимодальної обробки, поєднуючи текст, зображення, аудіо та відео вхідні дані для забезпечення більш комплексних рішень ШІ.

Наприклад, GPT-4 OpenAI продемонстрував значні покращення в розумінні та створенні тексту, схожого на людину, тоді як моделі Gemini від Google чудово обробляють різноманітні типи даних, включаючи текст, зображення та аудіо, забезпечуючи більш плавну та контекстуально відповідну взаємодію. Подібним чином моделі Anthropic Claude 3 відомі своїми багатомовними можливостями та покращеною продуктивністю в завданнях ШІ.

Оскільки розробка LLM продовжує прискорюватися, розуміння тонкощів цих моделей, зокрема їхніх параметрів і вимог до пам’яті, стає вирішальним. Цей посібник має на меті демістифікувати ці аспекти, пропонуючи детальне та просте для розуміння пояснення.

Основи великих мовних моделей

Що таке великі мовні моделі?

Великі мовні моделі — це нейронні мережі, навчені на масивних наборах даних для розуміння та створення людської мови. Вони покладаються на такі архітектури, як Transformers, які використовують такі механізми, як самоувага для обробки та створення тексту.

Важливість параметрів у LLM

Параметри є основними компонентами цих моделей. Вони включають ваги та зміщення, які модель коригує під час навчання, щоб мінімізувати помилки в прогнозах. Кількість параметрів часто співвідноситься з потужністю та продуктивністю моделі, але також впливає на її вимоги до обчислень і пам’яті.

Розуміння архітектури Transformer

Трансформери-архітектура

Трансформери Архітектура

огляд

Архітектура Transformer, представлена ​​в документі Vaswani et al. «Увага — це все, що вам потрібно». (2017), став основою для багатьох LLM. Він складається з кодера та декодера, кожен з яких складається з кількох однакових рівнів.

Компоненти кодера та декодера

  • кодер: обробляє вхідну послідовність і створює контекстне представлення.
  • дешифратор: генерує вихідну послідовність, використовуючи представлення кодера та попередньо згенеровані маркери.

Ключові будівельні блоки

  1. Багатостороння увага: Дозволяє моделі зосереджуватися на різних частинах послідовності введення одночасно.
  2. Нейронні мережі прямого зв’язку: додає моделі нелінійність і складність.
  3. Нормалізація шару: стабілізує та прискорює навчання шляхом нормалізації проміжних результатів.

Розрахунок кількості параметрів

Трансформатор Навчання

Попередньо підготовлені моделі для ефективного тренування трансформера

Розрахунок параметрів у LLM на основі трансформатора

Давайте розберемо розрахунок параметрів для кожного компонента LLM на основі трансформатора. Ми будемо використовувати позначення з оригінальної статті, де d_model представляє розмірність прихованих станів моделі.

  1. Вбудований шар:
    • Параметри = vocab_size * d_model
  2. Багатостороння увага:
    • для h голови, с d_k = d_v = d_model / h:
    • Параметри = 4 * d_model^2 (для проекцій Q, K, V і вихідних даних)
  3. Мережа прямого зв'язку:
    • Параметри = 2 * d_model * d_ff + d_model + d_ff
    • де d_ff зазвичай становить 4 * d_model
  4. Нормалізація шару:
    • Параметри = 2 * d_model (для масштабу та зміщення)

Загальні параметри для одного шару трансформатора:

  • Parameters_layer = Parameters_attention + Parameters_ffn + 2 * Parameters_layernorm

Для моделі с N шари:

  • Загальні параметри = N * Parameters_layer + Parameters_embedding + Parameters_output

Приклад розрахунку

Розглянемо модель з такими характеристиками:

  • d_model = 768
  • h (кількість головок уваги) = 12
  • N (кількість шарів) = 12
  • vocab_size = 50,000
  1. Вбудований шар:
    • 50,000 * 768 = 38,400,000
  2. Багатостороння увага:
    • 4 * 768^2 = 2,359,296
  3. Мережа прямого зв'язку:
    • 2 * 768 * (4 * 768) + 768 + (4 * 768) = 4,719,616 XNUMX XNUMX
  4. Нормалізація шару:
    • 2 * 768 = 1,536

Загальна кількість параметрів на шар:

  • 2,359,296 4,719,616 2 + 1,536 7,081,984 XNUMX + (XNUMX * XNUMX XNUMX) = XNUMX XNUMX XNUMX

Загальні параметри для 12 шарів:

  • 12 * 7,081,984 = 84,983,808

Загальні параметри моделі:

  • 84,983,808 + 38,400,000 = 123,383,808

Ця модель мала б приблизно 123 мільйони параметрів.

Типи використання пам'яті

Працюючи з LLM, нам потрібно враховувати два основних типи використання пам’яті:

  1. Пам'ять моделі: Пам'ять, необхідна для збереження параметрів моделі.
  2. Робоча пам'ять: Пам’ять, необхідна під час висновків або навчання для зберігання проміжних активацій, градієнтів і станів оптимізатора.

Розрахунок пам'яті моделі

Пам'ять моделі безпосередньо пов'язана з кількістю параметрів. Кожен параметр зазвичай зберігається як 32-бітове число з плаваючою комою, хоча деякі моделі використовують навчання змішаної точності з 16-бітними числами з плаваючою комою.

Пам'ять моделі (байти) = кількість параметрів * байтів на параметр

Для нашого прикладу моделі з 123 мільйонами параметрів:

  • Пам'ять моделі (32-розрядна) = 123,383,808 4 493,535,232 * 494 байти = XNUMX XNUMX XNUMX байти ≈ XNUMX МБ
  • Пам'ять моделі (16-розрядна) = 123,383,808 2 246,767,616 * 247 байти = XNUMX XNUMX XNUMX байти ≈ XNUMX МБ

Оцінка робочої пам'яті

Вимоги до робочої пам’яті можуть значно відрізнятися залежно від конкретного завдання, розміру пакета та довжини послідовності. Приблизна оцінка робочої пам’яті під час логічного висновку така:

Робоча пам'ять ≈ 2 * Пам'ять моделі

Це враховує збереження як параметрів моделі, так і проміжних активацій. Під час навчання вимоги до пам'яті можуть бути ще вищими через необхідність зберігати градієнти та стани оптимізатора:

Тренування пам'яті ≈ 4 * Пам'ять моделі

Для нашого прикладу моделі:

  • Висновок Робоча пам'ять ≈ 2 * 494 МБ = 988 МБ ≈ 1 ГБ
  • Навчальна пам'ять ≈ 4 * 494 МБ = 1,976 МБ ≈ 2 ГБ

Стаціонарне використання пам’яті та пікове використання пам’яті

Під час навчання великих мовних моделей на основі архітектури Transformer розуміння використання пам’яті має вирішальне значення для ефективного розподілу ресурсів. Давайте розділимо вимоги до пам’яті на дві основні категорії: використання пам’яті в стаціонарному режимі та використання пам’яті в піковому режимі.

Стаціонарне використання пам'яті

Стаціонарне використання пам’яті складається з таких компонентів:

  1. Вага моделі: FP32 копії параметрів моделі, які вимагають 4N байтів, де N – кількість параметрів.
  2. Стани оптимізатора: для оптимізатора Adam це вимагає 8N байтів (2 стани на параметр).
  3. Градієнти: FP32 копії градієнтів, які потребують 4N байтів.
  4. Вхідні дані: якщо припустити, що вхідні дані int64, для цього потрібно 8BD байт, де B — розмір пакета, а D — вхідний розмір.

Загальне використання пам’яті в стаціонарному режимі може бути приблизно визначено:

  • M_steady = 16N + 8BD байт

Пікове використання пам'яті

Пікове використання пам’яті відбувається під час зворотного проходу, коли зберігаються активації для обчислення градієнта. Основними причинами пікової пам’яті є:

  1. Нормалізація шару: вимагає 4E байт на норму рівня, де E = BSH (B: розмір пакету, S: довжина послідовності, H: прихований розмір).
  2. Блок уваги:
    • Обчислення QKV: 2E байтів
    • Матриця уваги: ​​4BSS байти (S: довжина послідовності)
    • Вихід уваги: ​​2E байт
  3. Блок прямої подачі:
    • Перший лінійний рівень: 2E байти
    • Активація GELU: 8E байт
    • Другий лінійний рівень: 2E байти
  4. Перехресна ентропійна втрата:
    • Логіти: 6 BSV байтів (V: розмір словника)

Загальну пам'ять активації можна оцінити як:

  • M_act = L * (14E + 4BSS) + 6BSV байт

Де L – кількість шарів трансформатора.

Загальне пікове використання пам'яті

Пікове використання пам’яті під час тренування можна приблизно визначити, об’єднавши пам’ять у стаціонарному стані та пам’ять активації:

  • M_peak = M_steady + M_act + 4BSV байти

Додатковий термін 4BSV враховує додатковий розподіл на початку зворотного проходу.

Розуміючи ці компоненти, ми можемо оптимізувати використання пам’яті під час навчання та висновків, забезпечуючи ефективний розподіл ресурсів і покращену продуктивність великих мовних моделей.

Закони масштабування та міркування щодо ефективності

 Закони масштабування для LLM

Дослідження показали, що продуктивність LLM має тенденцію слідувати певним законам масштабування зі збільшенням кількості параметрів. Каплан та ін. (2020) помітили, що продуктивність моделі покращується як степеневий закон кількості параметрів, бюджету обчислень і розміру набору даних.

Співвідношення між продуктивністю моделі та кількістю параметрів можна наближено визначити:

Продуктивність ∝ N^α

Де N — це кількість параметрів, а α — показник масштабування, який зазвичай становить близько 0.07 для завдань моделювання мови.

Це означає, що для досягнення 10% покращення продуктивності нам потрібно збільшити кількість параметрів у 10^(1/α) ≈ 3.7.

Техніка ефективності

Оскільки магістратури продовжують рости, дослідники та практики розробили різні методи для підвищення ефективності:

a) Змішане тренування точності: використання 16-розрядних чи навіть 8-розрядних чисел з плаваючою комою для певних операцій, щоб зменшити використання пам’яті та вимоги до обчислень.

b) Паралелізм моделі: Розповсюдження моделі між кількома GPU або TPU для роботи з більшими моделями, ніж може вмістити один пристрій.

c) Контрольні точки градієнта: обмін обчисленнями на пам’ять шляхом повторного обчислення певних активацій під час зворотного проходу замість їх збереження.

d) Обрізка та квантування: Видалення менш важливих ваг або зменшення їх точності після тренування для створення менших, ефективніших моделей.

e) Вигонка: навчання менших моделей імітувати поведінку більших, потенційно зберігаючи більшу частину продуктивності з меншою кількістю параметрів.

Практичний приклад і розрахунки

GPT-3, одна з найбільших мовних моделей, має 175 мільярдів параметрів. Він використовує декодерну частину архітектури Transformer. Щоб зрозуміти його масштаб, давайте розберемо кількість параметрів за гіпотетичними значеннями:

  • d_model = 12288
  • d_ff = 4 * 12288 = 49152
  • Кількість шарів = 96

Для одного рівня декодера:

Загальна кількість параметрів = 8 * 12288^2 + 8 * 12288 * 49152 + 2 * 12288 ≈ 1.1 мільярда

Всього для 96 шарів:

1.1 мільярда * 96 = 105.6 мільярда

Решта параметрів надходять із вбудовування та інших компонентів.

Висновок

Розуміння параметрів і вимог до пам’яті великих мовних моделей має вирішальне значення для ефективного проектування, навчання та розгортання цих потужних інструментів. Розбираючи компоненти архітектури Transformer і досліджуючи практичні приклади, такі як GPT, ми отримуємо глибше розуміння складності та масштабу цих моделей.

Щоб глибше зрозуміти останні досягнення у великих мовних моделях та їх застосуванні, перегляньте ці вичерпні посібники:

Останні п’ять років я провів, занурюючись у захоплюючий світ машинного та глибокого навчання. Моя пристрасть і досвід допомогли мені внести свій внесок у понад 50 різноманітних проектів розробки програмного забезпечення, зосередивши особливу увагу на ШІ/ML. Моя постійна цікавість також привела мене до обробки природної мови, галузі, яку я хочу досліджувати далі.