Корпорація KT є одним із найбільших телекомунікаційних провайдерів у Південній Кореї, який пропонує широкий спектр послуг, включаючи стаціонарний телефон, мобільний зв’язок, Інтернет і послуги ШІ. KT Food Tag зі штучним інтелектом – це рішення для управління дієтою на основі штучного інтелекту, яке визначає тип і поживну цінність їжі на фотографіях за допомогою моделі комп’ютерного зору. Ця модель бачення, розроблена KT, спирається на модель, попередньо навчену великою кількістю непозначених даних зображення для аналізу харчового вмісту та калорійності різних продуктів. AI Food Tag може допомогти пацієнтам із хронічними захворюваннями, такими як діабет, контролювати свій раціон. КТ використовували AWS і Amazon SageMaker щоб навчити цю модель AI Food Tag у 29 разів швидше, ніж раніше, і оптимізувати її для розгортання виробництва за допомогою моделі дистиляції. У цьому дописі ми описуємо шлях розробки моделі KT та її успіх за допомогою SageMaker.
Ознайомлення з проектом КТ та визначення проблеми
Модель AI Food Tag, попередньо навчена KT, базується на архітектурі трансформаторів бачення (ViT) і має більше параметрів моделі, ніж їхня попередня модель бачення для підвищення точності. Щоб зменшити розмір моделі для виробництва, KT використовує метод дистиляції знань (KD), щоб зменшити кількість параметрів моделі без істотного впливу на точність. При дистиляції знань попередньо навчена модель називається a модель учителя, а полегшена вихідна модель навчається як a студентська модель, як показано на малюнку нижче. Спрощена модель студента має менше параметрів моделі, ніж модель викладача, що зменшує вимоги до пам’яті та дозволяє розгортати на менших, менш дорогих екземплярах. Учень підтримує прийнятну точність, навіть якщо вона менша, навчаючись на результатах моделі вчителя.
Модель вчителя залишається незмінною під час KD, але модель учня навчається, використовуючи вихідні логіти моделі вчителя як мітки для обчислення втрат. З цією парадигмою KD і вчитель, і учень мають використовувати одну пам’ять GPU для навчання. Спочатку KT використовував два графічні процесори (A100 80 ГБ) у своєму внутрішньому локальному середовищі для навчання моделі студента, але процес зайняв приблизно 40 днів, щоб охопити 300 епох. Щоб прискорити навчання та створити модель студента за менший час, KT співпрацює з AWS. Разом команди значно скоротили час навчання моделі. Ця публікація описує, як команда використовувала Навчання Amazon SageMaker, Бібліотека паралелізму даних SageMaker, Налагоджувач Amazon SageMaker та Amazon SageMaker Profiler щоб успішно розробити легку модель AI Food Tag.
Створення розподіленого навчального середовища за допомогою SageMaker
SageMaker Training — це навчальне середовище керованого машинного навчання (ML) на AWS, яке надає набір функцій та інструментів для спрощення процесу навчання та може бути корисним у розподілених обчисленнях, як показано на наступній діаграмі.
Клієнти SageMaker також можуть отримати доступ до вбудованих образів Docker із різними попередньо встановленими фреймворками глибокого навчання та необхідними пакетами Linux, NCCL і Python для навчання моделей. Науковці з обробки даних або інженери з машинного навчання, які хочуть запустити навчання моделі, можуть робити це без тягаря налаштування інфраструктури навчання або керування Docker і сумісністю різних бібліотек.
Під час одноденного семінару ми змогли налаштувати розподілену навчальну конфігурацію на основі SageMaker в обліковому записі KT AWS, прискорити навчальні сценарії KT за допомогою бібліотеки SageMaker Distributed Data Parallel (DDP) і навіть перевірити навчальне завдання за допомогою двох ml. p1d.4xlarge екземпляри. У цьому розділі ми описуємо досвід роботи KT з командою AWS і використання SageMaker для розробки своєї моделі.
Під час перевірки концепції ми хотіли пришвидшити навчання за допомогою бібліотеки SageMaker DDP, яка оптимізована для інфраструктури AWS під час розподіленого навчання. Щоб змінити PyTorch DDP на SageMaker DDP, вам просто потрібно оголосити torch_smddp
запакуйте та змініть серверну частину на smddp
, як показано в наступному коді:
Щоб дізнатися більше про бібліотеку SageMaker DDP, див Бібліотека паралелізму даних SageMaker.
Аналіз причин низької швидкості навчання за допомогою налагоджувача SageMaker і Profiler
Перший крок до оптимізації та прискорення навчального навантаження передбачає розуміння та діагностику вузьких місць. Для навчального завдання KT ми виміряли час навчання за ітерацію завантажувача даних, проходження вперед і назад:
1 iter time – завантажувач даних: 0.00053 с, вперед: 7.77474 с, назад: 1.58002 сек |
2 iter time – завантажувач даних: 0.00063 с, вперед: 0.67429 с, назад: 24.74539 сек |
3 iter time – завантажувач даних: 0.00061 с, вперед: 0.90976 с, назад: 8.31253 сек |
4 iter time – завантажувач даних: 0.00060 с, вперед: 0.60958 с, назад: 30.93830 сек |
5 iter time – завантажувач даних: 0.00080 с, вперед: 0.83237 с, назад: 8.41030 сек |
6 iter time – завантажувач даних: 0.00067 с, вперед: 0.75715 с, назад: 29.88415 сек |
Подивившись на час у стандартному виведенні для кожної ітерації, ми побачили, що час виконання зворотного проходу значно коливався від ітерації до ітерації. Цей варіант є незвичним і може вплинути на загальний час навчання. Щоб знайти причину такої непостійної швидкості навчання, ми спочатку спробували виявити вузькі місця ресурсів, використовуючи системний монітор (користувальницький інтерфейс налагоджувача SageMaker), який дозволяє налагоджувати навчальні завдання на SageMaker Training і переглядати стан ресурсів, таких як керована навчальна платформа CPU, GPU, мережа та I/O протягом заданої кількості секунд.
Інтерфейс налагоджувача SageMaker надає докладні та важливі дані, які можуть допомогти виявити та діагностувати вузькі місця під час навчання. Зокрема, нам привернули увагу лінійна діаграма використання ЦП і теплова карта використання ЦП/ГП для кожного екземпляра.
На лінійній діаграмі використання ЦП ми помітили, що деякі ЦП використовуються на 100%.
На тепловій карті (де темніші кольори вказують на більш високе використання) ми помітили, що кілька ядер ЦП мали високий рівень використання протягом усього навчання, тоді як використання графічного процесора не було стабільно високим протягом тривалого часу.
Звідси ми почали підозрювати, що однією з причин низької швидкості навчання є вузьке місце ЦП. Ми переглянули код навчального сценарію, щоб побачити, чи не спричиняє щось вузьке місце ЦП. Найбільш підозрілою частиною була велика вартість num_workers
у завантажувачі даних, тому ми змінили це значення на 0 або 1, щоб зменшити використання ЦП. Потім ми знову провели навчальну роботу та перевірили результати.
На наступних знімках екрана показано лінійну діаграму використання ЦП, використання графічного процесора та теплову карту після усунення вузького місця ЦП.
Просто змінивши num_workers
, ми спостерігали значне зниження використання центрального процесора та загальне збільшення використання графічного процесора. Це була важлива зміна, яка значно покращила швидкість навчання. Тим не менш, ми хотіли побачити, де можна оптимізувати використання GPU. Для цього ми використали SageMaker Profiler.
SageMaker Profiler допомагає визначити підказки щодо оптимізації, забезпечуючи видимість використання операцій, включаючи відстеження показників використання GPU та CPU та споживання GPU/CPU ядром у сценаріях навчання. Це допомагає користувачам зрозуміти, які операції споживають ресурси. По-перше, щоб використовувати SageMaker Profiler, вам потрібно додати ProfilerConfig
до функції, яка викликає завдання навчання за допомогою SDK SageMaker, як показано в наступному коді:
У SageMaker Python SDK ви маєте можливість додавати annotate
функції для SageMaker Profiler для вибору коду або кроків у сценарії навчання, які потребують профілювання. Нижче наведено приклад коду, який слід оголосити для SageMaker Profiler у навчальних сценаріях:
Після додавання попереднього коду, якщо ви запускаєте навчальне завдання за допомогою сценаріїв навчання, ви можете отримати інформацію про операції, які виконує ядро графічного процесора (як показано на наступному малюнку) після того, як навчання виконується протягом певного періоду часу. У випадку з навчальними сценаріями KT ми запустили його протягом однієї епохи та отримали наступні результати.
Перевіривши серед результатів SageMaker Profiler п’ять найпопулярніших операцій ядра графічного процесора, ми виявили, що для сценарію навчання KT найбільше часу споживає операція матричного продукту, яка є операцією загального множення матриць (GEMM). на графічних процесорах. Завдяки цій важливій інформації від SageMaker Profiler ми почали досліджувати шляхи прискорення цих операцій і покращення використання GPU.
Прискорення часу навчання
Ми розглянули різні способи скорочення часу обчислення множення матриць і застосували дві функції PyTorch.
Стани оптимізатора сегментів із ZeroRedundancyOptimizer
Якщо ви подивитеся на Оптимізатор нульової надмірності (ZeRO), техніка DeepSpeed/ZeRO забезпечує ефективне навчання великої моделі з кращою швидкістю навчання шляхом усунення надмірностей у пам’яті, яку використовує модель. ZeroRedundancyOptimizer у PyTorch використовується техніка шардингу стану оптимізатора, щоб зменшити використання пам’яті на процес у Distributed Data Parallel (DDP). DDP використовує синхронізовані градієнти під час зворотного проходу, щоб усі репліки оптимізатора повторювали однакові параметри та значення градієнта, але замість того, щоб мати всі параметри моделі, кожен стан оптимізатора підтримується шардингом лише для різних процесів DDP, щоб зменшити використання пам’яті.
Щоб використовувати його, ви можете залишити наявний оптимізатор у optimizer_class
і оголосити a ZeroRedundancyOptimizer
з рештою параметрів моделі та швидкістю навчання як параметрами.
Автоматична змішана точність
Автоматична змішана точність (AMP) використовує тип даних torch.float32 для деяких операцій і torch.bfloat16 або torch.float16 для інших, для зручності швидкого обчислення та зменшення використання пам’яті. Зокрема, оскільки моделі глибокого навчання у своїх обчисленнях зазвичай більш чутливі до бітів експоненти, ніж до бітів дробів, torch.bfloat16 еквівалентний бітам експоненти torch.float32, що дозволяє їм швидко навчатися з мінімальними втратами. torch.bfloat16 працює лише на екземплярах з архітектурою A100 NVIDIA (Ampere) або вище, наприклад ml.p4d.24xlarge, ml.p4de.24xlarge та ml.p5.48xlarge.
Щоб застосувати AMP, ви можете оголосити torch.cuda.amp.autocast
у навчальних сценаріях, як показано в коді вище, і оголосити dtype
як torch.bfloat16.
Результати в SageMaker Profiler
Після застосування двох функцій до сценаріїв навчання та повторного запуску завдання тренування для однієї епохи ми перевірили п’ять найпопулярніших операцій для ядра графічного процесора в SageMaker Profiler. На наступному малюнку показано наші результати.
Ми бачимо, що операція GEMM, яка була у верхній частині списку до застосування двох функцій Torch, зникла з п’яти основних операцій, замінена операцією ReduceScatter, яка зазвичай відбувається в розподіленому навчанні.
Результати навчання швидкості дистильованої моделі KT
Ми збільшили розмір навчальної партії ще на 128, щоб врахувати економію пам’яті від застосування двох функцій Torch, у результаті чого кінцевий розмір партії склав 1152 замість 1024. Навчання остаточної моделі студента могло запускати 210 епох за 1 день ; час навчання та прискорення між внутрішнім навчальним середовищем KT і SageMaker підсумовано в наступній таблиці.
Навчальне середовище | Специфікація GPU для навчання | Кількість GPU | Час навчання (годин) | Епоха | Години на епоху | коефіцієнт скорочення |
Внутрішнє навчальне середовище КТ | A100 (80 ГБ) | 2 | 960 | 300 | 3.20 | 29 |
Amazon SageMaker | A100 (40 ГБ) | 32 | 24 | 210 | 0.11 | 1 |
Масштабованість AWS дозволила нам завершити навчальну роботу в 29 разів швидше, ніж раніше, використовуючи 32 графічні процесори замість 2 локальних. У результаті використання більшої кількості графічних процесорів у SageMaker значно скоротило б час навчання без різниці в загальних витратах на навчання.
Висновок
Пак Санг Мін (керівник групи Vision AI Serving Technology) з лабораторії AI2XL у Центрі конвергентних технологій KT прокоментував співпрацю з AWS для розробки моделі AI Food Tag:
«Останнім часом, оскільки в полі зору з’явилося більше моделей на основі трансформаторів, параметри моделі та необхідна пам’ять GPU зростають. Ми використовуємо легку технологію, щоб вирішити цю проблему, і потрібно багато часу, приблизно місяць, щоб навчитися. Завдяки цьому PoC з AWS ми змогли виявити вузькі місця ресурсів за допомогою SageMaker Profiler і Debugger, усунути їх, а потім використати бібліотеку паралелізму даних SageMaker, щоб завершити навчання приблизно за один день з оптимізованим кодом моделі на чотирьох ml.p4d. 24xвеликі екземпляри».
SageMaker допоміг команді Sang-min заощадити тижні часу на навчання та розвиток моделей.
Завдяки цій співпраці над моделлю бачення AWS і команда SageMaker продовжуватимуть співпрацювати з KT над різними дослідницькими проектами штучного інтелекту/ML, щоб покращити розробку моделей і продуктивність сервісу шляхом застосування можливостей SageMaker.
Щоб дізнатися більше про відповідні функції в SageMaker, перегляньте наступне:
Про авторів
Юнджун ЧойAI/ML Expert SA має досвід корпоративних ІТ у різних галузях, таких як виробництво, високі технології та фінанси, як розробник, архітектор і дослідник даних. Він проводив дослідження машинного та глибокого навчання, зокрема на такі теми, як оптимізація гіперпараметрів та адаптація домену, представляючи алгоритми та статті. В AWS він спеціалізується на ШІ/ML у різних галузях, надаючи технічну валідацію за допомогою послуг AWS для розподіленого навчання/великомасштабних моделей і створення MLO. Він пропонує та переглядає архітектури, щоб зробити внесок у розширення екосистеми AI/ML.
Чон Хун Кім є обліковим записом SA компанії AWS Korea. Спираючись на досвід проектування архітектури програм, розробки та моделювання систем у різних галузях, таких як високі технології, виробництво, фінанси та державний сектор, він працює над оптимізацією AWS Cloud journey та робочих навантажень на AWS для корпоративних клієнтів.
Рок Саконг є науковим співробітником KT R&D. Він проводив дослідження та розробку штучного інтелекту зору в різних сферах і в основному проводив атрибути обличчя (стать/окуляри, головні убори тощо)/технологію розпізнавання обличчя, пов’язану з обличчям. Зараз він працює над полегшеною технологією для моделей vision.
Манодж Раві є старшим менеджером із продуктів Amazon SageMaker. Він захоплений створенням продуктів штучного інтелекту наступного покоління та працює над програмним забезпеченням та інструментами, щоб полегшити великомасштабне машинне навчання для клієнтів. Він отримав ступінь магістра ділового адміністрування в Школі бізнесу Haas і ступінь магістра з управління інформаційними системами в Університеті Карнегі-Меллона. У вільний час Манодж любить грати в теніс і займатися пейзажною фотографією.
Роберт Ван Дусен є старшим менеджером із продуктів Amazon SageMaker. Він керує фреймворками, компіляторами та методами оптимізації для глибокого навчання.
- Розповсюдження контенту та PR на основі SEO. Отримайте посилення сьогодні.
- PlatoData.Network Vertical Generative Ai. Додайте собі сили. Доступ тут.
- PlatoAiStream. Web3 Intelligence. Розширення знань. Доступ тут.
- ПлатонЕСГ. вуглець, CleanTech, Енергія, Навколишнє середовище, Сонячна, Поводження з відходами. Доступ тут.
- PlatoHealth. Розвідка про біотехнології та клінічні випробування. Доступ тут.
- джерело: https://aws.amazon.com/blogs/machine-learning/kts-journey-to-reduce-training-time-for-a-vision-transformers-model-using-amazon-sagemaker/
- : має
- :є
- :де
- $UP
- 1
- 10
- 100
- 11
- 12
- 15%
- 22
- 29
- 32
- 378
- 40
- 7
- 710
- 80
- a
- Здатний
- МЕНЮ
- вище
- прискорювати
- прискорення
- прийнятний
- доступ
- рахунки
- точність
- через
- адаптація
- додавати
- додати
- після
- знову
- AI
- Послуги ШІ
- AI / ML
- прицілювання
- алгоритми
- ВСІ
- дозволено
- Дозволити
- дозволяє
- Також
- Amazon
- Amazon SageMaker
- Amazon Web Services
- серед
- кількість
- amp
- an
- аналізувати
- та
- все
- застосування
- прикладної
- Застосовувати
- Застосування
- архітектура
- ЕСТЬ
- AS
- At
- Атрибути
- AWS
- Backend
- заснований
- BE
- оскільки
- перед тим
- почалася
- буття
- Краще
- між
- обидва
- вузькі місця
- Створюємо
- вбудований
- тягар
- бізнес
- але
- by
- обчислювати
- званий
- CAN
- Може отримати
- можливості
- Карнегі Меллон
- випадок
- спійманий
- Викликати
- Причини
- викликаючи
- Центр
- зміна
- змінилися
- заміна
- Графік
- перевірка
- перевірено
- хмара
- код
- співпрацювати
- співробітництво
- прокоментував
- Комунікація
- сумісність
- повний
- обчислення
- обчислення
- комп'ютер
- Комп'ютерне бачення
- обчислення
- концепція
- проводиться
- конфігурація
- послідовно
- спожитий
- споживання
- споживання
- зміст
- продовжувати
- сприяти
- зручність
- Зближення
- витрати
- може
- обкладинка
- В даний час
- Клієнти
- темніше
- дані
- вчений даних
- день
- Днів
- DDP
- зменшити
- глибокий
- глибоке навчання
- визначаючи
- розгортання
- описувати
- дизайн
- докладно
- розвивати
- розвиненою
- Розробник
- розробка
- Діабет
- діагностування
- різниця
- різний
- хвороби
- розподілений
- розподілені обчислення
- розподілене навчання
- do
- Docker
- домен
- під час
- кожен
- легше
- екосистема
- продуктивно
- усуваючи
- включений
- дозволяє
- Інженери
- підприємство
- Навколишнє середовище
- епоха
- епохи
- Еквівалент
- істотний
- і т.д.
- Навіть
- приклад
- існуючий
- розширення
- дорогий
- досвід
- досвідчений
- Досліди
- експерт
- очей
- Face
- лицьової
- ШВИДКО
- швидше
- риси
- кілька
- менше
- поле
- Поля
- Рисунок
- остаточний
- фінансування
- знайти
- Перший
- п'ять
- Гнучкість
- коливався
- після
- харчування
- продукти
- для
- Вперед
- знайдений
- чотири
- фракція
- каркаси
- від
- функція
- Функції
- Загальне
- породжувати
- отримати
- є
- GPU
- Графічні процесори
- градієнти
- було
- Мати
- має
- he
- допомога
- допоміг
- допомагає
- тут
- привіт-тек
- Високий
- вище
- його
- тримає
- ГОДИННИК
- Як
- HTML
- HTTPS
- Оптимізація гіперпараметрів
- ідентифікує
- ідентифікувати
- ідентифікує
- if
- зображення
- зображень
- Impact
- імпорт
- важливо
- удосконалювати
- поліпшений
- in
- У тому числі
- Augmenter
- збільшений
- зростаючий
- вказувати
- промисловості
- інформація
- Інформаційні системи
- Інфраструктура
- спочатку
- розуміння
- екземпляр
- замість
- внутрішній
- інтернет
- в
- розслідування
- викликає
- питання
- IT
- ітерація
- робота
- Джобс
- подорож
- знання
- Корея
- lab
- етикетки
- ландшафт
- великий
- масштабний
- найбільших
- лідер
- Веде за собою
- УЧИТЬСЯ
- вивчення
- Залишати
- менше
- libraries
- бібліотека
- легкий
- як
- Лінія
- Linux
- список
- завантажувач
- подивитися
- від
- серія
- машина
- навчання за допомогою машини
- головним чином
- підтримує
- зробити
- управляти
- вдалося
- управління
- Рішення для управління
- менеджер
- управління
- виробництво
- карта
- Матриця
- Mellon
- пам'ять
- Метрика
- мінімальний
- пом’якшення
- змішаний
- ML
- MLOps
- Mobile
- модель
- моделювання
- Моделі
- монітор
- місяць
- більше
- найбільш
- необхідно
- Необхідність
- потреби
- мережу
- немає
- зазначив,
- номер
- поживний
- Nvidia
- of
- пропонує
- on
- один раз
- ONE
- тільки
- операція
- операції
- оптимізація
- Оптимізувати
- оптимізований
- оптимізуючий
- or
- інші
- наші
- з
- вихід
- виходи
- над
- загальний
- пакет
- пакети
- документи
- парадигма
- Паралельні
- параметри
- частина
- приватність
- партнерська
- проходити
- пристрасний
- pacientes
- для
- period
- малюнок
- фотографії
- Платформи
- plato
- Інформація про дані Платона
- PlatoData
- ігри
- PoC
- пошта
- Точність
- попередній
- Проблема
- процес
- процеси
- Product
- менеджер по продукції
- Production
- продуктивність
- Продукти
- профілювання
- проект
- проектів
- доказ
- доказ концепції
- пропонує
- провайдери
- забезпечує
- забезпечення
- громадськість
- Python
- піторх
- швидко
- R & D
- діапазон
- ранжувати
- ставка
- Причини
- визнання
- зменшити
- Знижений
- знижує
- послатися
- пов'язаний
- залишається
- замінити
- вимагається
- Вимога
- дослідження
- дослідження і розробка
- дослідник
- рішення
- ресурс
- ресурси
- REST
- результат
- в результаті
- результати
- відгуки
- Відгуки
- прогін
- біг
- пробіжки
- SA
- мудрець
- то ж
- зберегти
- Економія
- бачив
- масштабованість
- шкала
- Школа
- вчений
- Вчені
- скріншоти
- сценарій
- scripts
- Sdk
- SEC
- seconds
- розділ
- сектор
- побачити
- старший
- чутливий
- обслуговування
- Послуги
- виступаючої
- комплект
- заточування
- Повинен
- Показувати
- показаний
- Шоу
- значний
- істотно
- спростити
- просто
- один
- Розмір
- сповільнювати
- менше
- So
- Софтвер
- рішення
- ВИРІШИТИ
- деякі
- Південь
- South Korea
- спеціалізується
- конкретно
- швидкість
- відпрацьований
- standard
- стан
- Штати
- Статус
- Крок
- заходи
- Як і раніше
- студент
- успіх
- Успішно
- такі
- набір
- підозрілі
- система
- Systems
- таблиця
- TAG
- приймає
- Мета
- команда
- команди
- технічний
- техніка
- методи
- Технологія
- зв'язок
- тест
- ніж
- Що
- Команда
- Матриця
- їх
- Їх
- потім
- Там.
- Ці
- це
- хоча?
- через
- по всьому
- час
- times
- до
- разом
- прийняли
- інструменти
- топ
- теми
- факел
- Усього:
- Відстеження
- поїзд
- навчений
- Навчання
- Трансформатори
- намагався
- правда
- два
- тип
- типово
- ui
- розуміти
- розуміння
- університет
- us
- Використання
- використання
- використовуваний
- користувачі
- використовує
- використання
- використовує
- перевірка достовірності
- значення
- Цінності
- різний
- вид
- видимість
- бачення
- хотіти
- хотів
- було
- способи
- we
- Web
- веб-сервіси
- тижня
- були
- в той час як
- який
- ВООЗ
- широкий
- Широкий діапазон
- Вікіпедія
- волі
- з
- в
- без
- робочий
- працює
- майстерня
- б
- Ти
- вашу
- зефірнет
- нуль