Изучаем ONNX для применения в трейдинге - страница 5

 

Виртуальная встреча сообщества ONNX — март 2021 г.



000 ONNX 20211021 Добро пожаловать в ONNX SC Выпуск дорожной карты развития

Семинар ONNX начался с введения, в котором организаторы подчеркнули важность участия сообщества в развитии экосистемы ONNX. Они также представили обзор повестки дня, которая включала обновления статистики ONNX, презентации сообщества и обсуждения дорожной карты Руководящим комитетом ONNX. Предложения дорожной карты направлены на улучшение поддержки, надежности и удобства использования платформы ONNX и включают в себя операторы предварительной обработки, C API, федеративное обучение и лучшую интеграцию обработки данных и логического вывода. Также обсуждался недавний выпуск версии 1.10 спецификаций ONNX, и участникам было предложено задавать вопросы и участвовать в канале ONNX Slack, чтобы продолжить обсуждение.

  • 00:00:00 В этом разделе семинара организаторы представляют обзор и приветствуют всех участников. Они упоминают об огромном количестве продуктов, доступных для ИИ, и призывают участников ознакомиться с ними. Общие цели семинара — получить последние обновления о ONNX, его процессах, дорожной карте и выпусках, а также узнать от участников сообщества о том, как используется ONNX. Они призывают участников делиться своими отзывами, более активно участвовать в работе руководящего комитета ONNX, SIG и рабочих групп. Они предоставляют обзор повестки дня, которая включает в себя логистику рабочей группы ONNX, презентацию о состоянии государства, которую представляет Вэньмин И, за которой следует Алекс, и презентации сообщества. Наконец, они представляют интересные обновления статистики ONNX, включая почти 400-процентное увеличение ежемесячных загрузок до 1,6 миллиона в месяц, что свидетельствует о здоровом росте экосистемы.

  • 00:05:00 В этом разделе спикер обсуждает прогресс и рост экосистемы ONNX, подчеркивая важность вклада компаний в сообщество. Докладчик упомянул проект библиотеки Deep Java от Amazon, который создал хороший опыт для сообщества Java и значительно вырос. Несколько коммерческих компаний, таких как IBM, AMD и Sony, обеспечивают поддержку экосистемы и помогают ONNX стать отраслевым стандартом. Спикер также рассказывает об управлении сообществом и новых членах руководящего комитета и приглашает принять участие в обсуждениях дорожной карты, канале Slack, вопросах и ответах на GitHub, а также внести свой вклад в документацию и блоги. Следующий оратор рассказывает о дорожной карте, которая имеет решающее значение для движения в правильном направлении и снижения моделей ONNX до батарей для ЦП и ускорителей.

  • 00:10:00 В этом разделе спикер обсуждает обсуждения дорожной карты Руководящим комитетом ONNX, которые проходили летом. Предложения, полученные от разных участников, делятся на четыре группы по три предложения в каждой, и каждая группа представляется соответствующим подписчикам для утверждения и реализации. Предложения варьируются от операторов предварительной обработки, API-интерфейсов C, проверки моделей, поддержки создания моделей на других языках, добавления информации метаданных в тензоры, лучшей интеграции обработки данных и вывода, определения концепций для федеративного обучения, определения свойств обработки метаданных для повышения целостности. данных, моделей и т. д. Цель состоит в том, чтобы обеспечить лучшую поддержку, надежность и удобство использования платформы ONNX для всех пользователей.

  • 00:15:00 В этом разделе спикер обсуждает недавний выпуск версии 1.10 спецификаций ONNX и благодарит участников за их усердную работу. Будут дальнейшие обсуждения и подробности об этом последнем изменении на веб-сайте next.ai. Спикер предлагает аудитории задавать любые вопросы в чате или общем Slack-канале ONNX, чтобы продолжить разговор.
000 ONNX 20211021 ONNX SC Welcome Progress Roadmap Release
000 ONNX 20211021 ONNX SC Welcome Progress Roadmap Release
  • 2021.11.06
  • www.youtube.com
Event: LF AI & Data Day - ONNX Community Meeting, October 21, 2021Talk Title: ONNX Steering Committee (SC) Update - Host Welcome, Progress, Governance, Roadm...
 

День сообщества ONNX! Прямой эфир 24 июня 2022 г.

Это мероприятие будет проходить лично в новом кампусе Microsoft в Силиконовой долине в пятницу, 24 июня.

На мероприятии будут представлены обновления сообщества ONNX, истории партнеров и пользователей, а также множество сетей сообщества.



День сообщества ONNX!

Краткое содержание:

  • 00:00:00 - 01:00:00 Видео на YouTube "День сообщества ONNX!" обсуждает обновления и улучшения в работе сообщества ONNX по функциональной совместимости и гибкости для разработчиков, работающих с моделями машинного обучения. Сообщество ONNX работает под открытым управлением, и три категории инструментов: создание, запуск и визуализация поддерживают участие сообщества и использование ONNX. Видео содержит отчеты о ходе работы по различным аспектам, таким как обновления спецификаций ONNX, новые операторы и улучшения в конвертерах. Докладчик также подчеркивает преимущества ONNX, в том числе более широкий круг клиентов для поставщиков оборудования и доступ к нескольким платформам и аппаратным ускорителям для пользователей. Будущее ONNX включает в себя понятие функций ONNX для предоставления исполняемой спецификации.

  • 01:00:00 - 02:00:00 В рамках Дня сообщества ONNX обсуждаются несколько тем, связанных с ONNX, в том числе Зоопарк моделей ONNX и учебные пособия по ONNX, в которых представлены предварительно обученные модели машинного обучения и демонстрации для использования с моделями ONNX. Видео освещает работу рабочей группы по предварительной обработке ONNX, целью которой является стандартизация операций предварительной обработки данных для улучшения развертывания модели. Спикеры также обсудят основы квантования нейронных сетей и то, как TensorRT поддерживает квантованные сети посредством различных слияний, включая квантование после обучения и обучение с учетом квантования. Они также углубляются в ограничения ONNX в представлении квантования с низкой точностью и предлагают стратегию расширения его репрезентативной мощности с помощью отсечения для обеспечения точности между квантованными и деквантованными узлами. Наконец, в видео рассматривается пример точности квантованной и точно настроенной сохраненной модели TensorFlow.

  • 02:00:00 - 03:00:00 На Дне сообщества ONNX выступили многочисленные докладчики, которые обсуждали важность метаданных в моделях машинного обучения и поддержку виртуальной машины Java (JVM) в ONNX. Выступавшие подчеркнули использование аппаратных технологий для защиты данных и подчеркнули совместимость ONNX с различными библиотеками машинного обучения, включая DeepJ и Deep Java Library. Они продемонстрировали использование байтовых буферов для повышения эффективности и обсудили важность стандартизации метаданных для ответственного и объяснимого ИИ. В презентациях также были представлены истории успеха, в том числе улучшенная среда выполнения китайского банка с использованием ONNX и среды выполнения ONNX. Сообщество ONNX работает над созданием метаданных, запросом и фильтрацией рабочего процесса концентраторов с поддержкой машиночитаемых метаданных в ONNX. В целом презентации подчеркнули сильные стороны платформы ONNX и приверженность сообщества ее развитию.

  • 03:00:00 - 04:00:00 "День сообщества ONNX!" Видео охватывает различные обновления и функции, связанные с экосистемой ONNX. Это включает в себя обсуждение имитации квантования для уменьшения падения точности между квантованными и предварительно обученными моделями, развертывание моделей TensorFlow, обученных с помощью набора инструментов NVIDIA, на графе ONNX с использованием TensorRT, а также улучшения, внесенные в среду выполнения ONNX, такие как оптимизированная форма тензора, поставщики выполнения и поддержка мобильных платформ. Кроме того, обсуждались обновления самой ONNX, включая поддержку библиотеки XNNpack и создание расширений среды выполнения ONNX для задач предварительной и последующей обработки. Видео также знакомит с библиотекой Optimum, которая фокусируется на ускорении моделей трансформаторов от обучения до логического вывода.

  • 04:00:00 - 05:00:00 День сообщества ONNX включал обсуждения различных тем, связанных со средой выполнения ONNX и вариантами ее использования. Спикеры рассказали о возможностях пакета среды выполнения ONNX, преобразователя PiTorch ONNX и пользовательских операций в PyTorch. Они также обсудили варианты использования, такие как мониторинг процессов и оцифровка коммерции, а также проблемы, связанные с развертыванием модели и тестированием на совместимость. На протяжении всего мероприятия подчеркивалось, что среда выполнения ONNX может помочь повысить производительность и уменьшить размер развертывания, но совместимость и выбор необходимы для обеспечения стабильного качества и скорости.

  • 05:00:00 - 06:00:00 На Дне сообщества ONNX несколько докладчиков обсуждали различные инструменты и методы, используемые для оптимизации и развертывания моделей машинного обучения с использованием платформы ONNX. NVIDIA рассказала о своем подходе к улучшению качества изображения и совместимости моделей с использованием разделения блоков для логического вывода, а также об инструментах, специфичных для ONNX, для отладки и модификации моделей. Qualcomm объяснила, как они интегрировали ускорители ИИ в свои проекты, используя ONNX в качестве формата обмена, и представила свой программный стек, включающий среду выполнения ONNX и различные инструменты для оптимизации и развертывания. Кроме того, несколько докладчиков обсудили оптимизацию моделей ONNX с использованием таких методов, как оптимизация модулей, создание контрольных точек и определение формы. Мероприятие подчеркнуло универсальность и масштабируемость ONNX для различных вариантов использования устройств и призвало к дальнейшему развитию проекта ONNX. Последняя часть посвящена упрощению процесса развертывания моделей машинного обучения в Spark с использованием предложения SPIP, которое направлено на то, чтобы скрыть для разработчиков сложности преобразования обработки вкладок и инициализации модели. Были представлены экосистема Ascend AI и ее процессоры, включая программный уровень «Kung», который предоставляет API для создания приложений и сервисов AI. Был обсужден программный стек Khan и представлена дорожная карта по его добавлению в качестве нового исполняющего провайдера для среды выполнения ONNX. Мероприятие завершилось дискуссиями за круглым столом по таким темам, как ONNX для мобильных устройств и периферийных устройств, развертывание моделей, обучение и эксплуатация, конверсии и операторы, за которыми последовал счастливый час и опросы.

