Facebook и Microsoft выступили с инициативой по унификации обмена моделями между разными фреймворками машинного обучения и системами искусственного интеллекта. Итогом стала разработка открытого формата ONNX (Open Neural Network Exchange) для представления моделей глубинного машинного обучения. Эталонная реализация ONNX написана на языке Python и распространяется под лицензией MIT.

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

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

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

Заявлено о скорой реализации поддержки ONNX во фреймворках Caffe2, PyTorch и CNTK (Cognitive Toolkit). При помощи ONNX модель, натренированная в одном из этих фреймворков, может быть легко перенесена для работы в другом фреймворке. Например, исследователи могут построить экспериментальную модель при помощи PyTorch, обладающего большой гибкостью и широкими возможностями, или при помощи фреймворка ConvNet, позволяющего в интерактивной режиме быстро создавать прототипы, а при создании конечного продукта перенести в Caffe2, отличающегося высокой производительностью и возможностью работы на мобильных устройствах.

Источник: http://www.opennet.ru/opennews/art.shtml?num=47166