Краткое введение в 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
[5] https://twitter.com/jeffdean/status/1054951415339192321?lang=en
[6] https://julialang.org/blog/2012/02/why-we-created-julia/