Подробное резюме временной шкалы:
  • 00:15:00 Создайте режим в предпочитаемом вами фреймворке, а затем экспортируйте свою модель в общий формат, который можно использовать в других фреймворках и инструментах. Это обеспечивает большую совместимость и гибкость для разработчиков, работающих с моделями машинного обучения. Кроме того, ONNX удобен для поставщиков оборудования, которые хотят создать оптимизированные среды выполнения для моделей машинного обучения, поскольку теперь они могут сосредоточиться на поддержке общего набора операторов, определенных ONNX, вместо того, чтобы поддерживать несколько разных платформ.

  • 00:20:00 В этом разделе спикер обсуждает преимущества использования ONNX, который обеспечивает доступ к множеству фреймворков и аппаратных ускорителей для пользователей, а также более широкий круг клиентов для поставщиков оборудования. Разработка ONNX осуществляется сообществом под открытым управлением, что означает, что ее не контролирует ни одна компания. Спикер также выделяет рабочие группы, которые включают в себя архитектуру и инфраструктуру, преобразователи операторов, зону модели, учебные пособия и новую рабочую группу предварительной обработки. Далее докладчик описывает три категории инструментов: создание, запуск и визуализацию моделей ONNX, а также предоставляет некоторые статистические данные за последние шесть месяцев, такие как увеличение числа PR, участников, звезд и ежемесячных загрузок. усиление участия сообщества и использования ONNX.

  • 00:25:00 В этом разделе спикер обсуждает выпуски и обновления, которые произошли в сообществе ONNX с момента последнего обновления сообщества. В начале этого года была выпущена версия ONNX 1.11, в которой были представлены новые операторы и обновлены некоторые операторы, в том числе концентратор моделей ONNX, который позволяет пользователям извлекать предварительно обученные модели из разных зоопарков моделей. Кроме того, были представлены такие утилиты, как утилита компоновки и построитель функций, а также исправления ошибок и улучшения инфраструктуры. Недавно был представлен ONNX 1.12 с новыми операторами, улучшениями формы и логического вывода, а также с поддержкой Python 3.10. Спикер также обсуждает процесс дорожной карты ONNX и 12 запросов на дорожную карту, которые были отобраны для дальнейшего продвижения и распределены по рабочим группам. Эти запросы включают реализацию новых операторов для предварительной обработки данных, C API для ONNX и многое другое.

  • 00:30:00 В этом разделе видео спикер обсуждает прогресс, достигнутый в удовлетворении потребности в более структурированной квантованной информации, проходящей через модель и тензоры. Предложение о сквозном конвейере с операторами ONNX подвергается дальнейшей доработке, поскольку оно определено как долгосрочный перехват. До сих пор был достигнут некоторый прогресс с конвертерами, с более высокофункциональными операциями, получившими поддержку. Спикер также затрагивает различные области, такие как потребность в большем количестве добровольцев, поскольку это общественный проект, и просьбу к компаниям о привлечении большего числа людей к работе. Докладчик перечисляет различные ресурсы, такие как веб-сайт, GitHub, каналы Slack и календарь ONNX.

  • 00:35:00 В этом разделе спикер обсуждает последние обновления и улучшения ONNX. Было выпущено два последних выпуска с различными обновлениями, такими как улучшенное влияние чипа на операторов и более стабильная обработка неправильного и необязательного ввода. Кроме того, докладчик отмечает добавление двух важных выпусков: Model Composer и Function Builder. Конвертер моделей также стал более стабильным, и в будущем команда планирует улучшить поддержку смешанных выпусков. В целом невозможно перечислить все улучшения, сделанные участниками, но они продолжают работать над улучшением ONNX.

  • 00:40:00 Рама из Operator SIG рассказал о последних изменениях и обновлениях спецификации ONNX. В центре внимания Operator SIG — развитие набора операторов, составляющих спецификацию ONNX, добавление новых операторов и уточнение их спецификаций. В последних двух выпусках были введены новые операторы, такие как выборка сетки и нормализация слоя. Существующие операторы, такие как scatter op, были обновлены для поддержки повторяющихся индексов, в то время как некоторые операторы были расширены для обеспечения поддержки таких типов, как b float 16 и необязательных типов. Рама также упомянул о планах по продвижению некоторых новых операторов в скором времени.

  • 00:45:00 В этом разделе спикер обсуждает планы на будущее ONNX и компромисс между наличием компактной спецификации и поддержкой новых типов моделей, требующих большего количества операций в спецификации. Решением этой проблемы является понятие функций ONNX, которые предоставляют исполняемую спецификацию для операции и обеспечивают баланс между конфликтующими требованиями. Докладчик упоминает о планах по сокращению набора примитивных операторов путем превращения их в функции и предоставления возможности авторинга в Python с использованием подмножества под названием ONNX-Crypt. Примеры функций, таких как функция активации Jello и операция отсева, приведены для иллюстрации того, как использование потока управления упрощает естественное и компактное определение их семантики.

  • 00:50:00 В этом разделе Кевин Чен сообщает обновленную информацию о сигнале преобразователя и работе, проделанной со времени последней встречи. Он обсуждает обновления интерфейсных конвертеров, включая конвертеры PyTorch, TensorFlow и sk-learn в ONNX. Для конвертера PyTorch последний выпуск поддерживает экспорт ONNX до смещения ONNX 16, и были добавлены новые функции, такие как возможность экспортировать модули нейронной сети специально как локальные функции ONNX. Чен также знакомится с обновлениями внутреннего конвертера, такими как централизованность ONNX и конвертер ONNX TensorFlow. Наконец, Чен представляет дорожную карту для конвертера и призывает людей принять участие.

  • 00:55:00 В этом разделе спикер обсуждает обновления и улучшения для конвертера SK Learn to ONNX, конвертера ключей детектора ONNX и конвертера ONNX TensorFlow. Пользователям рекомендуется обновиться до последних версий для улучшения взаимодействия с пользователем при преобразовании моделей. Дорожная карта для преобразователя включает в себя такие цели, как улучшение инструментов сообщества, стандартизация вспомогательных функций и улучшение поддержки оператора и смещения. Пользователям рекомендуется присоединиться к каналу ONNX Converters в Slack или подписаться на список рассылки ONNX Converter SIG, чтобы участвовать в сообществе и оставлять отзывы.

  • 01:00:00 Джеки из Microsoft представляет зоопарк моделей ONNX и учебные пособия по ONNX. ONNX Model Zoo — это коллекция предварительно обученных современных моделей машинного обучения, в основном предоставленных сообществом ONNX. В настоящее время в зоопарке 168 моделей, в том числе 40 моделей ONNX и 35 моделей ONNX на основе зрения для классификации изображений и обнаружения объектов. Учебники по ONNX содержат документы и записные книжки, демонстрирующие ONNX на практике для различных сценариев и платформ. Со времени последнего семинара в Model Zoo было внесено несколько улучшений, включая новые квантованные модели от Intel и расширенный тестовый охват за счет рутинного тестирования CI, исправление поврежденных наборов тестовых данных и сотрудничество с командой Hugging Face для создания веб-интерфейса для демонстрации моделей.

  • 01:05:00 Спикеры обсуждают наличие руководств и демонстраций по использованию ONNX, включая веб-сайт, который позволяет легко обрабатывать изображения и модели ONNX, написав всего несколько строк кода Python. Они также обсуждают будущую дорожную карту для модельного зоопарка ONNX с планами, позволяющими ORT запускать больше моделей и включать больше вкладов, включая квантованные модели и модели обучающих примеров. Кроме того, они освещают работу рабочей группы по предварительной обработке ONNX, которая занимается упрощением предварительной обработки данных для использования с моделями ONNX.

  • 01:10:00 В этом разделе видео спикер обсуждает отсутствие стандартизации в конвейерах предварительной обработки данных, выделяя различия между популярными библиотеками, такими как Pillow и OpenCV, в предварительной обработке изображений. Эти несоответствия могут привести к проблемам с точностью при развертывании моделей на разных платформах. Докладчик представляет цель группы ONNX по стандартизации операций предварительной обработки данных, чтобы избежать двусмысленности и улучшить развертывание модели. Группа работала над созданием инфраструктуры для включения предварительной обработки данных в модели, например, над разработкой утилит композиции и оператора карты последовательности для пакетной обработки. Группа ONNX также исследует способы пометить часть модели предварительной обработки для идентификации серверными частями. Кроме того, группа предлагает расширения для оператора изменения размера, включая дополнительный фильтр сглаживания и политику сохранения соотношения сторон.

  • 01:15:00 Выступающие обсуждают реализацию предлагаемой операции по центру обрезки или пути, которая предлагает более высокий уровень абстракции и опирается на существующие операторы площадок и срезов. Они призывают зрителей присоединяться к их каналу Slack и ежемесячным встречам для обмена идеями. Следующая презентация сделана Хоакином Антоном, который резюмирует цель рабочей группы предварительной обработки ONNX и рассказывает о недавней работе, которую они проделали. Марвин из Италии также представляет себя и свою работу в качестве разработчика и специалиста по обработке данных в области обработки естественного языка.

  • 01:20:00 Спикер обсуждает важность проверки документации ONNX перед началом работы над проектом. Они объясняют, что не все модели можно легко преобразовать или оптимизировать для ONNX, и важно убедиться, что рабочие функции, необходимые для проекта, реализованы в используемой среде. Кроме того, выступающий не советует предполагать, что наилучшие параметры производительности всегда оптимизируют модель, поскольку иногда эти параметры могут фактически снизить точность. В целом важно тщательно продумать архитектуру проекта и проверить документацию ONNX и такие инструменты, как оптимизатор ONNX, чтобы избежать ошибок и обеспечить успешное развертывание в облаке или на устройствах.

  • 01:25:00 В этом разделе Джирай Перри из Nvidia обсуждает основы квантования нейронных сетей и то, как TensorRT поддерживает квантованные сети посредством различных слияний. Он объясняет, что квантование — это процесс преобразования непрерывных значений в дискретный набор значений с использованием методов линейного или нелинейного масштабирования, которые могут обеспечить более быстрый вывод и меньший объем памяти. Тем не менее, могут быть компромиссы с точностью. Джирай также упоминает различные схемы квантования и важность параметров квантования или параметров q. Затем он представляет квантование после обучения (PTQ) и обучение с учетом квантования (QAT), а также то, как они могут определять параметры q.

  • 01:30:00 В этом разделе видео обсуждается квантование после обучения (PTQ) и обучение с учетом квантования (QAT). PTQ включает запуск предварительно обученной модели на наборе калибровочных данных и сбор статистики по слоям для определения динамического диапазона для каждого слоя для вычисления параметров квантования. QAT вводит узлы qdq на желаемых слоях и точно настраивает график для небольшого количества эпох, чтобы изучить параметры модели или квантования. PTQ обычно быстрее и имеет меньший контроль над конечной точностью, в то время как QAT медленнее, но обеспечивает больший контроль точности. В видео также показаны различия в подходах между набором инструментов Google TF Mod и набором инструментов квантования NVIDIA TF2, созданным на основе TF Mod.

  • 01:35:00 В этом разделе спикер обсуждает различия между набором инструментов квантования Nvidia и модом tf с точки зрения размещения узлов qdq. Инструментарий Nvidia помещает узлы qdq на входы и веса слоя в сети, в то время как мод tf рекомендует размещать их на веса и выходы слоя. Докладчик также описывает, как TensorRT оптимизирует модели с помощью слияния слоев, таких как точечная свертка слияния и объединение пулов, а также специальные слияния для узлов qdq. Кроме того, оптимизатор графа TensorRT выполняет распространение qdq для перемещения узлов q и dq, чтобы гарантировать, что максимальная часть графа выполняется на входе. Представленные примеры слияния включают квантование среднего пула и слияние с поэлементным сложением. Наконец, говорящий исследует слияние квантования в остаточном блоке.

  • 01:40:00 В этом разделе спикер объясняет важность добавления узлов qdq в ветвь identity, чтобы получить наилучшую производительность от Tensor RT при перезагрузке операций. Результирующие слияния выглядят как dq узлов весов и входных данных, распространяемых за пределы объявления и объединяемых с q узлами после слоя добавления. Докладчик подчеркивает необходимость наличия узлов qdq в исходном графе для получения наилучшей производительности для вашей модели и предупреждает, что неправильное их использование может привести к снижению производительности модели. В заключение докладчик приглашает к обсуждению того, как вставлять узлы qdq в набор инструментов TensorFlow.

  • 01:45:00 В этом разделе спикер признает технические трудности с навигацией по слайдам и заверяет аудиторию, что они будут устранены в ближайшее время. Затем они переходят к обсуждению тематического исследования точности после получения квантованной и точно настроенной сохраненной модели TensorFlow. Зрителям предлагается задать любые вопросы перед небольшим перерывом.

  • 01:50:00 В этом разделе спикер обсуждает концепцию квантования и то, как ее можно использовать для представления низкой точности при квантовании нейронных сетей. Квантование представляет собой комбинацию двух функций: функции квантования, которая отображает значения с плавающей запятой в целые значения, и функции квантования, которая отображает целые значения обратно в представление с плавающей запятой. Комбинация этих двух функций называется фальшивым квантованием. Этот процесс позволяет отображать представления в целочисленные представления. Использование равномерного квантования, особенно с пониженной точностью, позволило получить 1,7 миллиарда выборок в секунду с задержкой менее трех микросекунд на футбольной платформе rf.

  • 01:55:00 В этом разделе спикер обсуждает ограничения ONNX в представлении квантования с низкой точностью, особенно ниже восьми бит, и предлагает стратегию расширения репрезентативных возможностей ONNX за счет использования отсечения для повышения точности между квантованными и деквантованными узлами. . Эта стратегия добавляет дополнительную функцию отсечения, которая поддерживается целочисленными границами и не влияет на обратную совместимость с существующими библиотеками и инструментами. Однако эта стратегия распространяется только на то, что квантованное линейное позволяет использовать как оператор, и имеет некоторые ограничения в отношении различных типов округлений. Докладчик также упоминает об их усилиях по квантованию на диалекте возведения в степень (tuonex), который представляет фальшивое квантование только в одном узле, но при этом распространяется на более широкий набор сценариев с входными трансляциями, опциями двоичного квантования и многим другим. Этот формат используется как часть их усилий по развертыванию на fpga, а их инструменты, такие как q ONNX и nqcdq, интегрируются с существующими библиотеками квантования и получили признание в сообществе fpga.

  • 02:00:00 В этом разделе Даниэль из Mithril обсуждает, как они разработали решение под названием «Слепой ИИ», которое позволяет развертывать модели ONNX в безопасных анклавах, использующих аппаратное обеспечение для защиты данных. Используя аппаратные технологии, это решение обеспечивает изоляцию и шифрование содержимого памяти анклава, что предотвращает любые попытки дампа извне. Данные расшифровываются внутри анклава, и любой злоумышленник не может получить доступ к данным, что является огромным преимуществом для владельца данных, когда речь идет о конфиденциальности и безопасности. Blind AI — это решение с открытым исходным кодом, которое легко внедрить, и поставщику ИИ не составляет труда поддерживать и продавать это решение.

  • 02:05:00 В этом разделе спикер обсуждает возможность развертывания моделей ИИ с гарантиями прогресса, используя Python SDK для безопасной загрузки моделей и отправки данных для анализа без предоставления доступа к данным третьим лицам. Также подчеркивается выразительность ONNX, которая позволяет охватывать различные варианты использования, включая досмотр багажа, анализ медицинских документов и распознавание лиц. Докладчик также представляет различные модели, используемые на практике, и их скорость внутри и вне анклава с разумной дополнительной задержкой из-за обеспечиваемой защиты. Кроме того, для ONNX требуется минимальная кодовая база, что делает его лучше по соображениям безопасности и позволяет усилить каждого оператора, обеспечивая безопасное использование анклава. Презентация завершается информацией об их GitHub и о том, как они могут охватывать различные сценарии, а также возможностью углубиться в технические детали безопасности.

  • 02:10:00 В этом разделе спикер обсуждает предложение по включению машиночитаемых метаданных ИИ в ONNX, которое включает в себя отслеживание происхождения и других соответствующих характеристик модели, чтобы определить, как она движется с течением времени и развивается в зависимости от конкретного варианта использования. Первоначально предложение было представлено руководящему комитету ONNX в октябре 2020 года, и теперь команда хочет расширить предложение, включив в него создание, запрос и визуализацию метаданных в рамках сквозного проектирования концентраторов моделей и зоопарки. Докладчик подчеркивает важность метаданных как ключевого фактора ответственного и объяснимого ИИ, а также подчеркивает их полезность для сужения видов отказов и выявления проблемных мест систем ИИ.

  • 02:15:00 В этом разделе презентации ONNX Community Day докладчики обсуждают важность метаданных в моделях и возможности использования RDF для более машиночитаемого и стандартизированного подхода к представлению метаданных. Они объясняют, как этот подход может помочь установить отношения между сущностями, поддерживать прозрачность и отслеживать происхождение, отвечая на вопросы о том, что привело к тому, что модель имеет более низкую точность, чем ожидалось. Докладчики также обсудят возможности запроса метаданных с помощью SPARQL и объяснят, как модели с метаданными в формате RDF могут предоставить информацию, выходящую за рамки того, что может предложить простая карточка модели.

  • 02:20:00 В этом разделе спикер обсуждает словарь управления печью, набор руководящих принципов для обеспечения доступности, взаимодействия и повторного использования данных и цифровых активов. Принципы Furnace были определены семантическим веб-сообществом и включают справедливость, надежность и устойчивость. Метаданные в кодировке RDF можно запрашивать с помощью онтологии Furnace, чтобы обнаруживать модели, подходящие для задач НЛП, идентифицировать создателей и размер моделей, а также отслеживать углеродный след моделей для их классификации и сортировки. Расширяемость RDF и его языка запросов Sparkle обеспечивают бесконечную расширяемость за пределы словаря, выбранного экзаменационными органами. Это может позволить отслеживать ответственный ИИ и ток смешанной точности.

  • 02:25:00 В этом разделе докладчики обсуждают возможности запросов и фильтрации в рамках Дня сообщества ONNX. Они демонстрируют, как автор метаданных может идентифицировать модели, обученные с помощью наборов данных, содержащих личную или личную информацию, с помощью тегов метаданных. Докладчики также демонстрируют, как расширенные возможности фильтрации позволяют пользователям запрашивать модели со смешанной точностью. Они подчеркивают визуализацию профилей моделей и объяснимые методы искусственного интеллекта для эффективного отображения метаданных. Докладчики призывают к действиям, чтобы рассмотреть конкретный дизайн вокруг создания и использования модели, который охватывает создание всего метаданных, запросы и фильтрацию из рабочего процесса концентраторов с поддержкой машиночитаемых метаданных в ONNX. В настоящее время они готовят реализацию соломенного человека и изучают технологии для создания метаданных.

  • 02:30:00 В этом разделе Адам Покок из Oracle Labs обсуждает важность поддержки виртуальной машины Java (JVM) с помощью ONNX. Хотя большинство приложений машинного обучения написано на языках, отличных от Python, таких как Java, машинное обучение на этих языках имеет решающее значение. Java API среды выполнения ONNX был разработан Oracle Labs для включения машинного обучения в Java и других языках с такими функциями, как минимальное влияние на производительность и простота развертывания. Адам также предоставляет пример кода, чтобы продемонстрировать сходство между Java API и другими API.

  • 02:35:00 В этом разделе докладчик обсуждает, как передавать данные и запускать модель с помощью тензора ONNX, представления байтового буфера для потока байтов. Хотя в Java можно использовать обычные массивы, спикер рекомендует использовать байтовые буферы из-за их нулевого пути копирования, что позволяет повысить эффективность обработки данных. Докладчик также отмечает, что многомерные массивы Java не оптимальны для машинного обучения, поскольку они не являются плоскими и требуют большого количества переборов указателей. Докладчик также обсуждает планы по обновлению до более новой версии Java, добавлению новых функций и построению в соответствии с деревом времени выполнения ONNX. Кроме того, спикер представляет библиотеку с открытым исходным кодом, которая записывает модели ONNX из Java, которая доступна в любом месте JVM.

  • 02:40:00 В этом разделе докладчики обсуждают совместимость набора инструментов ONNX с новыми библиотеками машинного обучения, такими как DeepJ, и то, как он интегрируется со средой выполнения ONNX для обеспечения первоклассной производительности. DeepJ создает уровень абстракции над различными библиотеками глубокого обучения, абстрагируя все необходимые библиотеки и предоставляя несколько бэкендов операторов для использования механизмами машинного обучения, такими как Apache MixTape, Tensorflow, PyTorch, ONNX, Pedal и другие. Они также изучают способы стандартизации метаданных в этом наборе инструментов, чтобы создавать стандартные форматы метаданных, продолжая расширять перечисление операторов.

  • 02:45:00 В этом разделе спикер обсуждает преимущества библиотеки Deep Java, которая включает в себя набор предварительно обученных моделей, которые охватывают такие задачи, как классификация изображений, обнаружение объектов, анализ настроений и распознавание действий. Библиотека готова к эксплуатации и прошла тщательное тестирование для обеспечения максимально возможной скорости и контроля памяти, о чем свидетельствует ее успешное использование с DHL в течение более полугода без каких-либо ошибок. Кроме того, спикер поделился несколькими вариантами использования, в которых ONNX и среда выполнения ONNX использовались для достижения значительного прироста производительности и уменьшения задержки. В одной из историй успеха рассказывается о китайском банке, который смог сократить время выполнения своих моделей оптического распознавания символов с одной секунды до менее 400 миллисекунд на одном изображении. Кроме того, спикер представляет концепцию Hybrid Engine, которая позволяет загружать два двигателя одновременно и обеспечивает плавный переход между ними.

  • 02:50:00 В этом разделе спикер объясняет метод использования прямого буфера для отправки указателей из Python непосредственно в среду выполнения ONNX, что позволяет избежать копирования данных и обеспечивает повышение производительности. Они также представляют ND Manager, древовидную архитектуру, реализованную в библиотеке DeepDraw для обеспечения более экономичных коллекций памяти. Докладчик обсуждает, как клиенты могут перейти от использования PyTorch к среде выполнения ONNX, не меняя ни одной строки кода. Позже спикер из Hype Factors рассказывает о своей компании, занимающейся медиа-анализом, и о том, как они решили построить свою инфраструктуру на основе JVM из-за ее опыта разработчиков, экосистемы повторно используемых компонентов и высокой масштабируемости.

  • 02:55:00 В этом разделе спикер обсуждает технические аспекты своего веб-сайта медиааналитики, в том числе использование JVM для обеспечения большей части функций веб-сайта и переход на систему, которая принципиально обогащает все поступающие данные. С несколькими миллиардами выводов графического процессора в день функции продукта в значительной степени зависят от машинного обучения и управления моделями, которые стали неотъемлемой частью поддержания всего в рабочем состоянии, что привело к критичности процесса. Данные охватывают все виды форматов, включая HTML и PDF, и они отслеживают время их выполнения для обогащения данных на лету, включая распознавание именованных сущностей, заметность, настроение и многое другое. На этом пути было много проблем, в том числе ошибки преобразования и редкая утечка памяти в DTL, решение которой заняло некоторое время.
 

