За останні кілька років спостерігається швидкий розвиток у сфері обробки природної мови (NLP). Хоча апаратне забезпечення покращилося, наприклад, завдяки останньому поколінню прискорювачів від NVIDIA та Amazon, спеціалісти з передового машинного навчання (ML) все ще регулярно стикаються з проблемами масштабування своїх великих мовних моделей на кількох GPU.
У цьому дописі в блозі ми коротко підсумовуємо розвиток велико- та дрібномасштабних моделей НЛП, головним чином завдяки абстракції, наданій Hugging Face, і модульній системі обробки даних Amazon SageMaker. Зокрема, ми виділяємо запуск чотирьох додаткових функцій у паралельній бібліотеці моделей SageMaker, які відкривають попереднє навчання та тонке налаштування моделі NLP зі 175 мільярдами параметрів для клієнтів.
Ми використали цю бібліотеку на навчальній платформі SageMaker і досягли пропускної здатності 32 зразки за секунду на 120 ml.p4d.24xlarge екземплярах і 175 мільярдах параметрів. Ми очікуємо, що якщо збільшити кількість екземплярів до 240, навчання повної моделі займе 25 днів.
Для отримання додаткової інформації про паралелізм моделей див Паралелізм моделей Amazon SageMaker: загальна та гнучка структура для навчання великих моделей.
Ви також можете побачити блокнот GPT2, який ми використовували для отримання цих показників продуктивності, на нашому сайті GitHub сховище.
Щоб дізнатися більше про використання нових функцій у паралельній моделі SageMaker, див Розширені можливості паралельної бібліотеки моделі SageMaker для PyTorch та Використовуйте разом із SDK SageMaker Python.
НЛП на Amazon SageMaker – Hugging Face і паралелізм моделей
Якщо ви новачок у Hugging Face і NLP, головне, що вам потрібно знати, це те, що програми, які використовують обробку природної мови (NLP), починають досягати продуктивності рівня людини. Це значною мірою керується механізмом навчання, який називається увагу, що дало початок моделі глибокого навчання, яка називається трансформатор, який є набагато більш масштабованим, ніж попередні послідовні методи глибокого навчання. Тепер відомий Модель BERT був розроблений, щоб отримати вигоду від трансформатора, і попутно розробив кілька корисних тактик НЛП. Трансформери та набір моделей, як у НЛП, так і за його межами, які були натхненні BERT, є основною системою пошуку результатів пошуку Google, у вашому Результати Google Translate та безліч нових стартапів.
SageMaker і Hugging Face співпрацюють, щоб зробити це для клієнтів простіше, ніж будь-коли раніше. Ми запустили контейнери глибокого навчання Hugging Face (DLC), щоб ви могли тренувати та розміщувати попередньо навчені моделі безпосередньо з Hugging Face. сховище понад 26,000 XNUMX моделей. Ми запустили навчальний компілятор SageMaker для того, щоб пришвидшити час виконання циклів навчання Hugging Face до 50%. Ми також інтегрувалися флагманський SDK для Transformers Hugging Face з наші розподілені навчальні бібліотеки щоб зробити масштабування ваших моделей НЛП легшим, ніж будь-коли раніше.
Для отримання додаткової інформації про моделі Hugging Face Transformer на Amazon SageMaker див Підтримка моделей-трансформерів Hugging Face.
Нові функції для широкомасштабного навчання моделі NLP за допомогою бібліотеки паралельних моделей SageMaker
На AWS re:Invent 2020 SageMaker запустив розподілені бібліотеки, які забезпечують найкращу продуктивність у хмарі для навчання моделей комп’ютерного зору, як-от Маска-RCNN і такі моделі НЛП Т5-3В. Це можливо завдяки розширеним комунікаційним примітивам, які на 20-40% швидші, ніж NCCL на AWS, і методам розповсюдження моделей, які дозволяють масштабувати надзвичайно великі мовні моделі на десятках, сотнях і тисячах графічних процесорів.
Паралельна бібліотека моделей SageMaker (SMP) завжди давала вам можливість взяти вашу попередньо визначену модель NLP у PyTorch, чи то через Hugging Face, чи деінде, і розділити цю модель на кілька графічних процесорів у вашому кластері. Іншими словами, SMP розбиває вашу модель на менші фрагменти, щоб у вас не виникало помилок браку пам’яті (OOM). Ми раді додати додаткові методи збереження пам’яті, які є критичними для великомасштабних моделей, а саме:
- Тензорний паралельність
- Розділ стану оптимізатора
- Контрольна точка активації
- Розвантаження активації
Ви можете об’єднати ці чотири функції, щоб ефективніше використовувати пам’ять і тренувати наступне покоління екстремальних моделей НЛП.
Розподілене навчання та тензорний паралелізм
Щоб зрозуміти тензорний паралелізм, корисно знати, що існує багато видів розподіленого навчання або паралелізму. Ви, мабуть, уже знайомі з найпоширенішим типом, паралелізм даних. Основа паралелізму даних працює так: ви додаєте додатковий вузол у свій кластер, наприклад, переходите від одного до двох екземплярів ml.EC2 у вашому оцінювачі SageMaker. Потім ви використовуєте структуру паралельних даних, як-от Horovod, PyTorch Distributed Data Parallel або SageMaker Distributed. Це створює копії вашої моделі, по одній на кожен прискорювач, і забезпечує розподіл даних на кожен вузол разом із об’єднанням усіх результатів під час етапу зворотного розповсюдження вашої нейронної мережі. Подумайте про розподілений градієнтний спуск. Паралелізм даних також популярний на серверах; ви розподіляєте дані на всі графічні процесори, а іноді й на центральні процесори, на всіх своїх вузлах. Наступна діаграма ілюструє паралелізм даних.
Паралелізм моделі трохи відрізняється. Замість того, щоб робити копії однієї моделі, ми розбиваємо вашу модель на частини. Потім ми керуємо її запуском, щоб ваші дані все ще проходили через вашу нейронну мережу точно так само математично, але різні частини вашої моделі сидять на різних графічних процесорах. Якщо ви використовуєте ml.p3.8xlarge, у вас є чотири NVIDIA V100, тож ви, мабуть, захочете розділити свою модель на 4 частини, по одній на графічний процесор. Якщо ви збільшите до двох ml.p4d.24xlarge, це загалом 16 A100 у вашому кластері, тож ви можете розбити свою модель на 16 частин. Це також іноді називають паралельність трубопроводу. Це тому, що набір рівнів у мережі розділено між GPU та працює конвеєрним способом, щоб максимізувати використання GPU. Наступна діаграма ілюструє паралелізм моделі.
Щоб забезпечити масштабний паралелізм моделі, нам потрібен третій тип розподілу: тензорний паралельність. Тензорний паралелізм застосовує ті самі концепції ще на один крок: ми розбираємо найбільші шари вашої нейронної мережі та розміщуємо частини самих шарів на різних пристроях. Це актуально, коли ви працюєте з 175 мільярдами параметрів або більше і намагаєтеся вмістити навіть кілька записів у оперативну пам’ять разом із частинами вашої моделі, щоб навчити цей трансформатор. Наступна діаграма ілюструє тензорний паралелізм.
Для того, щоб тензорний паралелізм, установіть його в параметрах smp ви переходите до свого оцінювача.
У попередньому коді, pipeline_parallel_degree
описує, на скільки сегментів має бути розділена ваша модель на основі паралелізму конвеєра, який ми обговорювали вище. Інше слово для цього безліч.
Щоб увімкнути паралелізм тензорів, встановіть tensor_parallel_degree
до бажаного рівня. Переконайтеся, що ви вибираєте число, що дорівнює або менше кількості графічних процесорів на екземпляр, тому не більше 8 для машин ml.p4d.24xlarge. Додаткові зміни сценарію див Запустіть завдання паралельного навчання розподіленої моделі SageMaker із тензорним паралелізмом.
Параметр ddp стосується паралельних розподілених даних. Зазвичай ви вмикаєте це, якщо використовуєте паралелізм даних або тензорний паралелізм, оскільки бібліотека паралелізму моделі покладається на DDP для цих функцій.
Шардинг стану оптимізатора, розвантаження активації та контрольні точки
Якщо у вас надзвичайно велика модель, вам також потрібен надзвичайно великий стан оптимізатора. Підготувати оптимізатор для SMP нескладно: просто візьміть його з диска у свій сценарій і завантажте в smp.DistributedOptimizer()
об'єкт
Переконайтеся, що ви ввімкнули це в оцінювачі, налаштувавши shard_optimizer_state
до Правда в smp_options
ви використовуєте для налаштування SMP:
Подібно до паралелізму тензорів і конвеєрів, SMP профілює вашу модель і розмір вашого світу (загальну кількість графічних процесорів у всіх ваших навчальних вузлах), щоб знайти найкращі стратегії розміщення.
У глибокому навчанні вихідні дані проміжного рівня також називаються активаціями, і їх потрібно зберігати під час прямого проходу. Це пояснюється тим, що їх потрібно використовувати для обчислення градієнта у зворотному проході. У великій моделі одночасне зберігання всіх цих активацій у пам’яті може створити значні вузькі місця пам’яті. Щоб усунути це вузьке місце, ви можете використовувати контрольна точка активації, третя нова функція в бібліотеці паралелізму моделей SageMaker. Активація КПП, або контрольні точки градієнта, це техніка для зменшення використання пам’яті шляхом видалення активації певних рівнів і повторного їх обчислення під час проходу назад. Це ефективно обмінює додатковий час обчислень на зменшення використання пам’яті.
Нарешті, розвантаження активації безпосередньо використовує контрольні точки активації. Це стратегія, щоб зберегти лише кілька активацій тензора на GPU RAM під час навчання моделі. Зокрема, ми переміщуємо контрольні точки активації в пам’ять процесора під час прямого проходу та завантажуємо їх назад у графічний процесор для зворотного проходу певної мікропакети.
Мікропартії та стратегії розміщення
Інші теми, які іноді викликають плутанину клієнтів, це мікропартії та стратегії розміщення. Обидва ці параметри є гіперпараметрами, які ви можете надати паралельній бібліотеці моделі SageMaker. Зокрема, мікро-серії актуальні при реалізації моделей, які покладаються на конвеєрний паралелізм, наприклад ті, що мають розмір щонайменше 30 мільярдів параметрів або більше.
Мікропартії — це підмножини мініпартій. Коли ваша модель перебуває в циклі навчання, ви визначаєте певну кількість записів, які потрібно забрати та передати вперед і назад через шари – це називається мініпартія, або іноді просто a партія. Повне проходження вашого набору даних називається an епоха. Для запуску прямого та зворотного проходів із паралелізмом конвеєра SageMaker модель паралельної бібліотеки розбиває пакети на менші підмножини, які називаються мікропакетами, які запускаються по одному, щоб максимізувати використання GPU. Отриманий, набагато менший набір прикладів на графічний процесор називається мікропакетом. У нашому прикладі GPT-2 ми додали 1 мікропартію за замовчуванням безпосередньо до навчального сценарію.
Збільшуючи конфігурацію навчання, Вам настійно рекомендовано відповідно змінити розмір партії та розмір мікропартії. Це єдиний спосіб забезпечити хорошу продуктивність: ви повинні розглядати розмір партії та розміри мікро-пакетів як функцію загального розміру світу, покладаючись на паралельність конвеєрів.
Стратегії розміщення – це те, як фізично вказати SageMaker, де розмістити ваші розділи моделі. Якщо ви використовуєте як паралельне моделювання, так і паралельне використання даних, налаштування placement_strategy
до “cluster”
розміщує репліки моделі в ідентифікаторах пристроїв (GPU), які фізично розташовані близько один до одного. Однак, якщо ви справді бажаєте бути більш чіткими щодо своєї стратегії паралелізму, ви можете розбити його на один рядок із різними комбінаціями трьох літер: D для паралелізму даних, P
вказує на паралельність трубопроводу, і T
для тензорного паралелізму. Зазвичай ми рекомендуємо зберегти стандартне розташування "cluster"
, тому що це найкраще підходить для підготовки великомасштабних моделей. Розташування «кластер» відповідає «DPT
».
Додаткову інформацію про стратегії розміщення див Стратегія розміщення з тензорним паралелізмом.
Приклад використання
Уявімо, що у вас є один ml.p3.16xlarge на вашій навчальній роботі. Це дає вам 8 NVIDIA V100 на вузол. Пам’ятайте, що кожного разу, коли ви додаєте додатковий екземпляр, ви відчуваєте додаткову пропускну здатність, тому завжди краще мати більше GP’Us на одному вузлі. У цьому випадку вам краще один ml.p3.16xlarge, ніж, наприклад, два ml.p3.8xlarge. Незважаючи на те, що кількість графічних процесорів однакова, додаткова пропускна здатність додаткового вузла сповільнює вашу пропускну здатність.
Наступна діаграма ілюструє чотиристоронній паралелізм моделі в поєднанні з двостороннім паралелізмом даних. Це означає, що у вас фактично є дві копії вашої моделі (паралельні дані), кожна з яких розділена на чотири GPU (паралельна модель).
Якщо будь-який із цих розділів моделі занадто великий, щоб поміститися на один графічний процесор, ви можете додати додатковий тип розподілу – тензорний паралелізм – щоб скинути його та використовувати обидва пристрої.
Висновок
У цій публікації блогу ми обговорювали розподілені навчальні бібліотеки SageMaker, особливо зосереджуючись на паралелізмі моделей. Ми поділилися контрольними показниками продуктивності з нашого останнього тесту, досягнувши 32 зразків за секунду в 120 екземплярах ml.p4d.24xlarge і 175B параметрах на Amazon SageMaker. Ми очікуємо, що якщо ми збільшимо це число до 240 екземплярів p4, то зможемо навчити модель параметрів 175B за 25 днів.
Ми також обговорили найновіші функції, які дозволяють широкомасштабне навчання, а саме тензорний паралелізм, сегментування стану оптимізатора, контрольні точки активації та розвантаження активації. Ми поділилися деякими порадами та підказками, як це зробити, навчаючись на Amazon SageMaker.
Спробуйте самі використовуючи той самий блокнот, який генерував наші числа, який доступний на GitHub тут. Ви також можете запросити більше графічних процесорів для свого облікового запису AWS запит на підтвердження ліміту послуг прямо тут.
Про авторів
Емілі Веббер приєднався до AWS відразу після запуску SageMaker і з тих пір намагається розповісти про це всьому світу! Крім створення нових можливостей ML для клієнтів, Емілі любить медитувати та вивчати тибетський буддизм.
Адитья Біндал є старшим менеджером з продуктів для глибокого навчання AWS. Він працює над продуктами, які полегшують клієнтам навчання моделей глибокого навчання на AWS. У вільний час він любить проводити час з дочкою, грає в теніс, читає історичну літературу та подорожує.
Луїс Кінтела є менеджером розробника програмного забезпечення для паралельної бібліотеки моделей AWS SageMaker. У вільний час він катається на своєму Харлі в районі затоки СФ.
- Coinsmart. Найкраща в Європі біржа біткойн та криптовалют.
- Платоблокчейн. Web3 Metaverse Intelligence. Розширені знання. БЕЗКОШТОВНИЙ ДОСТУП.
- CryptoHawk. Альткойн Радар. Безкоштовне випробування.
- Джерело: https://aws.amazon.com/blogs/machine-learning/train-175-billion-parameter-nlp-models-with-model-parallel-additions-and-hugging-face-on-amazon-sagemaker/
- "
- 000
- 100
- 2020
- 39
- МЕНЮ
- прискорювач
- рахунки
- досягнутий
- через
- Додатковий
- адреса
- просунутий
- ВСІ
- вже
- Amazon
- Інший
- застосування
- ПЛОЩА
- доступний
- AWS
- затока
- КРАЩЕ
- найбільший
- Мільярд
- Блог
- Створюємо
- Викликати
- зміна
- хмара
- код
- комбінації
- загальний
- Комунікація
- конфігурація
- замішання
- Контейнери
- Core
- може
- Клієнти
- дані
- розвиненою
- Розробник
- розробка
- пристрій
- прилади
- різний
- розподілений
- розподіл
- вниз
- керований
- дозволяє
- особливо
- приклад
- досвід
- Досліди
- екстремальний
- Особа
- швидше
- особливість
- риси
- Художня література
- відповідати
- після
- Вперед
- знайдений
- Рамки
- Повний
- функція
- Загальне
- породжувати
- GitHub
- буде
- добре
- Google Пошук
- GPU
- апаратні засоби
- корисний
- Виділіть
- історичний
- Як
- How To
- HTTPS
- Сотні
- збільшений
- інформація
- натхненний
- інтегрований
- питання
- IT
- робота
- приєднався
- стрибати
- зберігання
- мова
- великий
- останній
- запуск
- УЧИТЬСЯ
- вивчення
- рівень
- бібліотека
- загрузка
- машина
- навчання за допомогою машини
- Машинки для перманенту
- Робить
- менеджер
- пам'ять
- ML
- модель
- Моделі
- модульний
- найбільш
- рухатися
- а саме
- Природний
- мережу
- Нові можливості
- вузли
- ноутбук
- номера
- Інше
- Папір
- партнерська
- продуктивність
- частина
- платформа
- популярний
- це можливо
- первинний
- Product
- Продукти
- Профілі
- забезпечувати
- Оперативна пам'ять
- RE
- читання
- рекомендувати
- облік
- зменшити
- результати
- прогін
- біг
- Зазначений
- масштабовані
- шкала
- Масштабування
- Sdk
- Пошук
- обслуговування
- комплект
- установка
- заточування
- загальні
- значний
- Розмір
- So
- Софтвер
- конкретно
- швидкість
- Витрати
- розкол
- стан
- стратегії
- Стратегія
- поставка
- тактика
- методи
- тест
- світ
- тисячі
- через
- час
- Поради
- Поради та рекомендації
- разом
- теми
- торги
- Навчання
- розуміти
- використання
- використовувати
- бачення
- в
- робочий
- працює
- світ
- років