Моделі та платформи ШІ

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

mm
Додайте Unite.AI до бажаних джерел у Google

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

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

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

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

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

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

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

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

Розуміння архітектури Трансформера

Transformers-architecture

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

Огляд

Архітектура Трансформера, представлена у статті “Attention Is All You Need” Васвані та ін. (2017), стала основою для багатьох великих мовних моделей. Вона складається з кодувача та декодувача, кожний з яких складається з декількох ідентичних шарів.

Компоненти кодувача та декодувача

  • Кодувач: Оброблює вхідну послідовність та створює контекстно-обізнану репрезентацію.
  • Декодувач: Генерує вихідну послідовність, використовуючи репрезентацію кодувача та попередньо згенеровані токени.

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

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

Обчислення кількості параметрів

Transformer Training

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

Обчислення параметрів у моделях Трансформера

Розберемо обчислення параметрів для кожного компонента моделі Трансформера. Ми будемо використовувати позначення з оригінальної статті, де 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
  4. Нормалізація шару:
    • 2 * 768 = 1 536

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

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

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

  • 12 * 7 081 984 = 84 983 808

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

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

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

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

При роботі з великими мовними моделями нам потрібно розрізняти два основних типи використання пам’яті:

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

Обчислення пам’яті моделі

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

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

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

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

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

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

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

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

Пам’ять навчання ≈ 4 * Пам’ять моделі

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

  • Робоча пам’ять під час висновку ≈ 2 * 494 МБ = 988 МБ ≈ 1 ГБ
  • Пам’ять навчання ≈ 4 * 494 МБ = 1 976 МБ ≈ 2 ГБ

Стійка пам’ять та пікова пам’ять

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

Стійка пам’ять

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

  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. Функція втрат:
    • Логіти: 6BSV байтів (V – розмір словника)

Загальна пам’ять активацій можна оцінити як:

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

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

Загальна пікова пам’ять

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 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 мільярдів

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

  • 105,6 мільярдів + 38,4 мільярдів = 144 мільярдів

Остальні параметри походять з вкладення та інших компонентів.

Висновок

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

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

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