ONNX: прошлое, настоящее и будущее — Джим Шпорер, IBM и Прасант Пулаварти, Microsoft



ONNX: прошлое, настоящее и будущее — Джим Шпорер, IBM и Прасант Пулаварти, Microsoft

В видеоролике «ONNX: прошлое, настоящее и будущее» Джим Шпорер из IBM и Прасант Пулаварти из Microsoft обсуждают рост и будущее платформы искусственного интеллекта с открытым исходным кодом ONNX. Они подчеркивают важность стандартизации развертывания моделей ИИ с помощью формата обмена, предоставляемого ONNX, что обеспечивает плавную оптимизацию в различных средах глубокого обучения. Кроме того, они обсуждают последние разработки в области возможностей среды выполнения ONNX для работы с различными аппаратными ускорителями и предлагают советы и ресурсы для начала работы с ONNX. Спикеры отвечают на вопросы аудитории о возможностях ONNX, коммерческом развертывании и предстоящих планах сертификации, призывая зрителей принять участие в сообществе ONNX.

  • 00:00:00 В этом разделе Джим Шпорер из IBM и Прасант Пулаварти из Microsoft представляют себя и дают обзор прошлого, настоящего и будущего ONNX, платформы искусственного интеллекта с открытым исходным кодом. ONNX служит стандартизированным форматом обмена, позволяя различным инструментам взаимодействовать и оптимизировать вывод в различных средах глубокого обучения. Выступающие призывают зрителей принять участие в сообществе ONNX, просматривая новости и получая информацию о начале работы на веб-сайте ONNX, а также присоединяясь к сообществу на GitHub и Gitter. Они также освещают недавние встречи виртуального сообщества, на которых партнеры ONNX обсуждали свои проекты и способы инновационного использования ONNX.

  • 00:05:00 В этой секции спикеры обсуждают рост сообщества ONNX и его важность как формата обмена среди многочисленных проектов с открытым исходным кодом в области искусственного интеллекта и машинного обучения. Они освещают прогресс сообщества ONNX с точки зрения запросов на вытягивание, участников, звездочек, вилок, опубликованных статей и модельного зоопарка, а также призывают к участию больше организаций и отдельных лиц. Выступающие также представляют ONNX в Microsoft и его использование в различных продуктах, подчеркивая необходимость стандартизированного формата, такого как ONNX, в разнообразных решениях AI и ML. Они дают советы по использованию ONNX и приветствуют вопросы аудитории.

  • 00:10:00 В этом разделе спикеры обсуждают распространенные проблемы, с которыми сталкиваются разработчики при попытке развернуть модели машинного обучения в рабочей среде, такие как высокая задержка логического вывода, запуск моделей на периферии и устройствах IoT, а также необходимость запуска одной и той же модели на разных оборудование и операционные системы. Для решения этих проблем спикеры представляют формат ONNX и среду выполнения ONNX, что позволяет разработчикам представлять модели из разных фреймворков в едином формате и эффективно запускать их на разных платформах и ускорителях. Служба распознавания речи Microsoft приведена в качестве примера того, как ONNX повысил гибкость и производительность в производственной среде.

  • 00:15:00 В этом разделе докладчики обсуждают, как использование среды выполнения ONNX может привести к преимуществам с точки зрения гибкости, производительности и точности. Они упоминают примеры когнитивных сервисов Microsoft, таких как преобразование речи в текст и компьютерное зрение, а также Azure Connect, устройство с возможностями отслеживания тела. Также подчеркивается аспект переносимости ONNX, поскольку он позволяет использовать одну и ту же модель и код приложения на разных платформах и аппаратных ускорителях, экономя время и усилия по настройке. Кроме того, докладчики коснулись Windows ML, который использует среду выполнения ONNX в качестве общего формата для моделей, что упрощает выполнение логических выводов машинного обучения в операционной системе Windows.

  • 00:20:00 В этом разделе Джим Шпорер и Прасант Пулаварти обсуждают некоторые из последних разработок и достижений среды выполнения ONNX. Одной из его наиболее важных особенностей является его способность работать с различными типами аппаратных ускорителей, таких как графические или визуальные процессоры. Он также предлагает межъязыковую поддержку, позволяя пользователям преобразовывать модели, обученные в средах Python, в C#. Одним из примеров компании, использующей среду выполнения ONNX, является независимый поставщик программного обеспечения, который обучает свои финансовые модели на Python с помощью scikit-learn, но использует среду выполнения ONNX для производства на C#. Кроме того, среда выполнения ONNX недавно оптимизировала вывод и обучение моделей трансформаторов, таких как BERT и GPT2, что привело к значительному ускорению и экономии средств для пользователей.

  • 00:25:00 В этом разделе докладчики предоставляют информацию о том, как начать работу с ONNX и средой выполнения ONNX. Зоопарк моделей, доступный по URL-адресу, предлагает множество предварительно обученных моделей для загрузки и начала использования со средой выполнения ONNX для моделей зрения, языка и будущих моделей речи. Кроме того, спикеры поощряют вклад моделей в модельный зоопарк. Существующие модели из других фреймворков также можно преобразовать или экспортировать в формат ONNX. Такие платформы, как PyTorch, Keras, TensorFlow и Scikit-Learn, имеют функции экспорта ONNX, а среда выполнения ONNX может быть установлена в Windows, Linux и Mac с поддержкой нескольких языков программирования.

  • 00:30:00 В этом разделе спикеры обсуждают аппаратное ускорение и способы интеграции различных аппаратных ускорителей через API, называемые поставщиками выполнения. Среда выполнения ONNX имеет высокооптимизированную реализацию ЦП, а также реализацию CUDA, а поставщики оборудования, такие как Nvidia и Intel, сотрудничают с ONNX для интеграции своих оптимизаций со средой выполнения ONNX. Это гарантирует, что любая модель ONNX может работать с полной поддержкой всей спецификации ONNX, даже если конкретная операция не поддерживается конкретным ускорителем. Выступающие призывают зрителей опробовать ONNX и поделиться ресурсами, доступными в сообществе ONNX, включая открытое управление, SIG и рабочие группы.

  • 00:35:00 В этом разделе спикеры обсуждают открытую структуру управления проектом ONNX, которая состоит из различных групп с особыми интересами (SIG) и рабочих групп. Они объясняют, что SIG и рабочие группы встречаются периодически и что все открыто, и все встречи публикуются в календаре календаря ИИ. Кроме того, открытая структура управления описывает, как выбираются участники и утверждающие, которые, соответственно, получают право голоса при принятии различных решений или имеют разрешения на слияние. В конечном итоге спикеры призывают людей участвовать в проекте ONNX, присоединяясь к различным каналам и группам, подписываясь на список рассылки и участвуя в обсуждениях.

  • 00:40:00 В этом разделе спикеры отвечают на различные вопросы аудитории, касающиеся таких тем, как потенциальные публикации книг по теме ONNX, возможности ведения журналов среды выполнения ONNX и методы, используемые для сокращения времени обучения машинному обучению. Они также упоминают некоторые коммерческие развертывания моделей на основе ONNX в различных сценариях, таких как Azure Cognitive Services, офисные модели и поисковая система Bing.

  • 00:45:00 В этом разделе докладчики обсудили коммерческое развертывание моделей ONNX за пределами Microsoft и упомянули, что существует ряд моделей производственного уровня, используемых финансовыми компаниями и другими организациями в Azure. Они также ответили на вопросы аудитории о ONNX, в том числе о том, поддерживает ли он CNTK (да, у них есть экспорт ONNX) и нужны ли вам знания об инструментах аппаратного ускорения (нет, поскольку среда выполнения ONNX предоставляет уровень абстракции). Они также коснулись преимуществ использования ONNX при обучении по сравнению с преобразованием в ONNX после обучения, объяснив, что среда выполнения ONNX может ускорить процесс обучения, что приводит к более быстрым моделям преобразователей. Наконец, они выразили готовность услышать о возможных планах сертификации и различных способах использования ONNX.

  • 00:50:00 В этом разделе спикеры отвечают на вопрос о способности ONNX поддерживать все типы конвейеров. Хотя это не на 100% из-за некоторых существующих пробелов, обычно поддерживаются общие типы моделей, и пользователи могут обратиться к GitHub конвертера ONNX для получения списка поддерживаемых конвейеров или попробовать сами, чтобы увидеть, можно ли полностью преобразовать их конвейер. Затем выступающие завершают сессию, поблагодарив участников и пригласив их присоединиться к сообществу ONNX.
