Это гостевой пост, написанный в соавторстве с Энтони Вэнсом из Intel.
Клиенты всегда ищут способы повысить производительность и время отклика своих рабочих нагрузок логического вывода с помощью машинного обучения (ML), не увеличивая стоимость транзакции и не жертвуя точностью результатов. Запуск рабочих нагрузок машинного обучения на Создатель мудреца Амазонки Бег Эластичное вычислительное облако Amazon (Амазон EC2) C6i экземпляры с Intel, Развертывание логического вывода INT8 может помочь повысить общую производительность до четырех раз на каждый потраченный доллар, сохраняя при этом потерю точности логического вывода менее 1 % по сравнению с FP32 при применении к определенным рабочим нагрузкам машинного обучения. Когда дело доходит до запуска моделей во встроенных устройствах, где важны форм-фактор и размер модели, может помочь квантование.
Квантование — это метод снижения вычислительных затрат и затрат памяти на выполнение логических выводов путем представления весов и активаций с помощью типов данных низкой точности, таких как 8-битное целое число (INT8) вместо обычного 32-битного числа с плавающей запятой (FP32). В следующем примере мы показываем производительность логического вывода INT8 в C6i для базовой модели BERT.
База BERT была доработана с помощью SQuAD v1.1, при этом PyTorch (v1.11) является платформой машинного обучения, используемой с расширением Intel® для PyTorch. Для сравнения использовали размер партии 1. Большие размеры пакетов будут давать другую стоимость за 1 миллион выводов.
В этом посте мы покажем вам, как построить и развернуть вывод INT8 с вашим собственный перерабатывающий контейнер для ПиТорч. Мы используем расширения Intel для PyTorch для эффективного рабочего процесса развертывания INT8.
Обзор технологии
Экземпляры EC2 C6i работают на процессорах Intel Xeon Scalable третьего поколения (также называемых Ice Lake) с частотой всех ядер в турборежиме 3.5 ГГц.
В контексте глубокого обучения преобладающим числовым форматом, используемым для исследований и развертывания, до сих пор был 32-битный формат с плавающей запятой или FP32. Однако потребность в снижении пропускной способности и вычислительных требований моделей глубокого обучения привела к тому, что исследования стали использовать числовые форматы с более низкой точностью. Было продемонстрировано, что веса и активации могут быть представлены с использованием 8-битных целых чисел (или INT8) без значительной потери точности.
Инстансы EC2 C6i предлагают множество новых возможностей, которые позволяют повысить производительность рабочих нагрузок ИИ и машинного обучения. Инстансы C6i обеспечивают преимущества в производительности при развертывании моделей FP32 и INT8. Вывод FP32 включается с улучшениями AVX-512, а вывод INT8 включается инструкциями AVX-512 VNNI.
C6i теперь доступен на конечных точках SageMaker, и разработчики должны ожидать, что он обеспечит более чем двукратное улучшение цены и производительности для вывода INT8 по сравнению с выводом FP32 и повышение производительности до четырех раз по сравнению с выводом FP5 экземпляра C32. Подробные сведения об экземпляре и данные эталонных тестов см. в приложении.
Развертывание глубокого обучения на периферии для получения логических выводов в реальном времени является ключом ко многим областям применения. Это значительно снижает стоимость связи с облаком с точки зрения пропускной способности сети, задержки в сети и энергопотребления. Однако периферийные устройства имеют ограниченный объем памяти, вычислительных ресурсов и мощности. Это означает, что сеть глубокого обучения должна быть оптимизирована для встроенного развертывания. Квантование INT8 стало популярным подходом для таких оптимизаций для таких платформ машинного обучения, как TensorFlow и PyTorch. SageMaker предоставляет вам подход с использованием собственного контейнера (BYOC) и интегрированные инструменты, позволяющие выполнять квантование.
Для получения дополнительной информации обратитесь к Глубокий вывод и обучение с более низкой числовой точностью.
Обзор решения
Шаги по реализации решения следующие:
- Подготовьте экземпляр EC2 C6i для квантизации и создания модели машинного обучения.
- Используйте прилагаемые скрипты Python для квантования.
- Создайте образ Docker, чтобы развернуть модель в SageMaker с использованием подхода BYOC.
- Используйте Простой сервис хранения Amazon (Amazon S3), чтобы скопировать модель и код для доступа к SageMaker.
- Используйте Реестр Amazon Elastic Container (Amazon ECR) для размещения образа Docker.
- Использовать Интерфейс командной строки AWS (AWS CLI) для создания конечной точки логического вывода в SageMaker.
- Запустите предоставленные тестовые сценарии Python, чтобы вызвать конечную точку SageMaker для версий INT8 и FP32.
В этой настройке развертывания логического вывода используется базовая модель BERT из репозитория трансформеров Hugging Face (csarron/bert-base-uncased-squad-v1).
Предпосылки
Ниже приведены предварительные условия для создания установки развертывания.
- Терминал оболочки Linux с установленным интерфейсом командной строки AWS.
- Учетная запись 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) — это набор данных для понимания прочитанного, состоящий из вопросов, заданных краудфандингом в наборе статей Википедии, где ответом на каждый вопрос является фрагмент текста или пролет, из соответствующего отрывка для чтения, иначе вопрос может остаться без ответа.
Следующий пример представляет собой алгоритм ответа на вопрос, использующий базовую модель BERT. Учитывая документ в качестве входных данных, модель будет отвечать на простые вопросы, основанные на обучении и контекстах из входного документа.
Ниже приведен пример входного документа:
Тропический лес Амазонки (португальский: Floresta Amazônica или Amazônia; испанский: Selva Amazónica, Amazonía или обычно Amazonia; французский: Forêt amazonienne; голландский: Amazoneregenwoud), также известный на английском языке как Amazonia или амазонские джунгли, представляет собой влажный широколиственный лес, покрывающий большую часть бассейна Амазонки в Южной Америке. Этот бассейн охватывает 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 с нулевым пунктом (0BSD)
Приложение
Новые экземпляры AWS в SageMaker с поддержкой развертывания INT8
В следующей таблице перечислены экземпляры SageMaker с Повышение DL .
Имя экземпляра | Кодовое название поколения Xeon | INT8 включен? | Ускорение DL включено? |
мл.с5. xlarge – мл.c5.9xlarge | Скайлейк/1st | Да | Нет |
мл.c5.18xlarge | Скайлейк/1st | Да | Нет |
мл.c6i.1x – 32xбольшой | Ледяное озеро/3rd | Да | Да |
Подводя итог, можно сказать, что INT8 поддерживает тип данных и вычисления INT8; Включенный DL Boost поддерживает Deep Learning Boost.
Исходные данные
В следующей таблице сравниваются стоимость и относительная производительность инстансов c5 и c6.
Задержка и пропускная способность измерялись с помощью 10000 XNUMX запросов логического вывода к конечным точкам Sage maker.
Задержка E2E конечной точки вывода и анализ затрат | |||||
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.
Метрика | FP32 | INT8 |
Точное совпадение | 85.8751 | 85.5061 |
F1 | 92.0807 | 91.8728 |
Ассоциация Репо GitHub поставляется со сценариями для проверки точности набора данных SQuAD. Ссылаться на вызывать-INT8.py и вызывать-FP32.py скрипты для тестирования.
Расширение Intel для PyTorch
Intel® Extension for PyTorch* (проект с открытым исходным кодом на GitHub) дополняет PyTorch оптимизациями для дополнительного повышения производительности на оборудовании Intel. Большинство оптимизаций в конечном итоге будут включены в стандартные выпуски PyTorch, и целью расширения является предоставление актуальных функций и оптимизаций для PyTorch на оборудовании Intel. Примеры включают инструкции векторной нейронной сети AVX-512 (AVX512 VNNI) и расширенные матричные расширения Intel® (Intel® AMX).
На следующем рисунке показано расширение Intel для архитектуры PyTorch.
Более подробное руководство пользователя (функции, настройка производительности и т. д.) для расширения Intel® для PyTorch см. Расширение Intel® для PyTorch* руководство пользователя.
Об авторах
Рохит Чоудхари является старшим архитектором решений в группе стратегических счетов в AWS.
Анируддха Каппаганту является инженером-разработчиком программного обеспечения в группе платформ искусственного интеллекта в AWS.
Энтони Вэнс является архитектором искусственного интеллекта в Intel с 19-летним опытом работы в области компьютерного зрения, машинного обучения, глубокого обучения, встроенного программного обеспечения, графических процессоров и FPGA.
- SEO-контент и PR-распределение. Получите усиление сегодня.
- Платоблокчейн. Интеллект метавселенной Web3. Расширение знаний. Доступ здесь.
- Источник: 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
- Создатель мудреца Амазонки
- Америка
- и
- ответ
- API
- Применение
- прикладной
- подхода
- архитектура
- МЫ
- области
- массив
- статьи
- AS
- At
- доступен
- AWS
- Пропускная способность
- основанный
- BE
- становиться
- не являетесь
- эталонный тест
- между
- повышение
- приносить
- строить
- by
- под названием
- CAN
- возможности
- случаев
- определенный
- изменения
- проверка
- облако
- код
- общение
- сравненный
- сравнение
- вычисление
- Вычисление
- компьютер
- Компьютерное зрение
- вычисление
- Конфигурация
- Состоящий из
- потребление
- Container
- контекст
- контексты
- соответствующий
- Цена
- Расходы
- покрытый
- Обложки
- Создайте
- создали
- Создающий
- создание
- изготовленный на заказ
- данным
- глубоко
- глубокое обучение
- доставить
- убивают
- развертывание
- развертывание
- развертывания
- Производный
- описывать
- подробность
- подробный
- подробнее
- застройщиков
- Развитие
- Устройства
- различный
- Docker
- документ
- документации
- дело
- Доллар
- управляемый
- Голландский
- Edge
- Эффективный
- встроенный
- включить
- включен
- охватывает
- поощрять
- впритык
- Конечная точка
- инженер
- Английский
- со временем
- Каждая
- пример
- Примеры
- исключение
- существующий
- ожидать
- ожидаемый
- опыт
- экспресс
- расширение
- расширения
- дополнительно
- Face
- Особенности
- несколько
- фигура
- Файл
- плавающий
- поток
- после
- следующим образом
- Что касается
- лес
- форма
- формат
- вперед
- FPGA
- Рамки
- каркасы
- Французский
- частота
- от
- функция
- Доходы
- Gen
- получить
- GitHub
- данный
- дает
- Go
- GPU / ГРАФИЧЕСКИЙ ПРОЦЕССОР
- предоставленный
- большой
- GUEST
- Guest Post
- руководство
- Аппаратные средства
- Есть
- помощь
- на высшем уровне
- высший
- кашель
- хостинг
- Как
- How To
- Однако
- HTML
- HTTP
- HTTPS
- ICE
- Личность
- изображение
- осуществлять
- подразумеваемый
- Импортировать
- важную
- улучшать
- улучшение
- улучшение
- in
- включают
- включены
- повышение
- информация
- вход
- пример
- вместо
- инструкции
- интегрированный
- Intel
- интеллектуальный
- интеллектуальная собственность
- Намерение
- IT
- итерации
- JPG
- хранение
- Основные
- известный
- озеро
- Фамилия
- Задержка
- запуск
- изучение
- Лицензия
- Лицензирована
- такое как
- Ограниченный
- линия
- Linux
- Списки
- искать
- от
- машина
- обучение с помощью машины
- производитель
- многих
- матрица
- означает
- Память
- может быть
- мигрировать
- миллиона
- ML
- модель
- Модели
- БОЛЕЕ
- самых
- MS
- имя
- Необходимость
- сеть
- нейронной сети
- Новые
- ноутбук
- of
- предлагают
- on
- открытый
- с открытым исходным кодом
- оптимизация
- оптимизированный
- OS
- в противном случае
- общий
- обзор
- собственный
- путь
- производительность
- трубопровод
- Платформы
- Платон
- Платон Интеллектуальные данные
- ПлатонДанные
- Точка
- Популярное
- Португальский
- возможное
- После
- мощностью
- Питание
- практическое
- Точность
- предпосылки
- обработка
- процессоры
- Проект
- собственность
- Права собственности
- обеспечивать
- при условии
- приводит
- Push
- толкнул
- Питон
- pytorch
- вопрос
- Вопросы
- САЙТ
- Reading
- реального времени
- Управление по борьбе с наркотиками (DEA)
- уменьшить
- Цена снижена
- снижает
- публикации
- хранилище
- представленный
- представляющий
- Требования
- исследованиям
- Полезные ресурсы
- ответ
- результат
- Итоги
- правые
- Роли
- Run
- Бег
- пожертвовав
- sagemaker
- Вывод SageMaker
- Сохранить
- масштабируемые
- скрипты
- Раздел
- сегмент
- служить
- набор
- установка
- Оболочка
- должен
- показывать
- значительный
- существенно
- просто
- Размер
- Размеры
- So
- уже
- Software
- разработка программного обеспечения
- Решение
- Решения
- Источник
- Южная
- Южная Америка
- Испанский
- потраченный
- SQ
- площадь
- Шаг
- Шаги
- акции
- диск
- Стратегический
- предмет
- такие
- суммировать
- поставляется
- поддержка
- Поддержка
- ТАБЛИЦЫ
- команда
- tensorflow
- Терминал
- terms
- тестXNUMX
- Тестирование
- который
- Ассоциация
- их
- пропускная способность
- раз
- в
- инструменты
- факел
- сделка
- трансформеры
- Типы
- новейший
- использование
- Информация о пользователе
- обычно
- видение
- способы
- , которые
- в то время как
- Википедия.
- будете
- без
- лет
- Ты
- ВАШЕ
- себя
- зефирнет