Каким бы маловероятным ни казалось сотрудничество, Microsoft и Facebook совместно разработали формат Open Neural Network Exchange (ONNX) как проект с открытым исходным кодом.
Файл Readme на GitHub дает четкое и сжатое изложение того, что представляет собой совместный проект:
Open Neural Network Exchange (ONNX) — это первый шаг к открытой экосистеме, которая позволяет разработчикам ИИ выбирать правильные инструменты по мере развития своего проекта. ONNX предоставляет формат с открытым исходным кодом для моделей AI. Он определяет расширяемую модель графа вычислений, а также определения встроенных операторов и стандартных типов данных.
Хоакин Кинонеро Кандела из Facebook объясняет, почему этот ресурс необходим:
При разработке моделей обучения инженеры и исследователи могут выбирать из множества фреймворков искусственного интеллекта. В начале проекта разработчики должны выбрать функции и привязаться к фреймворку. Часто функции, выбранные во время экспериментов во время исследований и разработок, отличаются от функций, желаемых для отправки в производство. Многие организации остались без хорошего способа преодолеть разрыв между этими режимами работы и прибегли к целому ряду творческих обходных путей, чтобы справиться с этим, например, требуя от исследователей работы в производственной системе или ручного перевода моделей.
Таким образом, ONNX был предоставлен, чтобы помочь разработчикам ИИ переключаться между фреймворками, которые имеют свои собственные форматы для представления графов вычислений, которые представляют нейронные сети.
По словам Эрика Бойда из Microsoft, представительство ONNX предлагает два ключевых преимущества:
Взаимодействие фреймворков Разработчикам будет проще переключаться между фреймворками и использовать лучший инструмент для решения поставленной задачи. Каждая структура оптимизирована для определенных характеристик, таких как быстрое обучение, поддержка гибких сетевых архитектур, логический вывод на мобильных устройствах и т. Д. Часто наиболее важная характеристика во время исследований и разработок отличается от той, которая наиболее важна для отправки в производство. Это приводит к неэффективности из-за неправильного использования фреймворка или значительных задержек при преобразовании разработчиками моделей между фреймворками. Платформы, использующие представление ONNX, упрощают это и позволяют разработчикам быть более гибкими.
Совместная оптимизация Поставщики аппаратного обеспечения и другие лица, оптимизирующие работу нейронных сетей для повышения производительности нейронных сетей, могут влиять на несколько фреймворков одновременно, ориентируясь на представление ONNX. Часто оптимизацию необходимо интегрировать отдельно в каждую структуру, что может занять много времени. Представление ONNX упрощает оптимизацию для привлечения большего числа разработчиков.
Caffe2 и Pytorch от Facebook и Cognitive Toolkit от Microsoft (ранее CNTK) выпустят поддержку ONNX в сентябре, а Microsoft планирует предоставить эталонные реализации, примеры, инструменты и зоопарк моделей. Это уже учебное пособие по Pytorch Перенос модели из PyTorch в Caffe2 и Mobile с помощью ONNX.
ONNX работает, отслеживая, как нейронная сеть, созданная с использованием определенных платформ, выполняется во время выполнения, а затем использует эту информацию для создания общего графа вычислений, который можно использовать в другой структуре. Его успех будет зависеть от диапазона AI-фреймворков, которые он может моделировать. Увидим ли мы ONNX-представления для Google TensorFlow, также являющегося проектом с открытым исходным кодом и, вероятно, наиболее широко используемого, или для Apache MXNet, которая является предпочтительной структурой искусственного интеллекта Amazon.