ONNX: Past, Present, and Future - Jim Spohrer, IBM & Prasanth Pulavarthi, Microsoft
ONNX: Past, Present, and Future - Jim Spohrer, IBM & Prasanth Pulavarthi, Microsoft
  • 2020.09.11
  • www.youtube.com
ONNX: Past, Present, and Future - Jim Spohrer, IBM & Prasanth Pulavarthi, Microsoft
 

Onnx-mlir: компилятор на основе MLIR для моделей ONNX — текущее состояние



Onnx-mlir: компилятор на основе MLIR для моделей ONNX — текущий состояние

Onnx-mlir — это компилятор для моделей ONNX, использующий MLIR и LLVM для оптимизации и генерации кода, поддерживающий процессоры и пользовательские ускорители. Донг Лин из IBM Research подчеркивает важность тщательного тестирования и подчеркивает возможность использования фреймворка в онлайн-сервисах оценки и фреймворках обслуживания моделей. Onnx-mlir имеет несколько диалектов для ЦП и ускорителя с оптимизацией на разных уровнях, и было показано, что он ускоряет модель обнаружения мошенничества с кредитными картами в 11 раз с помощью ускорителя IBM. Проект приветствует вклад сообщества в оптимизацию важных операторов и поддержку нишевых операторов машинного обучения и других ускорителей, таких как графические процессоры.

  • 00:00:00 В этом разделе Донг Лин из IBM Research обсуждает Onnx-mlir, компилятор для моделей Onnx, использующий MLIR и LLVM для высокоуровневой оптимизации и низкоуровневой генерации кода. Компилятор стремится предоставить ссылку на диалект Onnx в MLIR и сделать оптимизацию удобной не только для процессоров, но и для пользовательских ускорителей. Его легко интегрировать с другими компиляторами на основе MLIR, и он поддерживает различные языки программирования, такие как Python, C++ и Java. Донг Лин также подчеркивает важность тщательного тестирования компилятора и упоминает, что он использовался для онлайн-сервисов оценки и сред обслуживания моделей с недавно введенной поддержкой пользовательских ускорителей.

  • 00:05:00 В этом разделе спикер обсуждает компилятор ONNX-MLIR, который умеет оптимизировать и поддерживать новые ускорители. Компилятор имеет несколько диалектов для процессора и ускорителя с оптимизацией на разных уровнях. Спикер продемонстрировал способность платформы ускорить модель обнаружения мошенничества с кредитными картами в 11 раз с помощью ускорителя IBM, но не смог раскрыть никаких подробностей. Они подчеркнули свою заинтересованность в вкладе сообщества в развитие проекта с открытым исходным кодом, поскольку они стремятся оптимизировать важные операторы, поддерживать нишевые операторы машинного обучения и другие ускорители, такие как графические процессоры.
Onnx-mlir: an MLIR-based Compiler for ONNX Models - The Latest Status
Onnx-mlir: an MLIR-based Compiler for ONNX Models - The Latest Status
  • 2022.07.13
  • www.youtube.com
Onnx-mlir is an open source compiler implemented using the Multi-Level Intermediate Representation (MLIR) infrastructure recently integrated in the LLVM proj...
 

PFVM — компилятор нейронной сети, использующий ONNX в качестве промежуточного представления



PFVM — компилятор нейронной сети, использующий ONNX в качестве промежуточного представления.

