Це гостьовий пост, написаний у співавторстві з Ентоні Венсом з Intel.
Клієнти завжди шукають способи покращити продуктивність і час відгуку своїх робочих навантажень машинного навчання (ML) без збільшення вартості транзакції та без шкоди для точності результатів. Запуск робочих навантажень ML Amazon SageMaker біг Обчислювальна хмара Amazon Elastic (Amazon EC2) C6i екземпляри з Intel Розгортання висновків INT8 може допомогти підвищити загальну продуктивність до чотирьох разів за витрачений долар, утримуючи втрату точності висновків менше ніж 1% порівняно з FP32, якщо застосовувати до певних робочих навантажень ML. Коли справа доходить до запуску моделей у вбудованих пристроях, де важливий форм-фактор і розмір моделі, квантування може допомогти.
Квантування — це техніка, яка дозволяє зменшити витрати на обчислення та пам’ять для виконання висновків шляхом представлення вагових коефіцієнтів і активацій за допомогою типів даних із низькою точністю, таких як 8-бітне ціле число (INT8) замість звичайного 32-бітного числа з плаваючою комою (FP32). На наступному прикладі рисунку ми показуємо продуктивність висновку INT8 у C6i для базової моделі BERT.
Базу BERT було доопрацьовано за допомогою SQuAD v1.1, де PyTorch (v1.11) є інфраструктурою ML, яка використовується з розширенням Intel® для PyTorch. Для порівняння використовувався розмір партії 1. Вищі розміри пакетів забезпечуватимуть іншу вартість за 1 мільйон висновків.
У цій публікації ми покажемо вам, як створити та розгорнути висновок INT8 за допомогою вашого власний переробний контейнер для PyTorch. Ми використовуємо розширення Intel для PyTorch для ефективного робочого процесу розгортання INT8.
Огляд технології
Екземпляри EC2 C6i оснащені процесорами Intel Xeon Scalable третього покоління (також званими Ice Lake) із турбочастотою всіх ядер 3.5 ГГц.
У контексті глибокого навчання переважаючим числовим форматом, який використовувався для дослідження та розгортання, наразі був 32-розрядний формат із плаваючою комою або FP32. Однак потреба в зменшенні пропускної здатності та вимогах до обчислень для моделей глибокого навчання спонукала дослідження використання числових форматів з меншою точністю. Було продемонстровано, що ваги та активації можуть бути представлені за допомогою 8-бітних цілих чисел (або INT8) без значної втрати точності.
Екземпляри EC2 C6i пропонують багато нових можливостей, які призводять до підвищення продуктивності для робочих навантажень AI та ML. Екземпляри C6i забезпечують переваги продуктивності в розгортаннях моделей FP32 і INT8. Висновок FP32 увімкнено за допомогою вдосконалень AVX-512, а висновок INT8 увімкнено інструкціями AVX-512 VNNI.
C6i тепер доступний на кінцевих точках SageMaker, і розробники повинні очікувати, що він забезпечить більш ніж у два рази покращення ціни та продуктивності для висновків INT8 порівняно з висновками FP32 та до чотирьох разів покращує продуктивність порівняно з висновками C5 FP32. Зверніться до додатку, щоб отримати докладні відомості про екземпляри та порівняльні дані.
Розгортання глибокого навчання на межі для висновків у реальному часі є ключовим для багатьох областей застосування. Це значно знижує вартість зв’язку з хмарою з точки зору пропускної здатності мережі, затримки мережі та енергоспоживання. Однак периферійні пристрої мають обмежену пам’ять, обчислювальні ресурси та потужність. Це означає, що мережа глибокого навчання повинна бути оптимізована для вбудованого розгортання. Квантування INT8 стало популярним підходом для такої оптимізації фреймворків ML, таких як TensorFlow і PyTorch. SageMaker надає вам підхід із використанням власного контейнера (BYOC) та інтегровані інструменти, щоб ви могли виконувати квантування.
Для отримання додаткової інформації зверніться до Нижча чисельна точність глибокого навчання та навчання.
Огляд рішення
Кроки для реалізації рішення такі:
- Надайте примірник EC2 C6i для квантування та створення моделі ML.
- Використовуйте надані сценарії Python для квантування.
- Створіть образ Docker для розгортання моделі в SageMaker за допомогою підходу BYOC.
- Використовуйте a Служба простого зберігання Amazon (Amazon S3), щоб скопіювати модель і код для доступу до SageMaker.
- Скористайтесь Реєстр контейнерів Amazon Elastic (Amazon ECR) для розміщення образу Docker.
- Використовувати Інтерфейс командного рядка AWS (AWS CLI), щоб створити кінцеву точку висновку в SageMaker.
- Запустіть надані тестові сценарії Python, щоб викликати кінцеву точку SageMaker для версій INT8 і FP32.
Це налаштування розгортання логічного висновку використовує базову модель BERT зі сховища трансформаторів Hugging Face (csarron/bert-base-uncased-squad-v1).
Передумови
Нижче наведено передумови для створення параметрів розгортання:
- Термінал оболонки Linux із встановленим AWS CLI
- Обліковий запис AWS із доступом до створення екземпляра EC2 (тип екземпляра C6i)
- Доступ SageMaker для розгортання моделі SageMaker, конфігурації кінцевої точки, кінцевої точки
- Управління ідентифікацією та доступом AWS (IAM) доступ для налаштування ролі та політики IAM
- Доступ до Amazon ECR
- Доступ SageMaker для створення блокнота з інструкціями щодо запуску кінцевої точки
Згенеруйте та розгорніть квантовану модель INT8 на SageMaker
Відкрийте екземпляр EC2 для створення квантованої моделі та надішліть артефакти моделі в Amazon S3. Для розгортання кінцевої точки створіть спеціальний контейнер із PyTorch і розширенням Intel® для PyTorch, щоб розгорнути оптимізовану модель INT8. Контейнер надсилається в Amazon ECR, і створюється кінцева точка на основі C6i для обслуговування моделей FP32 і INT8.
Наступна діаграма ілюструє потік високого рівня.
Щоб отримати доступ до коду та документації, зверніться до GitHub репо.
Приклад використання
Стенфордський набір даних відповідей на питання (SQuAD) — це набір даних про розуміння прочитаного, що складається із запитань, поставлених крауд-воркерами на набір статей Вікіпедії, де відповіддю на кожне запитання є сегмент тексту або span, з відповідного уривка для читання, інакше запитання може бути неможливим.
У наступному прикладі наведено алгоритм відповідей на запитання з використанням базової моделі BERT. Враховуючи документ як вхідні дані, модель відповідатиме на прості запитання на основі навчання та контекстів із вхідного документа.
Нижче наведено приклад вхідного документа:
Тропічний ліс Амазонки (португальською: Floresta Amazônica або Amazônia; іспанською: Selva Amazónica, Amazonía або зазвичай Amazonia; французькою: Forêt amazonienne; нідерландською: Amazoneregenwoud), також відомий англійською як Амазонія або амазонські джунглі, — це вологий широколистяний ліс, який покриває більшість басейну Амазонки в Південній Америці. Цей басейн охоплює 7,000,000 2,700,000 5,500,000 квадратних кілометрів (2,100,000 XNUMX XNUMX квадратних миль), з яких XNUMX XNUMX XNUMX квадратних кілометрів (XNUMX XNUMX XNUMX квадратних миль) вкрито тропічними лісами.
На запитання «Яка назва також використовується для опису тропічного лісу Амазонки англійською мовою?» отримуємо відповідь:
На запитання «Скільки квадратних кілометрів тропічного лісу займає басейн?» отримуємо відповідь:
Квантування моделі в PyTorch
У цьому розділі наведено короткий огляд етапів квантування моделі за допомогою розширень PyTorch і Intel.
Фрагменти коду взято з прикладу SageMaker.
Давайте детально розглянемо зміни для функції IPEX_quantize у файлі quantize.py.
- Імпортуйте розширення Intel для PyTorch, щоб допомогти з квантуванням і оптимізацією, а також імпортуйте torch для маніпуляцій масивами:
- Застосуйте калібрування моделі для 100 ітерацій. У цьому випадку ви калібруєте модель за допомогою набору даних SQuAD:
- Підготуйте зразки вхідних даних:
- Перетворіть модель на модель INT8 за такою конфігурацією:
- Виконайте дві ітерації прямого проходу, щоб увімкнути злиття:
- Як останній крок, збережіть модель TorchScript:
Прибирати
Див Репо Github кроки з очищення створених ресурсів AWS.
Висновок
Нові екземпляри EC2 C6i у кінцевій точці SageMaker можуть прискорити розгортання логічного висновку до 2.5 разів завдяки квантуванню INT8. Квантування моделі в PyTorch можливе за допомогою кількох API із розширень Intel PyTorch. Рекомендується квантувати модель в екземплярах C6i, щоб підтримувати точність моделі під час розгортання кінцевої точки. Приклади SageMaker GitHub репо тепер надає приклад конвеєра наскрізного розгортання для квантування та розміщення моделей INT8.
Ми заохочуємо вас створити нову модель або перенести існуючу модель за допомогою квантування INT8, використовуючи тип екземпляра EC2 C6i, і побачити приріст продуктивності на власні очі.
Повідомлення та застереження
У цьому документі не надається жодна ліцензія (явна чи непряма, шляхом припинення дії чи іншим чином) на будь-які права інтелектуальної власності, за винятком того, що код, включений у цей документ, ліцензується відповідно до Ліцензія з відкритим кодом BSD Zero-Clause (0BSD)
Додаток
Нові екземпляри AWS у SageMaker із підтримкою розгортання INT8
У наведеній нижче таблиці наведено екземпляри SageMaker із і без DL Boost support.
Ім'я екземпляра | Кодове ім'я Xeon Gen | INT8 увімкнено? | DL Boost увімкнено? |
ml.c5. xlarge – ml.c5.9xlarge | Скайлейк/1st | Так | Немає |
ml.c5.18xlarge | Скайлейк/1st | Так | Немає |
ml.c6i.1x – 32xвеликий | Крижане озеро/3rd | Так | Так |
Підводячи підсумок, увімкнений INT8 підтримує тип даних і обчислення INT8; DL Boost підтримує Deep Learning Boost.
Порівняльні дані
У наведеній нижче таблиці порівнюються вартість і відносна продуктивність екземплярів c5 і c6.
Затримку та пропускну здатність виміряно за допомогою 10000 XNUMX запитів Inference до кінцевих точок Sage Maker.
E2E Latency of Inference Endpoint and Cost analysis | |||||
P50 (мс) | P90 (мс) | Запити/розд | $/1 млн запитів | Відносне співвідношення $/продуктивність | |
C5.2xLarge-FP32 | 76.6 | 125.3 | 11.5 | $10.2 | 1.0x |
c6i.2xLarge-FP32 | 70 | 110.8 | 13 | $9.0 | 1.1x |
c6i.2xLarge-INT8 | 35.7 | 48.9 | 25.56 | $4.5 | 2.3x |
Очікується, що моделі INT8 забезпечать у 2–4 рази практичні покращення продуктивності з менш ніж 1% втратою точності для більшості моделей. У таблиці вище наведено затримку накладних витрат (NW і демонстраційна програма)
Точність для базової моделі BERT
У наведеній нижче таблиці підсумовано точність для моделі INT8 із набором даних SQUaD v1.1.
Metric | FP32 | INT8 |
Точна відповідність | 85.8751 | 85.5061 |
F1 | 92.0807 | 91.8728 |
Команда GitHub репо постачається зі сценаріями для перевірки точності набору даних SQuAD. Відноситься до invoke-INT8.py та invoke-FP32.py скрипти для тестування.
Розширення Intel для PyTorch
Розширення Intel® для PyTorch* (проект із відкритим кодом на GitHub) розширює PyTorch за допомогою оптимізацій для додаткового підвищення продуктивності апаратного забезпечення Intel. Більшість оптимізацій згодом буде включено до стандартних випусків PyTorch, і метою розширення є надання оновлених функцій і оптимізації для PyTorch на обладнанні Intel. Приклади включають AVX-512 Vector Neural Network Instructions (AVX512 VNNI) і Intel® Advanced Matrix Extensions (Intel® AMX).
На наступному малюнку показано розширення Intel для архітектури PyTorch.
Щоб отримати докладніші вказівки користувача (функції, налаштування продуктивності тощо) для розширення Intel® для PyTorch, зверніться до Розширення Intel® для PyTorch* інструкції користувача.
Про авторів
Рохіт Чоудхарі є старшим архітектором рішень у групі стратегічних облікових записів AWS.
Аніруддха Каппаганту є інженером з розробки програмного забезпечення в команді AI Platforms в AWS.
Ентоні Венс є архітектором штучного інтелекту в Intel з 19-річним досвідом у сфері комп’ютерного зору, машинного навчання, глибокого навчання, вбудованого програмного забезпечення, GPU та FPGA.
- Розповсюдження контенту та PR на основі SEO. Отримайте посилення сьогодні.
- Платоблокчейн. Web3 Metaverse Intelligence. Розширені знання. Доступ тут.
- джерело: https://aws.amazon.com/blogs/machine-learning/accelerate-amazon-sagemaker-inference-with-c6i-intel-based-amazon-ec2-instances/
- :є
- $UP
- 000
- 1
- 100
- 11
- 7
- 8
- 9
- a
- вище
- прискорювати
- доступ
- рахунки
- Рахунки
- точність
- активації
- просунутий
- Переваги
- AI
- алгоритм
- завжди
- Amazon
- Amazon EC2
- Amazon SageMaker
- Америка
- та
- відповідь
- Інтерфейси
- додаток
- прикладної
- підхід
- архітектура
- ЕСТЬ
- області
- масив
- статті
- AS
- At
- доступний
- AWS
- ширина смуги
- заснований
- BE
- ставати
- буття
- еталонний тест
- між
- підвищення
- приносити
- будувати
- by
- званий
- CAN
- можливості
- випадок
- певний
- Зміни
- перевірка
- хмара
- код
- спілкування
- порівняний
- порівняння
- обчислення
- обчислення
- комп'ютер
- Комп'ютерне бачення
- обчислення
- конфігурація
- Складається
- споживання
- Контейнер
- контекст
- контексти
- Відповідний
- Коштувати
- витрати
- покритий
- Обкладинки
- створювати
- створений
- створення
- створення
- виготовлений на замовлення
- дані
- глибокий
- глибоке навчання
- доставляти
- продемонстрований
- розгортання
- розгортання
- розгортання
- Отриманий
- описувати
- деталь
- докладно
- деталі
- розробників
- розробка
- прилади
- різний
- Docker
- документ
- документація
- справи
- Долар
- керований
- нідерландська
- край
- Ефективний
- вбудований
- включіть
- включений
- охоплює
- заохочувати
- кінець в кінець
- Кінцева точка
- інженер
- англійська
- врешті-решт
- Кожен
- приклад
- Приклади
- виняток
- існуючий
- очікувати
- очікуваний
- досвід
- експрес
- розширення
- Розширення
- додатково
- Face
- риси
- кілька
- Рисунок
- філе
- плаваючий
- потік
- після
- слідує
- для
- ліс
- форма
- формат
- Вперед
- FPGA
- Рамки
- каркаси
- французька
- частота
- від
- функція
- прибуток
- Gen
- отримати
- GitHub
- даний
- дає
- Go
- GPU
- надається
- великий
- гість
- Guest Post
- керівництво
- апаратні засоби
- Мати
- допомога
- на вищому рівні
- вище
- господар
- хостинг
- Як
- How To
- Однак
- HTML
- HTTP
- HTTPS
- ICE
- Особистість
- зображення
- здійснювати
- мається на увазі
- імпорт
- важливо
- удосконалювати
- поліпшення
- поліпшення
- in
- включати
- включені
- зростаючий
- інформація
- вхід
- екземпляр
- замість
- інструкції
- інтегрований
- Intel
- інтелектуальний
- інтелектуальна власність
- Намір
- IT
- ітерації
- JPG
- зберігання
- ключ
- відомий
- озеро
- останній
- Затримка
- запуск
- вивчення
- ліцензія
- Ліцензований
- як
- обмеженою
- Лінія
- Linux
- списки
- шукати
- від
- машина
- навчання за допомогою машини
- виробник
- багато
- Матриця
- засоби
- пам'ять
- може бути
- мігрувати
- мільйона
- ML
- модель
- Моделі
- більше
- найбільш
- MS
- ім'я
- Необхідність
- мережу
- нейронної мережі
- Нові
- ноутбук
- of
- пропонувати
- on
- відкрити
- з відкритим вихідним кодом
- оптимізація
- оптимізований
- OS
- інакше
- загальний
- огляд
- власний
- шлях
- продуктивність
- трубопровід
- Платформи
- plato
- Інформація про дані Платона
- PlatoData
- точка
- популярний
- португальська
- це можливо
- пошта
- влада
- Харчування
- Практичний
- Точність
- передумови
- обробка
- процесори
- проект
- власність
- Право власності
- забезпечувати
- за умови
- забезпечує
- Штовхати
- штовхнув
- Python
- піторх
- питання
- питань
- Швидко
- читання
- реального часу
- рекомендований
- зменшити
- Знижений
- знижує
- Релізи
- Сховище
- представлений
- представляє
- Вимога
- дослідження
- ресурси
- відповідь
- результат
- результати
- праві
- Роль
- прогін
- біг
- жертвуючи
- мудрець
- Висновок SageMaker
- зберегти
- масштабовані
- scripts
- розділ
- сегмент
- служити
- комплект
- установка
- Склад
- Повинен
- Показувати
- значний
- істотно
- простий
- Розмір
- розміри
- So
- так далеко
- Софтвер
- розробка програмного забезпечення
- рішення
- Рішення
- Source
- Південь
- Південна Америка
- іспанська
- відпрацьований
- SQ
- площа
- Крок
- заходи
- акції
- зберігання
- Стратегічний
- тема
- такі
- підсумовувати
- поставляється
- підтримка
- Опори
- таблиця
- команда
- тензорний потік
- термінал
- terms
- тест
- Тестування
- Що
- Команда
- їх
- пропускна здатність
- times
- до
- інструменти
- факел
- угода
- Трансформатори
- Типи
- відповідний сучасним вимогам
- використання
- користувач
- зазвичай
- бачення
- способи
- який
- в той час як
- Вікіпедія
- волі
- з
- без
- років
- Ти
- вашу
- себе
- зефірнет