Збільшення розміру мовних моделей було однією з найбільших тенденцій в обробці природної мови (NLP) за останні роки. З 2018 року ми спостерігаємо безпрецедентну розробку та розгортання все більших мовних моделей, включаючи BERT та його варіанти, GPT-2, T-NLG та GPT-3 (175 мільярдів параметрів).
Ці моделі розсунули межі можливих архітектурних інновацій. Ми стикаємося з кількома проблемами під час навчання широкомасштабних моделей глибокого навчання, особливо нової хвилі генеративних попередньо навчених трансформаторів. Ці проблеми включають апаратні обмеження та компроміси з обчисленнями та ефективністю. Щоб подолати ці проблеми паралельності моделей і даних, AWS пропонує широкий спектр можливостей.
У цій публікації ми представляємо два основних підходи: розпаралелювання даних і використання моделі Amazon SageMaker, та обговорити їхні плюси та мінуси.
Модель
Для мовної моделі ми використовуємо трансформатори, представлені в статті Увага – це все, що вам потрібно. Трансформатори — це моделі глибокого навчання, розроблені, щоб свідомо уникати підводних каменів RNN, покладаючись на механізм самоуваги, щоб створити глобальні залежності між входом і виходом. Архітектура моделі Transformer дозволяє значно краще розпаралелювати і може досягти високої продуктивності за відносно короткий час навчання. Створений на основі успіху Transformers, BERT, представлений у статті BERT: Попередня підготовка глибоких двонаправлених трансформаторів для розуміння мови, додано двонаправлене попереднє навчання для мовного представлення. Натхненний завданням Cloze, BERT попередньо навчається моделюванню маскованої мови (MLM), за допомогою якого модель вчиться відновлювати оригінальні слова для випадково замаскованих маркерів. Модель BERT також попередньо підготовлена до виконання завдання передбачення наступного речення (NSP), щоб передбачити, чи два речення знаходяться в правильному порядку читання. З моменту його появи в 2018 році BERT і його варіації широко використовувалися в мовних моделях.
Ми починаємо зі створення двох шарів вбудовування для маркерного та позиційного вбудовування. Вхідні вбудовування є сумою вбудовування токенів і вбудовування позиції.
Потім ми визначаємо блок декодера трансформатора з двома підрівнями: шаром самоуваги з кількома головками та простою повністю підключеною мережею з прямим зв’язком з наступною нормалізацією рівня та випаданням:
Нарешті, ми створюємо нашу мовну модель з попереднім шаром вбудовування та блоками трансформатора:
Залежно від ваших гіперпараметрів ви можете масштабувати цю модель від тисяч параметрів до мільярдів параметрів. Основна проблема з моделями з мільярдними параметрами полягає в тому, що ви не можете розмістити модель в одному екземплярі, і вам потрібно розподілити модель на кілька вузлів для навчання та висновку.
Набір даних
У наших експериментах ми використовували Набір даних купи. The Pile — це набір текстових даних англійською мовою об’ємом 800 ГіБ, призначений для навчання великомасштабних мовних моделей. Він створений із 22 різноманітних високоякісних наборів даних, включаючи як усталені набори даних НЛП, так і нещодавно введені.
Набір даних створюється з різних джерел даних, включаючи книги; репозиторії GitHub; веб-сторінки; журнали чатів; і медичні, фізичні, математичні, інформатичні та філософські роботи. Зокрема, він використовує такі джерела: Pile-CC, PubMed Central, ArXiv, GitHub, FreeLaw Project, Stack Exchange, Бюро патентів і товарних знаків США, PubMed, Ubuntu, IRC, HackerNews, YouTube, PhilPapers, Books3, Project Gutenberg ( PG-19), OpenSubtitles, англійська Вікіпедія, DM Mathematics, EuroParl, корпус Enron Emails і NIH ExPorter. Він також включає OpenWebText2 і BookCorpus2, які є розширеннями оригінальних наборів даних OpenWebText і BookCorpus відповідно. Різноманітність джерел даних може покращити загальні міждоменні знання і, отже, покращити можливості подальшого узагальнення.
Основною проблемою з цим набором даних є самий розмір; набір даних містить 825 ГіБ тексту, що перетворюється на 4.2 ТБ попередньо оброблених і стиснених точок даних. Подібно до проблем, з якими ми стикаємося під час навчання та розміщення моделей, навчання моделі з цим набором даних на одному екземплярі займе багато часу і непрактично.
Наше рішення полягає в тому, щоб розбити набір даних на блоки даних приблизно по 1 гіБ, завантажити та попередньо обробити функції в Набір даних TensorFlow об’єкти та зберігати їх у Служба файлів Amazon Elastic (Amazon EFS). Набори даних TensorFlow забезпечують простий у використанні та високопродуктивний конвеєр даних, який добре інтегрується з нашими моделями. Amazon EFS — це проста у використанні служба, яка дозволяє нам створити спільну файлову систему, яка автоматично масштабується в міру додавання та видалення файлів. Крім того, Amazon EFS здатний підвищити пропускну здатність, коли це необхідно, що є критичним для наших даних і процесу навчання моделей.
Далі ми розглянемо стратегії розподіленого навчання для вирішення цих проблем.
Розподілене навчання
У цьому проекті ми зіткнулися з двома проблемами: масштабування розміру моделі та обсягу даних. Збільшення розміру моделі та кількості параметрів, які можна навчати, може призвести до кращої точності, але існує обмеження для моделі, яку ви можете вмістити в одну пам’ять графічного процесора або навіть кілька графічних процесорів в одному екземплярі. Крім того, більші розміри моделі займають більше часу на навчання.
Ви можете вирішити ці проблеми двома різними способами: паралельність даних і паралельність моделі. Завдяки паралелізму даних ми виконуємо стохастичний градієнтний спуск (SGD), розподіляючи записи міні-пакету між різними пристроями, щоб прискорити навчання. Однак паралельне навчання даних супроводжується додатковою складністю обчислення середнього градієнта міні-партії з градієнтами з усіх пристроїв, крок, який називається AllReduce
, що стає важчим у міру зростання навчального кластера. Використовуючи паралелізм даних, ми повинні мати можливість вмістити модель і одну точку даних в пристрій (ЦП або графічний процесор), що є обмежуючим фактором у наших експериментах, оскільки розмір такої великої моделі набагато більше, ніж пам’ять окремого графічного процесора. розмір.
Іншим рішенням є використання паралельності моделі, що розбиває модель на кілька пристроїв. Паралелізм моделі — це процес поділу моделі між кількома пристроями або вузлами (наприклад, екземпляри з GPU) і створення ефективного конвеєра для навчання моделі на цих пристроях для максимального використання GPU.
Паралелізація даних
Паралелізація даних є найпоширенішим підходом до кількох графічних процесорів або розподіленого навчання. Ви можете групувати свої дані, надсилати їх на кілька пристроїв (на кожному розміщено репліковану модель), а потім об’єднувати результати. Ми експериментували з двома пакетами для розпаралелювання даних: Horovod і the Паралельна бібліотека розподілених даних SageMaker.
Horovod — це розподілений навчальний фреймворк глибокого навчання для TensorFlow, Keras, PyTorch і Apache MXNet. Щоб використовувати Horovod, ми пройшли наступний процес:
- Ініціалізація за допомогою запуску
hvd.init()
. - Пов’яжіть кожен пристрій з одним процесом. Перший процес або обробник пов’язаний з першим пристроєм, другий процес пов’язаний з другим пристроєм і так далі.
- Налаштуйте швидкість навчання залежно від кількості пристроїв.
- Загорніть оптимізатор
hvd.DistributedOptimizer
. - Передайте початкові стани змінної від першого працівника з рангом 0 на всі інші процеси. Це необхідно для забезпечення послідовної ініціалізації всіх працівників, коли навчання починається з випадковими вагами або відновлюється з контрольної точки.
- Переконайтеся, що лише пристрій 0 може зберігати контрольні точки, щоб інші працівники не пошкодили їх.
Нижче наведено сценарій навчання:
Паралельна бібліотека даних SageMaker дозволяє нам масштабувати наше навчання з майже лінійною ефективністю, прискорюючи навчання з мінімальними змінами коду. Бібліотека виконує на замовлення AllReduce
роботу та оптимізує зв’язок між пристроями, повністю використовуючи мережеву інфраструктуру AWS і Обчислювальна хмара Amazon Elastic Топологія екземпляра (Amazon EC2). Щоб використовувати паралельну бібліотеку даних SageMaker, ми пройшли наступний процес:
- Імпорт та ініціалізація
sdp.init()
. - Пов’яжіть кожен пристрій з одним
smdistributed.dataparallel
процес зlocal_rank
.sdp.tensorflow.local_rank()
дає нам локальний ранг пристроїв. Лідер — ранг 0, а робітники — 1, 2, 3 і так далі. - Налаштуйте швидкість навчання залежно від кількості пристроїв.
- Оберніть
tf.GradientTape
зDistributedGradientTape
для виконанняAllReduce
. - Трансляція вихідних змінних моделі від провідного вузла до всіх робочих вузлів.
- Переконайтеся, що лише пристрій 0 може зберігати контрольні точки.
Паралелізація моделі
Ми можемо налаштувати гіперпараметри, щоб модель залишалася достатньо маленькою для навчання за допомогою одного графічного процесора, або ми можемо використовувати паралелізм моделі, щоб розділити модель між кількома графічними процесорами в кількох екземплярах. Збільшення кількості параметрів моделі, які можна навчати, може призвести до кращої точності, але існує обмеження на максимальний розмір моделі, який можна вмістити в одну пам’ять графічного процесора. Ми використовували паралельну бібліотеку розподілених моделей SageMaker для навчання наших більших моделей. Дії такі:
- Імпортуйте та ініціалізуйте бібліотеку за допомогою
smp.init()
. - Модель Keras має успадковуватися від smp.DistributedModel замість класу Keras Model.
- Установка
drop_remainder=True
вtf.Dataset.batch()
метод, який гарантує, що розмір партії завжди ділиться на кількість мікропартій. - Усі випадкові операції в конвеєрі даних мають використовувати одне і те ж насіння:
smp.dp_rank()
Наприклад,shuffle(ds, seed=smp.dp_rank())
. Це забезпечує узгодженість вибірок даних на пристроях, які містять різні розділи моделі. - Логіка прямого і зворотного зв’язку має бути в покроковій функції
smp.step
прикраса. - Виконуйте постобробку вихідних даних у мікропакетах за допомогою методів StepOutput, таких як
reduce_mean
,smp.step
функція повинна мати значення, що повертається, що залежить від результатуsmp.DistributedModel
.
Сценарій навчання такий:
Щоб отримати докладний посібник з увімкнення сценарію навчання TensorFlow для паралельної бібліотеки розподіленої моделі SageMaker, див. Змініть навчальний скрипт TensorFlow. Для PyTorch див Змініть навчальний скрипт PyTorch.
Налагоджувач SageMaker
У попередніх розділах ми обговорювали, як оптимізувати навчання за допомогою методів розпаралелювання моделей і даних. З Налагоджувач Amazon SageMaker, тепер ми можемо отримувати інформацію про профілювання ефективності з наших навчальних запусків, щоб визначити, наскільки навчання покращилося. За замовчуванням Debugger фіксує системні показники для кожного навчального завдання SageMaker, наприклад графічного процесора, використання ЦП, пам’яті, мережі та вводу-виводу, з інтервалом вибірки 500 мілісекунд. Ми можемо отримати доступ до даних наступним чином:
Налагоджувач надає утиліти для візуалізувати дані профілювання різними способами. У наступному прикладі ми бачимо загальне використання GPU та CPU, а також час очікування введення-виводу для навчального завдання з кількома GPU за допомогою Horovod. Щоб створити ці графіки, ми запускаємо наступний код:
Використання графічного процесора часто коливається в межах 0–100%, а високий час очікування введення-виводу з низьким використанням графічного процесора є показником вузького місця введення-виводу. Крім того, загальне використання ЦП ніколи не перевищує 70%, що означає, що ми можемо покращити попередню обробку даних, збільшуючи кількість робочих процесів.
Ми можемо підвищити продуктивність, перейшовши з Horovod на паралельну бібліотеку розподілених даних SageMaker. На наступних графіках ми бачимо, що графічні процесори використовуються ефективніше і лише протягом короткого періоду часу падають до низького рівня.
Навчальна інфраструктура
Для навчання моделей ми використали 10 екземплярів ml.p3.16xlarge за допомогою навчального завдання SageMaker. SageMaker скорочує час і витрати на навчання та налаштування моделей машинного навчання (ML) без необхідності керувати інфраструктурою. За допомогою SageMaker ви можете легко навчати й налаштовувати моделі ML за допомогою вбудованих інструментів для керування та відстеження навчальних експериментів, автоматичного вибору оптимальних гіперпараметрів, налагодження навчальних завдань та моніторингу використання системних ресурсів, таких як графічні процесори, центральні процесори та пропускна здатність мережі. Дані були розміщені в Amazon EFS, що дозволило нам розширюватися та зменшуватися, коли ми додаємо та видаляємо файли, не потребуючи керування чи надання. Наші основні цілі полягали в тому, щоб підвищити швидкість навчання та зменшити витрати.
Масштабованість моделі
Хоча ця інфраструктура в основному використовується для генерації мов, з архітектурою GPT і набором даних Pile ви можете використовувати ці методи для навчання великомасштабних моделей трансформаторів, що корисно в багатьох областях за межами NLP. У самому машинному навчанні багато завдань комп’ютерного зору тепер вирішуються за допомогою архітектур з великими параметрами (трансформаторів), де було показано, що вони перевершують традиційні CNN (згорткові нейронні мережі) у таких завданнях, як навчання репрезентації (див. Покращення сучасного рівня комп’ютерного зору за допомогою трансформаторів з самоконтролем та 10-кратного більш ефективного навчання) і великомасштабне відображення зображень у текст (наприклад CLIP). Моделі з великими параметрами також відкривають нові шляхи в науках про життя в таких галузях, як аналіз структури білка та аналіз даних медичних зображень.
Рішення, які ми докладно розповідаємо в цій публікації для розподіленого навчання та керування великими моделями, також мають застосовуватися до моделей у будь-якій із цих областей.
Компроміси
У дослідницькому співтоваристві тривають дискусії щодо ризиків навчання широкомасштабних мовних моделей, а також про те, чи достатньо міркувань було приділено потенційним ризикам, пов’язаним з їх розробкою, і стратегіям для пом’якшення цих ризиків, деякі з яких включають фінансові та екологічні витрати. За словами а папір Опубліковано в ACM, навчання однієї базової моделі BERT (без налаштування гіперпараметрів) на графічних процесорах вимагало стільки ж енергії, скільки й трансамериканський політ. Вплив на навколишнє середовище масштабується відповідно до розміру моделі, а можливість ефективно налаштувати такі моделі може потенційно значно скоротити викиди. AWS нещодавно запустила нову Інструмент вуглецевого сліду клієнта, доступний для всіх клієнтів AWS безкоштовно, як частина зусиль Amazon щодо підвищення стійкості та зменшення викидів вуглецю. Запуск додатків у хмарі AWS може потенційно знизити вуглецевий слід (у порівнянні з корпоративними центрами обробки даних, які були опитані в звіт 2019).
Висновок
У цій публікації продемонстровано рішення, яке полегшує тонке налаштування мовних моделей з мільярдом параметрів у хмарі AWS за допомогою SageMaker.
Додаткову інформацію про паралелізм моделі з SageMaker див Навчайте 175+ мільярдів моделей НЛП з параметрами з додаванням паралельних моделей і обнімаючим обличчям на Amazon SageMaker та Як Latent Space використовувала бібліотеку паралелізму моделі Amazon SageMaker, щоб розширити кордони великомасштабних трансформаторів.
Якщо ви бажаєте допомогти прискорити використання ML у своїх продуктах і процесах, зверніться до Лабораторія рішень Amazon ML.
Про авторів
Сіа Голамі є старшим спеціалістом із обробки даних у Amazon ML Solutions Lab, де він створює рішення AI/ML для клієнтів у різних галузях. Він захоплений обробкою природної мови (НЛП) і глибоким навчанням. Поза роботою Сія любить проводити час на природі та грати в теніс.
Мехді Нуріє менеджером і старшим прикладним науковцем у Amazon ML Solutions Lab, де він працює з клієнтами в різних галузях і допомагає їм прискорити шлях міграції в хмару, а також вирішувати проблеми ML за допомогою найсучасніших рішень і технології.
Мухьон Кім є науковцем із даних у Amazon Machine Learning Solutions Lab. Він вирішує різноманітні бізнес-проблеми клієнтів, застосовуючи машинне навчання та глибоке навчання, а також допомагає їм здобути кваліфікацію.
Денні Берд є вченим-прикладником у Amazon ML Solutions Lab. У лабораторії він допомагав клієнтам розробляти передові рішення ML у спеціальностях ML від комп’ютерного зору до навчання з підкріпленням. Він захоплений просуванням технологій вперед і розкриттям нового потенціалу продуктів AWS на цьому шляху.
Франсіско Кальдерон Родрігес є дослідником даних у лабораторії рішень Amazon ML Solutions. Як член лабораторії ML Solutions Lab, він допомагає вирішувати критичні бізнес-проблеми для клієнтів AWS за допомогою глибокого навчання. У вільний час Франциско любить грати на музику та гітару, грати у футбол зі своїми дочками та насолоджуватися часом із сім’єю.
Йохей Накаяма є архітектором глибокого навчання в Amazon ML Solutions Lab. Він працює з клієнтами в різних галузях, щоб прискорити використання штучного інтелекту та хмарних сервісів AWS для вирішення їхніх бізнес-задач. Він зацікавлений у застосуванні технологій ML/AI в космічній галузі.
Наталі Раушмайр є старшим прикладним науковцем у AWS, де вона допомагає клієнтам розробляти програми глибокого навчання.
- Coinsmart. Найкраща в Європі біржа біткойн та криптовалют.
- Платоблокчейн. Web3 Metaverse Intelligence. Розширені знання. БЕЗКОШТОВНИЙ ДОСТУП.
- CryptoHawk. Альткойн Радар. Безкоштовне випробування.
- Джерело: https://aws.amazon.com/blogs/machine-learning/create-train-and-deploy-a-billion-parameter-language-model-on-terabytes-of-data-with-tensorflow-and- amazon-sagemaker/
- "
- 10
- 100
- 2019
- a
- МЕНЮ
- прискорювати
- прискорення
- доступ
- За
- Achieve
- через
- доданий
- доповнення
- просунутий
- ВСІ
- дозволяє
- завжди
- Amazon
- аналіз
- API
- застосування
- прикладної
- Застосовувати
- Застосування
- підхід
- підходи
- приблизно
- архітектурний
- архітектура
- Art
- штучний
- штучний інтелект
- асоційований
- увагу
- автоматично
- доступний
- середній
- AWS
- оскільки
- буття
- між
- За
- більший
- найбільший
- Мільярд
- мільярди
- Блокувати
- книги
- будувати
- Будує
- вбудований
- бізнес
- можливості
- здатний
- захоплення
- захвати
- вуглець
- викиди вуглекислого газу
- центральний
- виклик
- проблеми
- Вибирати
- клас
- хмара
- хмарні сервіси
- код
- загальний
- Комунікація
- співтовариство
- порівняний
- обчислення
- обчислення
- комп'ютер
- Інформатика
- обчислення
- підключений
- мінуси
- послідовний
- контакт
- витрати
- створювати
- створений
- створює
- створення
- критичний
- виготовлений на замовлення
- Клієнти
- дані
- центрів обробки даних
- вчений даних
- глибокий
- продемонстрований
- залежить
- розгортання
- розгортання
- призначений
- деталь
- докладно
- Визначати
- розвивати
- розвивається
- розробка
- пристрій
- прилади
- різний
- обговорювати
- розподілений
- розповсюдження
- різноманітність
- DM
- домени
- вниз
- легко
- легкий у використанні
- ефективність
- ефективний
- продуктивно
- зусилля
- викиди
- включіть
- дозволяє
- енергія
- англійська
- підприємство
- навколишній
- особливо
- встановлений
- оцінка
- приклад
- перевищує
- обмін
- Розширення
- Face
- стикаються
- сім'я
- риси
- Поля
- фінансовий
- Перший
- відповідати
- політ
- після
- слідує
- Слід
- Вперед
- Рамки
- Франциско
- від
- функція
- Крім того
- Загальне
- породжувати
- покоління
- генеративний
- отримання
- GitHub
- Глобальний
- GPU
- Графічні процесори
- Рости
- керівництво
- апаратні засоби
- допомога
- допомагає
- Високий
- високоякісний
- вище
- тримати
- відбувся
- хостинг
- Як
- How To
- Однак
- HTTPS
- зображення
- зображень
- удосконалювати
- поліпшений
- включати
- includes
- У тому числі
- Augmenter
- зростаючий
- індекс
- промисловості
- промисловість
- інформація
- Інфраструктура
- інновації
- вхід
- натхненний
- екземпляр
- Інтелект
- зацікавлений
- IT
- сам
- робота
- Джобс
- подорож
- тримати
- знання
- lab
- етикетка
- етикетки
- мова
- великий
- більше
- запущений
- шар
- лідер
- вивчення
- рівні
- бібліотека
- Life Sciences
- загрузка
- місцевий
- подивитися
- машина
- навчання за допомогою машини
- управляти
- управління
- менеджер
- управління
- відображення
- маска
- математики
- математика
- засоби
- медичний
- член
- пам'ять
- методика
- Метрика
- ML
- модель
- Моделі
- монітор
- більше
- найбільш
- множинний
- музика
- Природний
- природа
- необхідно
- потреби
- мережу
- NIH
- вузли
- номер
- цілей
- Пропозиції
- Office
- постійний
- операція
- операції
- Оптимізувати
- порядок
- Інше
- Папір
- частина
- пристрасний
- патент
- продуктивність
- періодів
- філософія
- Фізика
- Play
- ігри
- положення
- це можливо
- потенціал
- передбачати
- прогноз
- Прогнози
- попередній
- первинний
- проблеми
- процес
- процеси
- обробка
- Продукти
- профілювання
- проект
- PROS
- забезпечувати
- забезпечує
- штовхнув
- діапазон
- читання
- останній
- нещодавно
- облік
- Відновлювати
- зменшити
- про
- подання
- представлений
- вимагати
- дослідження
- ресурси
- результати
- повертати
- ризики
- прогін
- біг
- то ж
- шкала
- Масштабування
- наука
- НАУКИ
- вчений
- насіння
- обслуговування
- Послуги
- кілька
- SGD
- Форма
- загальні
- Короткий
- показаний
- аналогічний
- простий
- з
- один
- Розмір
- невеликий
- So
- Футбол
- рішення
- Рішення
- ВИРІШИТИ
- Вирішує
- деякі
- Простір
- конкретно
- швидкість
- Витрати
- розкол
- Розколи
- стек
- почалася
- стан
- впроваджений
- Штати
- зберігати
- стратегії
- успіх
- Sustainability
- система
- завдання
- методи
- Технології
- Технологія
- Команда
- тисячі
- через
- пропускна здатність
- час
- times
- знак
- Жетони
- інструменти
- трек
- товарний знак
- традиційний
- Навчання
- Тенденції
- Ubuntu
- безпрецедентний
- us
- використання
- комунальні послуги
- використовує
- значення
- різноманітність
- різний
- вертикалі
- бачення
- обсяг
- чекати
- хвиля
- способи
- Чи
- в той час як
- Вікіпедія
- без
- слова
- Work
- робочий
- робочі
- працює
- X
- років
- вашу
- YouTube