В этом видео Zijian Xu из Preferred Networks представляет PFVM, компилятор нейронной сети, который использует ONNX в качестве промежуточного представления для оптимизации модулей. Он обсуждает, как PFVM принимает экспортированный ONNX в качестве входных данных, оптимизирует его и выполняет модель с указанными серверными частями с использованием сторонних API. Гэндзи описывает важность оптимизации, в том числе расширения ONNX операторами клиентов, выводом форм и упрощением графов. Он также рассматривает ограничения текущих компиляторов ONNX, в том числе потребность в дополнительной поддержке в динамическом случае, и предлагает реализовать больше функций вывода. Zijian Xu подчеркивает важность сокращения накладных расходов ядра и использования памяти для ускорения вычислений и предлагает использовать статическую информацию, доступную на машинах, для планирования и формирования логических выводов.

  • 00:00:00 В этом разделе Zijian Xu из Preferred Networks обсуждает PFVM, компилятор нейронной сети, использующий ONNX в качестве промежуточного представления. Он представляет компанию и объясняет, как они используют глубокое обучение для решения реальных проблем. Затем он сосредоточится на ONNX для оптимизации модулей, а не на развертывании модулей. Он объясняет, что PFVM работает как компилятор и среда выполнения, принимая в качестве входных данных экспортированный ONNX, оптимизируя его и выполняя модель с указанными серверными частями с использованием сторонних API. Genji описывает процесс оптимизации, обсуждая, как они расширяют ONNX с операторами клиентов для оптимизации устройств и памяти. Он также обсуждает важность определения формы в оптимизации модулей и представляет три варианта оптимизации. Первый случай — поэлементное слияние.

  • 00:05:00 В этом разделе видео спикер обсуждает важность уменьшения накладных расходов на диапазон ядра для ускорения вычислений при выполнении вычислительных графов на CUDA. Они предлагают объединять поэлементные операторы в один оператор группы слияния, чтобы уменьшить диапазон ядра, но предупреждают, что не все операторы могут быть успешно объединены вместе. Перед группой градиентного слияния необходимо проверить, могут ли операторы транслироваться или нет. Докладчик также подчеркивает важность логического вывода и упрощения графов для оптимизации моделей нейронных сетей. Наконец, они обращаются к вопросу о том, содержат ли модели ненужные операторы, и отвечают, что для ускорения вычислений необходимы некоторые оптимизации.

  • 00:10:00 В этом разделе спикер обсуждает, как модели, созданные такими программами, как первое поколение или поиск нейронной сети и нейронной архитектуры, могут содержать ненужные операторы. Они демонстрируют важность оптимизации на примере, где левый вычислительный граф использует много памяти для вычисления пятого узла. Изменив вычислительный граф, можно получить тот же результат при меньшем использовании памяти. PFVM может выполнять автоматические контрольные точки для сокращения использования памяти, но для точной оценки использования памяти требуется знание размеров тензора. Докладчик подчеркивает важность ссылки на форму и то, как неизвестные размеры ограничивают возможности оптимизации в большинстве формообразующих рам.

  • 00:15:00 В этом разделе спикер обсуждает ограничения текущего современного компилятора ONNX, в том числе невозможность выполнения некоторых задач, таких как переливание элементов и автоматическое создание контрольных точек, а также необходимость дополнительной поддержки в динамический случай. Докладчик предлагает реализовать больше функций вывода для динамического случая и запрашивает отзывы пользователей, чтобы определить, поддерживать ли такие случаи, как объединение двух тензоров, или нет. Докладчик также обсуждает преимущества использования статической информации, доступной на таких машинах, как element core и mn4, для планирования и формирования выводов.
PFVM - A Neural Network Compiler that uses ONNX as its intermediate representation
PFVM - A Neural Network Compiler that uses ONNX as its intermediate representation
  • 2022.07.13
  • www.youtube.com
PFVM is a neural network compiler developed by Preferred Networks, which relies on ONNX as the Intermediate Representation format. PFVM is used in production...
 

Стек компилятора YVR18-332 TVM и поддержка ONNX



Стек компилятора YVR18-332 TVM и поддержка ONNX

В видео YVR18-332 обсуждается стек компилятора TVM, который представляет собой стек глубокого обучения под руководством сообщества, который поддерживает ряд аппаратных средств и интерфейсов, включая ONNX. Спикер обсуждает, как TVM может оптимизировать модели на уровне стерео, позволяя разработчикам исследовать пространство поиска и находить лучшую конфигурацию. Они также обсуждают автоматические оптимизации, предлагаемые TVM, включая циклические преобразования и ускорение графического процессора. Спикер рассказывает о дорожной карте TVM, которая включает поддержку 8-битной графики и автоматическую настройку на уровне графа. Кроме того, они обсуждают интерфейс ONNX TV и необходимость унификации стандартного интерфейса для всех экосистем. Наконец, видео останавливается на обед.

  • 00:00:00 В этом разделе спикер представляет стек компилятора TVM и то, как он поддерживает ONNX через GBM. TVM представляет собой стек глубокого обучения от уровня класса до уровня рака и представляет собой общественный проект, возглавляемый исследователями из Вашингтонского университета при участии нескольких компаний и организаций. Стек компилятора TVM поддерживает различное оборудование, включая ЦП, ГП, ПЛИС, и планирует включить поддержку ASIC с помощью симулятора для проверки конструкции оборудования. Стек также поддерживает различные внешние интерфейсы, включая MXNet, ONNX и TensorFlow, и имеет реализацию IR вычислительного класса, называемую NVM, с рядом параметров оптимизации.

  • 00:05:00 В этом разделе спикер обсуждает стек компилятора TVM и поддержку ONNX. Они объясняют, что стек компилятора TVM может выполнять множество оптимизаций на уровне стерео, таких как преобразование циклов и ускорение графического процессора, и что ONNX — это новая функция, добавленная для шага в автоматическом TVM. Спикер также поясняет диплом канадской мисс, получивший аплодисменты, за счет механизма удаленного развертывания TVM, который позволяет пользователям компилировать модель на своем хост-устройстве и удаленно развертывать ее на целевом устройстве. Кроме того, они обсуждают автоматическую оптимизацию, введенную TVM, которая может уменьшить утомительную работу разработчиков и
    предназначен для изучения пространства поиска и поиска наилучшей конфигурации.

  • 00:10:00 В этом разделе спикер обсуждает стек компилятора TVM и поддержку ONNX. Они упоминают, что стек компилятора TVM включает в себя самые передовые алгоритмы настройки, в том числе изолированные алгоритмы повышения экстремального градиента, для обеспечения лучшей производительности. Они также выделяют проект с открытым исходным кодом, который позволяет автоматизировать оптимизацию и может использовать предыдущую работу для оптимизации пространства поиска. Затем спикер рассказывает о том, как можно использовать TVM для открытого ускорителя Vita и его трех основных частей. Они объясняют, как можно использовать TVM для оптимизации расписания и удаленного развертывания с помощью VPS RPC. Наконец, они предоставляют дорожную карту для TVM, которая включает в себя включение 8-битной поддержки и автоматическую настройку на уровне графа, а также планирует включить использование на стиках Xilinx Ultra 9 и экземпляре Amazon F1.

  • 00:15:00 В этом разделе спикер обсуждает стек компилятора TVM и то, как он планирует перейти на NVM v2, получивший название Relay. Реализация Relay требует выбора потока управления модулем, чтобы улучшить систему типов и контролировать, как сделать серверную систему компиляции лучше. Докладчик объясняет, как Relay вписывается в стек компилятора TVM при поддержке ONNX. ONNX определяет три основные части, а именно модель графа вычислений и операторы построения, а также стандартную базу данных. Для поддержки расширений ONNX ml интерфейс TVM реализовал интерфейс в DVM. Однако преобразование ONNX в символический граф NM VM может вызвать некоторые проблемы с несоответствием. Более того, сообщество обсуждает, использовать ли ONNX или Relay в качестве IR графа в сообществе TVM, и единственный способ добиться прогресса — работать вместе, чтобы объединить Relay, чтобы использовать его для будущего преобразования модели.

  • 00:20:00 В этом разделе спикер обсуждает интерфейс ONNX TV для интеграции с фреймворком, который является стандартным интерфейсом для нейросетевого вывода на разных ускорителях. Интерфейс включает в себя обнаружение модулей во время выполнения, выбор серверных частей выполнения и долгосрочное обнаружение операторов ONNX. Спикер предлагает сообществу обсудить, как унифицировать стандартный интерфейс для всех экосистем. Кроме того, спикер рассказывает о стеке компилятора TVM и о том, как он может включить реализацию, написанную вручную, как часть своего пространства поиска. Однако до сих пор нет хорошего представления об этом механизме, поэтому спикер приветствует идеи и обсуждения.

  • 00:25:00 В этом разделе тема обсуждения — стек компилятора TVM и его поддержка ONNX. Уточняется, что ONNX имеет как формат описания, так и API времени выполнения, а эквивалентная система ONNX выходит за рамки только формата открытого обмена. Цель состоит в том, чтобы унифицировать API, чтобы приложения более высокого уровня могли вызывать единый стандартный API для получения выводов во время выполнения, что упростит работу разработчиков в этой области. Больше вопросов нет, и видео останавливается на обед.
 

Выступление сообщества .NET MAUI — среда выполнения ONNX с Майком Паркером



Выступление сообщества .NET MAUI — среда выполнения ONNX с Майком Паркером

