Это обычная ситуация, когда нам приходится переключаться между библиотеками, такими как Tensorflow и Pytorch, для разработки проектов глубокого обучения.

Я начал свой путь в машинном обучении примерно в 2015 году, когда был подростком. Не имея четкого представления об этой области, я прочитал много статей и просмотрел массу видео на YouTube. Я понятия не имел, что это за поле и как оно работает. Это было время, когда была выпущена популярная библиотека машинного обучения Google, Tensorflow.

Вступая в Tensorflow

Tensorflow был выпущен в ноябре 2015 года как «Библиотека программного обеспечения с открытым исходным кодом для машинного интеллекта». Как только он был выпущен, люди начали прыгать в него. Количество форков в GitHub только что выросло в геометрической прогрессии. Но в нем был фундаментальный недостаток: «Статический график».

Под капотом Tensorflow использовал реализацию статического графа для управления потоком данных и операций. Это означало, что с точки зрения программиста вам нужно было сначала создать полную архитектуру модели, сохранить ее в графике, а затем запустить график с помощью «сеанса». Хотя это было плюсом для создания производственных моделей, ему не хватало питонической природы.

Сообщество начало жаловаться на эту проблему, и команда Tensorflow создала «Eager Execution», чтобы исправить это. Но все же он не был добавлен в качестве режима по умолчанию. В Tensorflow также было много (слишком много) API, что сбивало с толку. Также было много избыточности для одного и того же определения функции.

Переход на PyTorch

За это время (примерно в 2017 году) мне пришлось сделать проект, который требовал одновременного обучения двух нейронных сетей с потоком данных между ними. Я начал свою работу с Tensorflow, потому что там был беспорядок. Множественные графики, переключение между графиками, ручной выбор параметров для обновления… сплошной бардак. Наконец, я отказался от Tensorflow и начал использовать PyTorch.

Использовать PyTorch было намного проще… конкретные определения, стабильные конструкции, общая структура дизайна. Мне это очень понравилось. Тем не менее, я не отказался от Tensorflow полностью, я ходил на семинары и лекции, используя Keras, немного Tensorflow и Tensorboard. Позже я завершил свой проект, сделал еще несколько в PyTorch, но чувствовал, что сообщество недостаточно сильное.

Вернуться к Tensorflow

За это время Tensorflow становился все сильнее, с тесной интеграцией с пакетами, легким обучением с помощью графических процессоров и отличной поддержкой производства в виде обслуживания Tensorflow. Казалось, что TensorFlow движется в новом направлении.

1 октября 2019 года была выпущена первая стабильная версия TF2.0. Новые функции включают тесную интеграцию с Keras, Eager Execution по умолчанию (наконец 😅), функции, а не сеансы, поддержку нескольких графических процессоров и многое другое. Еще одна прекрасная функция - декоратор tf.function, который преобразует блок кода в оптимизированные графики, обеспечивая более быстрое выполнение.

Кроме того, такие API, как tf.probability, tensorflow_model_optimization, tf.agents, расширяют возможности глубокого обучения в других областях. В качестве предложения я хотел бы видеть разные пакеты для обучения с подкреплением, такие как Tensorflow Agents, TFRL (трюфель), Dopamine, объединенные в один API.

Спасибо!!