Краткое введение в JAX, MXNet, MATLAB и Flux

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

ДЖАКС

Что это? Платформа числовых вычислений с открытым исходным кодом, находящаяся в стадии разработки, первоначально разработанная Google (например, NumPy, но для графического процессора).

Кто его использует? Многие команды в Google, такие как DeepMind.

Почему вы должны знать об этом? JAX был разработан Google для ускорения численных вычислений на GPU и собственном аппаратном TPU Google. Используя такие идеи, как ускоренная линейная алгебра, своевременная компиляция (JIT) и автоматическая векторизация, JAX добился значительного ускорения и масштабирования. Несмотря на то, что их синтаксис похож, чтобы свести к минимуму кривую обучения, JAX имеет отличную от NumPy философию дизайна. JAX поощряет функциональное программирование с помощью таких функций, как vmap и pmap (векторизация + распараллеливание).

В настоящее время для JAX разработано много высокоуровневых API. Известные из них - Haiku и Flax.

Апач MXNet

Что это такое? Ветеран машинного обучения с открытым исходным кодом и интерфейсными привязками для нескольких языков, включая Python, C++, R, Java и Perl.

Кто его использует? Amazon AWS.

Почему вы должны об этом знать? Наиболее мощными функциями MXNet являются поддержка многих языков программирования и масштабируемость. Сравнительные тесты NVIDIA показывают, что MXNet быстрее, чем PyTorch и TensorFlow, в некоторых задачах глубокого обучения.

MXNet поставляется с Gluon, высокоуровневым API для создания нейронных сетей. Он также имеет экосистему для классификации изображений (GluonCV) и НЛП (GluonNLP).

Набор инструментов глубокого обучения MATLAB

Что это такое? Дополнительный набор инструментов для пользователей MATLAB, который может создавать и обучать нейронные сети для решения различных задач.

Кто его использует? Академия и отрасли, такие как аэрокосмическая промышленность и машиностроение. Например, Airbus использовал его для обнаружения дефектов внутри самолетов.

Зачем вам об этом знать? Что бы вы ни думали о MATLAB, он по-прежнему остается популярной экосистемой программирования среди ученых и инженеров. У него отличная поддержка пользователей и, на мой взгляд, лучшая документация из всех библиотек глубокого обучения в этом списке. Набор инструментов глубокого обучения предназначен для людей, которые хотят создавать системы с минимальным программированием. Simulink, графический интерфейс программирования в MATLAB, предлагает способы создания простых для понимания конвейеров глубокого обучения.

Джулия Флакс

Что это? Библиотека машинного обучения с открытым исходным кодом, созданная для языка программирования Julia.

Кто его использует? Области, требующие больших вычислительных ресурсов, такие как фармацевтика и финансы. Например, Astrazeneca использовала его для прогнозирования токсичности лекарств.

Почему вы должны об этом знать? Язык программирования Julia с годами набирал популярность среди специалистов по обработке и анализу данных, квантов и исследователей в области биоинформатики. По скорости он сравним с C/C++ и разработан так, чтобы быть удобным для начинающих, как Python. Реализация глубокого обучения Julia на Google TPU показала ускорение в 200 раз по сравнению с ЦП. Если вы уже программируете в Julia, Flux — отличная библиотека для изучения.

Заключение

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

Источники

[1] https://www.deepmind.com/blog/using-jax-to-accelerate-our-research

[2] https://github.com/aws/sagemaker-python-sdk

[3] https://developer.nvidia.com/deep-learning-performance-training-inference

[4] https://www.mathworks.com/company/user_stories/case-studies/airbus-uses-artificial-intelligence-and-deep-learning-for-automatic-defect-detection.html

[5] https://twitter.com/jeffdean/status/1054951415339192321?lang=en

[6] https://julialang.org/blog/2012/02/why-we-created-julia/

[7] https://juliacomputing.com/case-studies/astra-zeneca/