В этом видео приглашенный докладчик Майк Паркер представляет среду выполнения ONNX, кроссплатформенный инструмент с открытым исходным кодом, который обеспечивает оптимизацию и ускорение машинного обучения на нескольких аппаратных платформах. Паркер объясняет важность использования среды выполнения ONNX и демонстрирует, как ее можно использовать в проектах .NET MAUI для классификации изображений с использованием модели классификации объектов MobileNet. Ведущие и Паркер обсуждают преимущества запуска моделей машинного обучения на устройстве и возможность избежать затрат на серверную инфраструктуру. Кроме того, команда делится полезными ресурсами, в том числе блогом Паркера на эту тему и своим партнерством с Элом Блаунтом для поддержки .NET MAUI и Xamarin.

  • 00:00:00 В этом разделе выступления сообщества в поддержку .NET MAUI команда представляет Майка Паркера, члена группы консультантов по современным клиентским приложениям, который делится своими знаниями об ONNX Runtime, инструменте машинного обучения для оптимизации. и ускорение моделей на нескольких аппаратных платформах. Он объясняет, почему среда выполнения ONNX является кроссплатформенной и открытой, что позволяет разработчикам использовать различные платформы и оборудование для приложений машинного обучения. Он также демонстрирует, как сообщество .NET может использовать преимущества ONNX Runtime в своих проектах.

  • 00:05:00 В этом разделе ведущие представляют себя и своего гостя Майка, который присоединяется к ним, чтобы обсудить с ними среду выполнения Onnx. Ведущие отмечают, что сначала они просмотрят некоторые блоги Microsoft и сообщества, а затем перейдут к обсуждению некоторых PR из .NET MAUI и смежных репозиториев, которые им очень нравятся. Наконец, они передадут обсуждение Майку Парку, чтобы он рассказал о библиотеках Onnx Runtime, о том, как он использовал их в Xamarin, а также о своих работах и подкастах на эту тему. Организаторы также упоминают, что .NET исполняется 20 лет и что выпущена версия .NET MAUI Preview 12. Они также предупреждают пользователей о критических изменениях и упоминают, что Дэйв работал над этим с сопровождающими библиотеки сообщества.

  • 00:10:00 В этом разделе докладчики обсуждают усилия по унификации .NET и необходимость перекомпиляции и обновлений библиотек и зависимостей iOS по мере перехода Xamarin на MAUI. В настоящее время команда работает над тем, как применить эти изменения для любых проектов привязки к собственным библиотекам и пакетам NuGet, и они уверяют пользователей, что руководство будет предоставлено. Кроме того, команда обсуждает отсутствие поддержки MAUI в предварительной версии VS Mac 2022 5 и объясняет, что они работают над этим, но сначала им пришлось уделить первоочередное внимание перестройке всей работы Xamarin в среде выполнения .NET 6 с новым SAC пользовательского интерфейса. Наконец, команда объявляет об обновлении привязки Facebook SDK и упоминает об усилиях по обновлению и поддержке других сторонних библиотек, таких как библиотеки Google.

  • 00:15:00 В этом разделе команда Xamarin рассказывает о компонентах, которые она поддерживает, которые раньше были в центре внимания, но теперь сужаются до наиболее важных для поддержки. Команда рекомендует пользователям сообщать, если у них есть зависимости от этих компонентов во время перехода на .NET 6. Они также обсуждают учебник Maui Hello World и серию блогов с анализом исходного кода .NET Maui. Кроме того, выделен блог Андреаса о Z-индексе и настройке пользовательского интерфейса, демонстрирующий размещение элементов друг над другом с помощью Z-индекса.

  • 00:20:00 В этом разделе ведущий демонстрирует несколько сообщений в блогах и проекты, которые люди воссоздали с помощью .NET MAUI. Блоги включают в себя воссоздание дизайна посадочного талона в Xamarin Forms, обсуждение разработки конечного автомата с помощью Xamarin Forms, организацию файла запуска .NET MAUI, глубокое погружение в архитектуру обработчиков и блог о Xamarin Forms для двусторонней связи с JavaScript с использованием WebView для него. Презентации показывают, как много внимания сейчас уделяется дизайну, делая Xamarin Forms/MAUI более расширяемым и полезным, и как более эффективно использовать как JavaScript, так и привязки.

  • 00:25:00 В этом разделе стенограммы ведущие обсуждают последние вклады сообщества в .NET MAUI, включая выпуск службы форума 5.0 Xamarin и новую документацию. Они призывают участников оставлять отзывы об участии в репо и упоминают о наличии элемента управления чипом в наборе инструментов сообщества, хотя он не входит в комплект поставки. Ведущие также упоминают о недавнем добавлении теней, новой функции MAUI, и предлагают оживить своего бота, модифицировав его.

  • 00:30:00 В этом разделе Майк Паркер предоставляет обновленную информацию о состоянии предварительных выпусков .NET MAUI, подчеркивая прогресс, достигнутый с предварительным просмотром 13. Много зеленого и много новых функций, включая форматированный текст меток, интервалы, и жесты охвата, которые заполняют пробелы в платформе. Сообщество также поделилось новым прикрепленным свойством под названием «Галадриэль», которое позволяет просто добавлять значки на вкладки и элементы меню в Xamarin Forms Shell. Кроме того, команда .NET MAUI работала над улучшением производительности платформы при запуске, и результаты обнадеживают: приложение запускается за 576 миллисекунд на Pixel 5 с профилированным AOT.

  • 00:35:00 В этом разделе на стенде сообщества .NET MAUI обсуждается доступность расширений разметки C# для создания пользовательского интерфейса как в Xamarin Forms, так и в .NET MAUI, которые обеспечивают более гибкий синтаксис для разработки пользовательского интерфейса. Они также говорят о среде выполнения onnx, портативной модели, которая может выполнять выводы на разных платформах с использованием единого набора API, с такими примерами, как распознавание лиц и маркировка фотографий. Среда выполнения onnx доступна на GitHub и может использоваться в Xamarin и мобильных приложениях. Процесс использования среды выполнения onnx включает в себя загрузку модели, подготовку входных данных, выполнение логического вывода и обработку выходных данных в пригодном для использования формате.

  • 00:40:00 В этом разделе видео Майк Паркер объясняет, как они использовали среду выполнения ONNX в приложении Xamarin Forms для классификации изображений с использованием модели классификации объектов MobileNet. Он подчеркивает важность соблюдения документации модели и нормализации значений RGB. Паркер также упоминает полезное приложение под названием Netron, которое позволяет визуализировать входные и выходные размеры, формы и имена входных и выходных данных. Приложение представляет собой всего лишь одну кнопку, которая загружает и запускает модель и отображает верхнюю метку в предупреждении. Паркер отмечает, что здорово, что все это происходит на устройстве без участия облака.

  • 00:45:00 В этом разделе докладчики обсуждают преимущества запуска моделей машинного обучения на устройстве, в том числе возможность работать без подключения и избежать затрат на серверную инфраструктуру. Они также рассказали о своем опыте использования облачных API-интерфейсов Microsoft Azure Vision и о том, как им удалось сократить время обработки с помощью среды выполнения ONNX. Кроме того, они объясняют, как они упростили работу приложения для команды, заменив специфичный для платформы и модели код одной моделью ONNX. Наконец, они обсуждают процесс подготовки модели с использованием Azure Custom Vision Service и создание пакета Nougat, позволяющего ONNX работать с Xamarin.

  • 00:50:00 В этом разделе видео Майк Паркер обсуждает свою работу со средой выполнения ONNX и адаптацию собственного кода совместимости для поддержки платформ с AOT, таких как iOS. Он также продолжает описывать реальные сценарии, в которых можно использовать эту технологию, включая оптимизацию рабочих процессов и улучшение доступности в приложениях. Тем не менее, он отмечает, что работа с готовыми моделями может быть непосильной для тех, у кого нет традиционного опыта работы с данными, и предлагает избирательно подходить к включению моделей. Наконец, некоторые полезные ресурсы, включая блог Майка по этой теме, являются общедоступными.

  • 00:55:00 В этом разделе ведущие рассказывают о возможности найма Майка Паркера и представляют Эла Блаунта, который может оказать поддержку компаниям, нуждающимся в помощи с Xamarin Forms и .NET Maui. Они также кратко обсуждают текущую работу команды Майка по обновлению до Мауи, но пока не могут поделиться какими-либо подробностями. Ведущие заканчивают видео, поблагодарив зрителей за то, что они присоединились, и объявляют о предстоящей вечеринке по случаю 20-летия .NET.
.NET MAUI Community Standup - ONNX Runtime with Mike Parker
.NET MAUI Community Standup - ONNX Runtime with Mike Parker
  • 2022.02.03
  • www.youtube.com
Join Maddy Montaquila, David Ortinau, and special guest Mike Parker to learn about using the ONNX Runtime in your Xamarin app for Machine Learning!Community ...
 

[Виртуальная встреча] Интероперабельный ИИ: ONNX и ONNXRuntime на C++ (M. Arena, M. Verasani)



[Виртуальная встреча] Интероперабельный ИИ: ONNX и ONNXRuntime на C++ (M. Arena, M. Verasani)

В видео обсуждаются проблемы использования различных платформ для обучения алгоритмов машинного обучения, что приводит к отсутствию совместимости, а также рассказывается об ONNX и ONNXRuntime, целью которых является создание универсального формата для моделей глубокого обучения. ONNX преобразует нейронные сети в статические вычислительные графы, что позволяет оптимизировать производительность во время логического вывода. ONNXRuntime позволяет преобразовывать любую платформу в формат ONNX и предоставляет библиотеки ускорения, которые можно использовать для любой аппаратной платформы. Видео демонстрирует примеры использования ONNX и ONNXRuntime, а также обсуждает их использование в C++ и дает советы для лучшего понимания проекта и его документации.

