Используйте свои любимые AI-фреймворки без ограничений

По мере того как модели машинного обучения становятся все больше и сложнее, временные и материальные затраты на создание моделей часто требуют, чтобы ваши проекты были согласованы в рамках одной структуры. Tensorflow и PyTorch — две самые популярные среды в области искусственного интеллекта и машинного обучения, особенно для сообщества глубокого обучения.

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

Tensorflow старше и имеет большую поддержку других языков (Tensorflow.js, Swift) со встроенным API и производственными инструментами, такими как TFServing, TFX и TFLite, которые упрощают развертывание моделей на локальных, облачных, IoT и мобильных платформах. . Tensorflow также имеет более обширную экосистему с приложениями глубокого обучения для конкретных случаев использования (текст, изображения, аудио и видео), которые могут интегрироваться на разных платформах.

PyTorch значительно проще в освоении и использовании, по крайней мере, для программистов на Python. У него более быстрый процесс разработки модели благодаря бэкенду CUDA и эффективному использованию памяти. Поэтому большинство исследователей или организаций с открытым исходным кодом, таких как OpenAI, предпочитают создавать свои модели. Это, в свою очередь, означает, что более предварительно обученные современные модели являются эксклюзивными для PyTorch.

Общее мнение состоит в том, что если вы создаете модели для исследовательской деятельности, PyTorch — это основа для вас, а если вы работаете в отрасли или хотите каким-либо образом развернуть свою модель, Tensorflow — идеальный вариант. Однако можно разрабатывать с помощью PyTorch и развертывать с помощью Tensorflow с использованием ONNX.

В этой статье демонстрируется возможность преобразования ваших моделей между платформами с помощью ONNX.

Представляем ONNX

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

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

Использование ONNX

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

Вы можете обучить свою модель с помощью PyTorch и сохранить модель, как обычно, с помощью функции «torch.save».

torch.save(your_model.state_dict(), ‘your_model.pth’)

Затем используйте встроенный в PyTorch экспортер ONNX, чтобы представить вашу модель в формате ONNX, охватывающем архитектуру и параметры вашей модели.

trained_model = model()
trained_model.load_state_dict(torch.load(your_model.pth’))
dummy_input = Variable(torch.randn(1,3,128,128))
torch.onnx.export(trained_model, dummy_input, “your_model.onnx”)

Примечание. ONNX — это не просто удобный формат моделей. Вы можете использовать свои модели в этом формате с ONNXRuntime для более быстрого повторного обучения и процессов логического вывода.

Ваш следующий шаг — преобразовать вашу модель из формата ONNX в формат модели Tensorflow. Вы можете использовать пакет ONNX Tensorflow Backend, который обеспечивает совместимость ONXX с Tensorflow.

import onnx
from onnx_tf.backend import prepare
onnx_model = onnx.load('your_model.onnx')
tf_rep = prepare(onnx_model)

Это выводит представление модели Tensorflow, которое затем можно использовать для вывода или развертывания.

Примечание: здесь вы видели переход от PyTorch к ONNX к Tensorflow, обратный процесс также можно сделать с помощью инструментов Tensorflow to ONNX и ONNX to PyTorch.

Заключение

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

Вы можете найти полный пример кода от обучения PyTorch до вывода Tensorflow в этом репозитории GitHub.