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

By
Aayush Mittal Міттал
Великі мовні моделі (LLM) досягли значних успіхів за останні роки. Моделі, такі як GPT-4, Google’s Gemini та Claude 3, встановлюють нові стандарти можливостей та застосувань. Ці моделі не тільки покращують генерацію тексту та переклад, але також розширюють межі багатозадачної обробки, поєднуючи текст, зображення, аудіо та відео-вхідні дані для надання більш комплексних рішень штучного інтелекту.
Наприклад, GPT-4 від OpenAI показав значні покращення у розумінні та генерації тексту, подібного до людського, тоді як моделі Google’s Gemini відзначаються своєю здатністю обробляти різноманітні типи даних, включаючи текст, зображення та аудіо, що дозволяє здійснювати більш безперервні та контекстно-релевантні взаємодії. Аналогічно, моделі Anthropic’s Claude 3 відомі своїми багатомовними можливостями та покращеною продуктивністю у завданнях штучного інтелекту.
Як розвиток великих мовних моделей продовжує прискорюватися, розуміння тонкостей цих моделей, особливо їхніх параметрів та вимог до пам’яті, стає все більш важливим. Цей гід має на меті роз’яснити ці аспекти, пропонуючи детальне та легко зрозуміле пояснення.
Основи великих мовних моделей
Що таке великі мовні моделі?
Великі мовні моделі – це нейронні мережі, навчені на величезних наборах даних для розуміння та генерації людської мови. Вони покладаються на архітектури, такі як Трансформери, які використовують механізми, такі як самоуваження, для обробки та генерації тексту.
Важливість параметрів у LLM
Параметри – це основні компоненти цих моделей. Вони включають ваги та зміщення, які модель регулює під час навчання для мінімізації помилок у прогнозах. Кількість параметрів часто корелює з можливостями моделі та її продуктивністю, але також впливає на обчислювальні та вимоги до пам’яті.
Розуміння архітектури Трансформера
Огляд
Архітектура Трансформера, представлена у статті “Attention Is All You Need” Васвані та ін. (2017), стала основою для багатьох великих мовних моделей. Вона складається з кодувача та декодувача, кожний з яких складається з декількох ідентичних шарів.
Компоненти кодувача та декодувача
- Кодувач: Оброблює вхідну послідовність та створює контекстно-обізнану репрезентацію.
- Декодувач: Генерує вихідну послідовність, використовуючи репрезентацію кодувача та попередньо згенеровані токени.
Ключові будівельні блоки
- Багатокрокове уваження: Дозволяє моделі одночасно зосереджуватися на різних частинах вхідної послідовності.
- Нейронні мережі з живленням вперед: Додають нелінійність та складність до моделі.
- Нормалізація шару: Стабілізує та прискорює навчання, нормалізуючи проміжні виходи.
Обчислення кількості параметрів
Обчислення параметрів у моделях Трансформера
Розберемо обчислення параметрів для кожного компонента моделі Трансформера. Ми будемо використовувати позначення з оригінальної статті, де d_model представляє розмірність прихованих станів моделі.
- Шар вкладення:
- Параметри =
vocab_size*d_model
- Параметри =
- Багатокрокове уваження:
- Для
hголів, зd_k = d_v = d_model / h: - Параметри = 4 *
d_model^2 (для Q, K, V та виходів проєкцій)
- Для
- Нейронна мережа з живленням вперед:
- Параметри = 2 *
d_model*d_ff+d_model+d_ff - Де
d_ffзазвичай 4 *d_model
- Параметри = 2 *
- Нормалізація шару:
- Параметри = 2 *
d_model(для масштабування та зміщення)
- Параметри = 2 *
Загальні параметри для одного шару Трансформера:
Parameters_layer=Parameters_attention+Parameters_ffn+ 2 *Parameters_layernorm
Для моделі з N шарами:
- Загальні параметри =
N*Parameters_layer+Parameters_embedding+Parameters_output
Приклад обчислення
Розглянемо модель з такими специфікаціями:
d_model= 768h(кількість голів уваження) = 12N(кількість шарів) = 12vocab_size= 50 000
- Шар вкладення:
- 50 000 * 768 = 38 400 000
- Багатокрокове уваження:
- 4 * 768^2 = 2 359 296
- Нейронна мережа з живленням вперед:
- 2 * 768 * (4 * 768) + 768 + (4 * 768) = 4 719 616
- Нормалізація шару:
- 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 мільйона параметрів.
Типи використання пам’яті
При роботі з великими мовними моделями нам потрібно розрізняти два основних типи використання пам’яті:
- Пам’ять моделі: Пам’ять, необхідна для зберігання параметрів моделі.
- Робоча пам’ять: Пам’ять, необхідна під час висновку або навчання для зберігання проміжних активацій, градієнтів та станів оптимізатора.
Обчислення пам’яті моделі
Пам’ять моделі безпосередньо пов’язана з кількістю параметрів. Кожен параметр зазвичай зберігається як 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 ГБ
Стійка пам’ять та пікова пам’ять
При навчанні великих мовних моделей на основі архітектури Трансформера розуміння використання пам’яті є важливим для ефективного розподілу ресурсів. Розберемо вимоги до пам’яті на дві основні категорії: стійку пам’ять та пікову пам’ять.
Стійка пам’ять
Стійка пам’ять складається з наступних компонентів:
- Ваги моделі: Копії параметрів моделі у форматі FP32, що вимагають 4N байтів, де N – кількість параметрів.
- Стани оптимізатора: Для оптимізатора Adam це вимагає 8N байтів (2 стани на параметр).
- Градієнти: Копії градієнтів у форматі FP32, що вимагають 4N байтів.
- Вхідні дані: Припускаючи вхідні дані типу int64, це вимагає 8BD байтів, де B – розмір партії, а D – розмірність вхідних даних.
Загальна стійка пам’ять можна приблизно оцінити як:
- M_steady = 16N + 8BD байти
Пікова пам’ять
Пікова пам’ять виникає під час зворотнього проходу, коли зберігаються активації для обчислення градієнтів. Основними внесками до пікової пам’яті є:
- Нормалізація шару: Вимагає 4E байтів на шар нормалізації, де E = BSH (B – розмір партії, S – довжина послідовності, H – розмірність прихованих станів).
- Блок уваження:
- Обчислення QKV: 2E байти
- Матриця уваження: 4BSS байти (S – довжина послідовності)
- Вихід уваження: 2E байти
- Блок нейронної мережі з живленням вперед:
- Перший лінійний шар: 2E байти
- Активація GELU: 8E байти
- Другий лінійний шар: 2E байти
- Функція втрат:
- Логіти: 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 = 12288d_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, ми отримуємо глибше розуміння складності та масштабу цих моделей.
Для подальшого розуміння останніх досягнень у сфері великих мовних моделей та їх застосувань перегляньте ці повні гіди:
- Дослідіть повний гід на Gemma 2: нову відкриту велику мовну модель Google для ознайомлення з її покращеною продуктивністю та інноваційними особливостями.
- Дізнайтеся про будівництво агентів LLM для RAG з нуля та далі: повний гід, який обговорює виклики та рішення у генерації з підтримкою пошукових запитів.
- Відкрийте тонкости налаштування навчання, тонкого налаштування та висновку LLM з GPU NVIDIA та CUDA (NVDA ) для оптимізації систем штучного інтелекту.
Я провів останні п'ять років, занурючись у захопливий світ машинного навчання та глибокого навчання. Моя пристрасть та експертиза привели мене до внеску у понад 50 різних проектів програмної інженерії, з особливим акцентом на AI/ML. Моя тривала цікавість також привела мене до природної обробки мови, галузі, яку я бажаю дослідити далі.
Дізнайтеся більше


Якщо бот може зафліртувати з дітьми, то що ще йому дозволено робити з вашими даними?


Як обманути відгуків AI фальшивими науковими статтями


Моделі штучного інтелекту віддають перевагу текстам, написаним людьми, над текстами, згенерованими штучним інтелектом


Революція MoE: Як розширення маршрутизації та спеціалізації трансформує великі мовні моделі


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


Чому штучний інтелект не може просто визнати, що не знає відповіді?