Марко Арена и Маттео Верасани также обсуждают преимущества использования ONNX и ONNXRuntime в C++ для моделей машинного обучения, подчеркивая гибкость платформы и ее способность легко преобразовывать модели из разных платформ без ущерба для производительности. Они предоставляют примеры преобразования моделей в формат ONNX и демонстрируют использование ONNXRuntime для режима логического вывода, демонстрируя повышение производительности классической модели Python. Кроме того, они обсуждают свою работу со встроенными системами и потенциальные преимущества тестирования ONNXRuntime на графических процессорах. Выступающие также упоминают будущие виртуальные встречи и выражают надежду на то, что участникам будет предоставлено больше возможностей для общения.

  • 00:00:00 В этом разделе видео спикеры обсуждают проблемы, возникающие при использовании разных фреймворков для обучения алгоритмов машинного обучения для различных вариантов использования, приводящие к отсутствию интероперабельности. Это может быть проблемой при работе в команде, члены которой могут иметь разный уровень знаний в разных средах. Чтобы решить эту проблему, спикеры представляют ONNX и ONNXRuntime, которые обеспечивают взаимодействие между фреймворками за счет преобразования сетей в общий формат. Затем ONNXRuntime позволяет развертывать преобразованные модели на любом целевом оборудовании, включая ЦП, ГП и FPU.

  • 00:05:00 В этом разделе спикеры обсуждают проект ONNX (Open Neural Network Exchange), целью которого является создание универсального формата для моделей глубокого обучения, обеспечивающего взаимодействие между различными платформами. Проект управляется сообществом и поддерживается многочисленными компаниями с упором на преобразование различных типов моделей и платформ в единый формат для производства. ONNX преобразует нейронные сети в статические вычислительные графы, которые отличаются от динамических графов тем, что предварительно инициализируются перед обучением. В то время как статические графы более эффективны с точки зрения вычислений, динамические графы обеспечивают большую гибкость при различных размерах входных данных.

  • 00:10:00 В этом разделе спикеры обсуждают, как ONNX предоставляет статический вычислительный граф, который очень полезен в процессе логического вывода. В то время как другие фреймворки, такие как Python, имеют динамические вычислительные графы, ONNX предоставляет статический граф, который уже контролировался на этапах обучения и разработки, что позволяет оптимизировать производительность. Кроме того, инструмент времени выполнения ONNX от Microsoft позволяет преобразовывать любую инфраструктуру в формат ONNX и предоставляет библиотеки ускорения, которые можно использовать для любой аппаратной платформы, что делает его полезным и универсальным инструментом для логического вывода и производства.

  • 00:15:00 В этом разделе видео спикеры рассказывают о своем опыте использования ONNX и ONNX Runtime для взаимодействия с ИИ. Они объясняют, как они создают модель PyTorch в Python, преобразовывают ее в формат ONNX и используют среду выполнения ONNX для развертывания, что позволяет им писать свои конвейеры и ориентироваться на разные платформы, такие как графические процессоры или устройства Android. Они также демонстрируют повышение производительности при использовании ONNX Runtime по сравнению с другими механизмами логического вывода, достигая в 4 раза более быстрых результатов. Они подчеркивают гибкость ONNX, позволяя им преобразовывать модели, созданные в других средах, таких как Matlab, для использования их с ONNX Runtime без необходимости переписывать конвейер развертывания.

  • 00:20:00 В этом разделе спикеры обсуждают процесс использования ONNX и ONNXRuntime в C++. Они объясняют, что модели должны быть сначала преобразованы в формат ONNX, прежде чем их можно будет запускать в ONNXRuntime. Хотя сериализация TensorFlow не является родной для ONNXRuntime, существуют библиотеки с открытым исходным кодом, доступные для преобразования. Они также отвечают на вопросы, касающиеся возможности написания сценария процесса преобразования и уровня улучшения, наблюдаемого при использовании ONNX по сравнению с C++. Они отмечают, что требуется дальнейшее сравнение и анализ. Репозиторий ONNXRuntime с открытым исходным кодом поддерживается Microsoft и предлагает пользователям широкий спектр информации, руководств и примеров.

  • 00:25:00 В этом разделе видео обсуждаются возможности ONNXRuntime по шкале сложности от простого к более сложному. Зеленый столбец содержит базовые функции, которых достаточно для более простых задач машинного обучения, а пурпурный столбец включает несколько более сложные функции, такие как поставщики выполнения и поддержка профилирования. Красный столбец представляет расширенные функции для более сложных задач, таких как возможность добавления пользовательских операторов ONNX или выполнения настройки торговли. Докладчик также предоставляет ссылки на два демо-репозитория для ONNXRuntime на C++ и Python.

  • 00:30:00 В этом разделе докладчик представляет ONNX и ONNXRuntime в C++. Они объясняют, что внутри программы должна быть создана среда для управления торговым пулом и сессией, которая устанавливает рассматриваемую модель. Характеристики сеанса также можно настроить, а параметры по умолчанию можно запустить с помощью сеанса. Кроме того, ONNXRuntime оптимизирует модель, реализуя необходимую предварительную обработку для управления данными перед выполнением сеанса. Инструмент также может выполнять задачи проверки, такие как запрос о количестве входов и выходов, типах данных и именах. В конечном счете, пользователи могут создавать свои входные данные и тензоры в требуемом формате.

  • 00:35:00 В этом разделе видео спикер обсуждает, как создать объект, который выделяет тензоры на CPU и передает их исполняющему провайдеру. Спикер создает входные и выходные тензоры, передавая в буфер входные значения и форму тензора в качестве аргументов. Затем создается тензор для вывода путем передачи выходных значений в библиотеку OnnxRuntime. Докладчик объясняет важность использования имен для запуска логического вывода, поскольку это позволяет гибко изменять порядок ввода. Демо демонстрирует простой пример того, как выходные значения выводятся на экран.

  • 00:40:00 В этом разделе спикер дает советы для тех, кто хочет лучше понять проект ONNX и его документацию. Они рекомендуют просмотреть «Части C», чтобы получить доступ к более документированным разделам ONNX и подробно описать свой опыт проверки данных в ONNX. Докладчик также объясняет, что, хотя библиотеки времени выполнения ONNX доступны через другие менеджеры пакетов, они рекомендуют перекомпилировать библиотеки, поскольку архитектуры и поставщики различаются, и показывает, как они скомпилировали один и тот же код для создания двух пакетов времени выполнения ONNX, предназначенных либо для ЦП, либо для графического процессора.

  • 00:45:00 В этом разделе спикер обсуждает среду выполнения ONNX с примерами использования DLL в C++. Параметры сеанса, добавленные в код, различаются в зависимости от предпочтений клиента, и он пытается использовать добавленных поставщиков в указанном порядке. Докладчик представляет собой пример приложения о том, как система занимает ОЗУ и использование графического процессора. В качестве примера использовалась повторная сеть искусственного интеллекта основной игры, которая была предварительно обучена на наборе данных из 1000 изображений. Система имеет свои требования к постобработке и предварительной обработке.

  • 00:50:00 В этом разделе видео спикер обсуждает предобработку изображений с помощью Python и использование исходников расширения для упрощения процесса. Изображения изменяются до оптимального размера и преобразуются в плавающие перед нормализацией. Процесс нормализации включает в себя деление значений на среднее значение и выполнение стандартного отклонения. Постобработка нейронной сети включает простую нормализацию softmax. Докладчик также демонстрирует, как открывать, обрабатывать и выводить изображения с помощью ONNX Runtime с минимальным кодом. Класс, используемый для чтения классов из текстового файла, упрощен, и несколько утилит используются, чтобы избежать ненужного шаблонного кода.

  • 00:55:00 В этом разделе спикер обсуждает процесс измерения времени вывода для нейронной сети с помощью ONNXRuntime в C++. Он объясняет, что добавил часть логического вывода в ранее обсуждавшуюся сеть и измерил время логического вывода с помощью системных часов. Затем он продолжает демонстрировать, как использовать пользовательский регистратор в ONNXRuntime для целей профилирования. Докладчик также кратко обсуждает отдельную мобильную сеть, разработанную в сотрудничестве с Университетом Модены, и сложности, связанные с ее предварительной и последующей обработкой.

  • 01:00:00 В этом разделе спикер обсуждает выходные данные детектора и показывает, как он рисует ограничивающие рамки на таких объектах, как медведи и сигналы. Они также упоминают об использовании ONNXRuntime и о том, как он позволяет изменять параметры сеанса и настраивать его, включая включение профилирования для оптимизации производительности. Полученный файл трассировки можно подробно изучить, чтобы узнать, сколько времени потребуется для инициализации модели и запуска ее на изображениях, в том числе какие операторы использовались и какой поставщик был выбран. Они также упоминают способность ONNX оптимизировать график перед его запуском, что может повысить производительность и сократить время, необходимое для загрузки модели.

  • 01:05:00 В этом разделе докладчик рассказывает об оптимизации модели путем включения или отключения оптимизации, что может повлиять на переносимость модели между различными целями. Они исследуют различные уровни оптимизации и то, как каждый из них влияет на производительность модели. Докладчик показывает, что включение режима параллельного выполнения может позволить модели использовать несколько потоков, но в некоторых случаях это может не оказать существенного влияния на производительность. Также упоминается возможность распараллеливания обработки нескольких изображений с помощью утилиты. Наконец, докладчик отмечает, что оптимизация может оказать заметное влияние на производительность модели, о чем свидетельствует сокращение времени загрузки оптимизированных моделей.

  • 01:10:00 В этом разделе Марко Арена и Марко Верасани обсуждают преимущества использования ONNX и ONNX Runtime в C++. Одним из основных преимуществ является возможность иметь один уровень вывода, который принимает ONNX в качестве формата, что обеспечивает переносимость и гибкость при использовании различных платформ для создания моделей. Эта функция особенно полезна в ситуациях, когда разные команды могут использовать разные платформы, а для производства требуется стандартный конвейер вывода. Кроме того, использование ONNX Runtime в C++ может привести к более быстрой и оптимизированной производительности среды выполнения для моделей глубокого обучения. В целом экосистема ONNX предоставляет множество опций и возможностей для тонкой настройки и оптимизации производительности моделей глубокого обучения.

  • 01:15:00 В этом разделе докладчики обсуждают преимущества использования ONNX и ONNXRuntime в C++ для моделей машинного обучения, поскольку это обеспечивает гибкость фреймворков и легкое преобразование между ними без ущерба для производительности. Они также упоминают, что ONNXRuntime поддерживается в Linux, и демонстрируют, как использовать записные книжки Python и Jupyter для создания прототипов и экспорта моделей в формат ONNX. Они используют небольшой учебник в качестве примера, чтобы показать, как преобразовывать модели из других фреймворков в ONNX, и подчеркнуть полезность инструмента Netron для визуализации вычислительного графа моделей. Спикеры призывают зрителей задавать вопросы и делиться знаниями об инструменте.

  • 01:20:00 В этом разделе спикеры обсуждают процесс преобразования модели в формат ONNX и запуска ее в режиме вывода с помощью ONNXRuntime на C++. Они демонстрируют, как создать вычислительный граф и определить входные и выходные размерности, а также как использовать время для оценки производительности модели на ЦП и ГП. Они также демонстрируют использование популярной модели обработки естественного языка BERT, которая использует оператор преобразования и реализована в библиотеке Hugging Face. Выступающие подчеркивают важность установки правильного пакета для использования ONNXRuntime с процессором или графическим процессором.

  • 01:25:00 В этом разделе видео ведущий демонстрирует, как преобразовать модель BERT в формат ONNX в Python. Процесс включает определение входных данных модели и преобразование модели с помощью функции «torch.onnx.export». Ведущий поясняет, что ONNX добавляет операторов в каждую версию, что подчеркивает необходимость работы над правильной версией ONNX с нужными операторами для конкретной модели. Динамическая ось также выделена как важная функция, позволяющая использовать динамические формы ввода/вывода, например переменную длину последовательности при обработке естественного языка. Наконец, ведущий показывает сравнение между Python и ONNX с точки зрения производительности при выполнении логического вывода на модели.

  • 01:30:00 В этом разделе виртуальной встречи спикеры демонстрируют свою работу с ONNX и ONNXRuntime на C++. Они демонстрируют улучшение производительности, наблюдаемое при выводе классической модели Python, выполняемой через ONNXRuntime. Они также демонстрируют инструмент под названием «Network Viewer», который позволяет пользователям просматривать статический вычислительный граф модели и видеть выполняемые операции, включая ожидаемые типы ввода и вывода. Инструмент также показывает версию ONNX, используемую для преобразования, и смещение, используемое в процессе преобразования. Спикеры запрашивают отзывы у зрителей и предоставляют участникам ссылку для комментариев.

  • 01:35:00 В этом разделе Марко Арена и Маттео Верасани рассказывают о своей работе по изучению платформ для встраиваемых систем, включая GPU, FGA и CPU. Они запустили четыре нейронные сети для обнаружения объектов в этих встроенных системах и проанализировали результаты с точки зрения энергопотребления и скорости вывода. Они также обсуждают важность использования одноэтапных детекторов для встраиваемых систем и предоставляют ссылки на репозитории для ONNX и ONNXRuntime. Они упоминают потенциальные преимущества тестирования ONNXRuntime на графических процессорах и выражают заинтересованность в приглашении команды Microsoft ONNXRuntime для участия в будущих мероприятиях. Наконец, они приглашают зрителей посетить их предстоящее онлайн-мероприятие и будущие встречи.

  • 01:40:00 В этом разделе видео рассказывается о том, как найти причины не возвращаться к личным встречам и о том, как им повезло получить уступку от участников их онлайн-встречи. Они также обсуждают предстоящие планы своей серии виртуальных встреч, которые включают удаление раздела Python и сосредоточение внимания на начальных частях их демонстрации на основе материалов, представленных Малаттией, Верасани, и репозиториев ONNX и ONNX Runtime. Есть также ссылки и официальные источники для тех, кто ищет дополнительную информацию по теме. В конечном счете, они выражают надежду на то, что будут уделять больше времени нетворкингу и оставят чат открытым для тех, кто хочет остаться после ужина, но признают ограничения онлайн-встреч.
[Virtual meetup] Interoperable AI: ONNX e ONNXRuntime in C++ (M. Arena, M. Verasani)
[Virtual meetup] Interoperable AI: ONNX e ONNXRuntime in C++ (M. Arena, M. Verasani)
  • 2020.10.22
  • www.youtube.com
Relatori: Marco Arena, Mattia Verasani📍 Slides: https://www.italiancpp.org/interoperable-ai-arena-verasani/💻 Demo: https://github.com/ilpropheta/onnxruntim...
 

[CppDay20] Интероперабельный ИИ: ONNX и ONNXRuntime на C++ (M. Arena, M. Verasani)



[CppDay20] Интероперабельный ИИ: ONNX и ONNXRuntime на C++ (M. Arena, M. Verasani)

Использование алгоритмов машинного обучения и глубокого обучения растет, и существует потребность в инструментах, которые могут развертывать эти алгоритмы на разных платформах. Инструмент ONNX обеспечивает взаимодействие между различными фреймворками и платформами, позволяя разработчикам преобразовывать свои алгоритмы из одного фреймворка в другой и развертывать их на разных устройствах, даже если они не знакомы с конкретным фреймворком или платформой. ONNX Runtime — это механизм логического вывода, который может использовать настраиваемые ускорители для ускорения моделей на этапе логического вывода и может быть ориентирован на различные аппаратные платформы. Спикеры демонстрируют использование ONNX и ONNX Runtime в программировании на C++ с примерами моделей линейной регрессии и нейронных сетей. Они также обсуждают преимущества использования ONNX и ONNX Runtime для точной настройки работы сети, оптимизации времени загрузки и выполнения последовательных образов.

  • 00:00:00 В этом разделе видео спикеры обсуждают все более широкое использование алгоритмов машинного обучения и глубокого обучения для различных приложений и потребность в инструментах, которые могут развернуть эти алгоритмы на разных платформах. Они представляют инструмент под названием ONNX, который обеспечивает взаимодействие между различными фреймворками и платформами. Они объясняют, как разработчики могут использовать ONNX для преобразования своих алгоритмов из одной среды в другую и развертывания их на разных устройствах, даже если они не знакомы с конкретной средой или платформой. Спикеры используют пример преобразования алгоритма Python в формат ONNX, а затем в платформу Core ML для развертывания на устройстве Apple. Они подчеркивают полезность ONNX в том, чтобы сделать алгоритмы глубокого и машинного обучения более доступными и развертываемыми на широком спектре платформ.

  • 00:05:00 В этом разделе спикер обсуждает ONNX и ONNX Runtime, которые представляют собой инструменты, обеспечивающие совместимость ИИ. ONNX позволяет передавать модели между различными фреймворками глубокого обучения, такими как PyTorch и Tensorflow, не требуя знаний о каждом фреймворке. ONNX Runtime, предоставляемый корпорацией Майкрософт, представляет собой механизм логического вывода, который может использовать настраиваемые ускорители для ускорения моделей на этапе логического вывода. Он может работать с различными аппаратными платформами и не требует от пользователя создания собственного механизма вывода на C++.

  • 00:10:00 В этом разделе докладчики обсуждают преимущества использования формата ONNX для моделей машинного обучения и возможности взаимодействия, которые он обеспечивает для различных платформ обучения. Они объясняют конвейер для разработки алгоритмов глубокого обучения, преобразования их в формат ONNX и использования механизма логического вывода ONNX для запуска модели на разных платформах и языках программирования. Докладчики также представили графики производительности, которые показывают значительное улучшение производительности алгоритмов при использовании среды выполнения ONNX по сравнению с другими фреймворками, такими как PyTorch и scikit-learn. Наконец, Марко вступает во владение и рассказывает об использовании механизма выполнения ONNX в программировании на C++.

  • 00:15:00 В этом разделе спикер рассказывает о своем опыте взаимодействия между платформами машинного обучения и представляет проект ONNX как важное усилие для достижения этой цели. Они упоминают, что у них не было много проблем с преобразованием при преобразовании моделей между платформами, но основная проблема возникает, когда оператор не поддерживается в формате ONNX или формате среды выполнения ONNX. Спикер также отвечает на вопрос о проблемах с преобразованием и объясняет, что операторы, не поддерживаемые ONNX, могут вызывать проблемы при преобразовании.

  • 00:20:00 В этом разделе спикеры обсуждают свой опыт преобразования TensorFlow в ONNX и упоминают, что не видели много проблем с преобразованием. Они также обсуждают отладку и устранение неполадок, когда речь идет об управлении тензорами в C++, и упоминают использование для этого других библиотек, таких как extensor или Python. Они представляют точку входа для ONNX, onx.ai, которая позволяет пользователям выбирать желаемую архитектуру и язык программирования, а также демонстрируют использование ONNXRuntime в C++. Они упоминают, что код одинаков для графического процессора, единственное отличие заключается в связанной библиотеке.

  • 00:25:00 В этом разделе докладчик демонстрирует демонстрацию использования ONNXRuntime для загрузки, проверки и выполнения вывода по модели. Он начинает с создания среды для базового API с дополнительными функциями, такими как настройка журнала или многопоточность. Затем он создает сеанс, представляющий вывод для выполнения на конкретной модели, которую можно загрузить либо из пути, либо из потока байтов. Он демонстрирует, как использовать распределитель для проверки информации модели, такой как количество и имена входов и выходов. Он отмечает, что эта демонстрация демонстрирует необработанную библиотеку и что в реальных ситуациях будет использоваться оболочка, чтобы избежать управления строками и других сложностей.

  • 00:30:00 В этом разделе спикер обсуждает простую модель линейной регрессии и то, как передать ввод в сеть без копирования данных с помощью внешнего API под названием CreateTensor. Докладчик подчеркивает важность перехода к c API ниже C++ API, когда документация неясна. Кроме того, они обсуждают различные параметры, доступные при выполнении сеанса логического вывода, включая частичное извлечение выходных данных и настройку имен выходных данных. Наконец, они отмечают, что выходные значения хранятся в векторе и представляют собой те же тензоры, которые были выделены ранее.

  • 00:35:00 В этом разделе спикер обсуждает доступ к данным в C++ с помощью функции get tensor mutable data и необходимость указывать используемый тип из-за стирания типа. В приведенном примере показано, как с помощью этого метода вывести значения на стандартный вывод. Спикер также упоминает о необходимости быть осторожным с выделением тензоров и выходных буферов и с тем, как использовать предварительно выделенные выходные буферы. Затем обсуждение переходит к запуску линейной модели с поставщиком выполнения графического процессора, использующим пакет графического процессора Microsoft ML ONNXRuntime в качестве выбора по умолчанию для запуска ONNXRuntime против ЦП. Наконец, спикер кратко представляет два демонстрационных проекта для сетей машинного зрения: классификатор под названием ResNet и детектор под названием MobileNet. Демонстрационный код аналогичен предыдущему примеру, и докладчик выделяет предварительную и постобработку, задействованную в этих сетях.

  • 00:40:00 В этом разделе докладчик демонстрирует, как использовать ONNXRuntime для профилирования выполнения нейронной сети с помощью внешнего таймера. Добавляя параметр профилирования во время создания сеанса, ONNXRuntime может создавать файл JSON, который содержит время выполнения, затраченное на каждую фазу, и разбивку всех операторов в графе, которые были выполнены. Этот инструмент может предоставить дополнительные сведения, например, работает ли модель на ЦП или ГП, выполняется ли она последовательно или параллельно. Профилирование может помочь в точной настройке работы сети и проверке того, работает ли она на другом ускорителе.

  • 00:45:00 В этом разделе спикер демонстрирует влияние оптимизации на время загрузки и время выполнения модели с использованием ONNX и ONNXRuntime в C++. Отключение оптимизации приводит к значительному увеличению времени выполнения, а ее включение приводит к увеличению времени загрузки. Однако можно сохранить оптимизированную версию модели, которая уравновешивает оптимизацию и время загрузки. Спикер показывает аудитории, как оптимизировать модель, используя различные доступные опции, и сохранить ее. Кроме того, спикер кратко касается параллельного выполнения и демонстрирует, как оно может значительно сократить время обработки пакета изображений.

  • 00:50:00 В этом разделе докладчик обсуждает выполнение последовательных изображений и конкуренцию в глобальном пуле потоков, что приводит к увеличению времени выполнения для каждого изображения. Они также упоминают использование инструмента профилирования для уточнения измерений времени для отдельных входных данных и разбивку всех операторов, выполняемых для каждого изображения. Докладчик объясняет использование библиотеки Extensor для манипулирования тензорами, аналогичной numpy для Python, используемой для предварительной обработки изображений в более простом классификаторе ResNet. Также упоминается различие ONNX Runtime для базового, промежуточного и продвинутого уровней с расширенными функциями, такими как настраиваемые операторы, арены памяти и распределители. Также обсуждаются поддержка торговли и примеры Python с ссылками на демо и слайды.

  • 00:55:00 В этом разделе докладчики обсуждают проведенный ими тест алгоритмов обнаружения объектов, уделяя особое внимание одноэтапным детекторам, полезным для встроенных устройств. Они сравнили FPGA, GPU и CPU и обнаружили, что устройства NVIDIA, процессоры Intel Core E7 и FPGA являются лучшими платформами для определенных видов операций. Они также упомянули, что в ONNX есть некоторая поддержка обучающих моделей, хотя и только в Python. На вопрос, рассмотрят ли они возможность использования ONNXRuntime в производстве, они заявили, что уже используют его при тестировании и переходе на производство. Они отметили, что Microsoft также использует его во многих проектах, включая Windows ML, и что он находится в разработке уже три года.
 

Ускорение машинного обучения с помощью ONNX Runtime и Hugging Face



Ускорение машинного обучения с помощью ONNX Runtime и Hugging Face

В видео «Ускорение машинного обучения с помощью ONNX Runtime и Hugging Face» обсуждается создание библиотеки Hugging Face Optimum, в которой основное внимание уделяется ускорению моделей преобразования от обучения до логического вывода за счет простого применения среды выполнения ONNX. Библиотека упрощает связь между библиотекой трансформатора и аппаратным ускорением, создавая простой в использовании набор инструментов для повышения производительности. Применяя оптимизации, предоставляемые ONNX Runtime, пользователи могут воспользоваться всеми преимуществами аппаратного ускорения, что приводит к ускорению конвейеров логического вывода. Сотрудничество в сообществе Hugging Face обеспечивает оптимизацию модели от последовательности к последовательности с использованием этих классов конвейера ускоренного логического вывода, а сквозной пример показал, что использование оптимальной библиотеки может привести к увеличению пропускной способности на 44% или уменьшению задержки при сохранении 99,6% точности оригинальной модели.

  • 00:00:00 В этом разделе Джефф из Hugging Face обсуждает цель компании — сделать мощь моделей трансформаторов доступной для каждой компании в мире с помощью готовых предварительно обученных моделей и инструментов. Он объясняет, что трансферное обучение и внимание — это все, что вам нужно, — это изменило область машинного обучения, достигнув прорывной производительности в задачах обработки естественного языка и обеспечив самые современные результаты во всех модальностях машинного обучения. Джефф представляет библиотеку Optimum, предназначенную для ускорения моделей трансформаторов за счет простого применения среды выполнения ONNX, что упрощает инженерам и разработчикам программного обеспечения использование этих моделей в производстве.

  • 00:05:00 В этом разделе спикер обсуждает создание библиотеки Hugging Face Optimum, которая ориентирована на ускорение моделей-трансформеров от обучения до логического вывода. Библиотека предлагает справочный набор инструментов для аппаратного ускорения с высокоуровневыми API, предназначенными для повышения производительности. Пакет Onnx Runtime в Optimum обеспечивает встроенную интеграцию DeepSpeed, способ ускорить обучение. Optimum также предлагает Ort Optimizer для упрощения моделей графов, Rt Quantizer для оптимизации весов и нацелен на конкретных поставщиков исполнения, чтобы воспользоваться преимуществами аппаратной оптимизации. В целом, Optimum упрощает связь между библиотекой трансформаторов и аппаратным ускорением, создавая простой в использовании набор инструментов для повышения производительности.

  • 00:10:00 В этом разделе спикер рассказывает об оптимизации моделей машинного обучения с помощью ONNX Runtime и библиотеки оптимизации Hugging Face. Переключившись с Auto Model for Task на RT Model for Task, пользователи могут легко применять оптимизации, предоставляемые средой выполнения ONNX, и пользоваться всеми преимуществами аппаратного ускорения, что приводит к ускорению конвейеров логического вывода. Сообщество Hugging Face также сотрудничает, чтобы обеспечить оптимизацию модели от последовательности к последовательности с использованием этих классов конвейера ускоренного логического вывода. Сквозной пример, приведенный в сообщении блога, показывает, что использование оптимальной библиотеки может привести к увеличению пропускной способности на 44 % или снижению задержки при сохранении 99,6 % точности исходной модели.
Accelerating Machine Learning with ONNX Runtime and Hugging Face
Accelerating Machine Learning with ONNX Runtime and Hugging Face
  • 2022.07.13
  • www.youtube.com
Hugging Face has democratized state of the art machine learning with Transformers and the Hugging Face Hub, but deploying these large and complex models into...
Причина обращения: