Nx

Бесплатно
Открытый исходный код
Windows
macOS
Linux

Сайт: github.com/elixir-nx

Nx — это библиотека для численных вычислений, разработанная для использования на виртуальной машине Erlang/BEAM и тесно интегрируемая с экосистемой языка Elixir. Она предоставляет абстракции для работы с многомерными массивами (тензорами), базовыми линейно-алгебраическими операциями и вычислениями с использованием как центрального процессора (CPU), так и ускорителей, когда это поддерживается. Nx ориентирована на выражение численных задач в функциональном стиле, сохраняя свойства конкурентности и отказоустойчивости, характерные для платформы BEAM.

Проект возник как ответ на потребность в инструменте для научных и машинно-обучающих вычислений в экосистеме Erlang/Elixir, где традиционные библиотеки на C/C++ или Python тяжело интегрируются с моделью акторов и легковесных процессов. Nx обеспечивает базовый набор операций для создания и трансформации массивов, автоматического дифференцирования и компиляции вычислительных выражений в оптимизированные подцелевые бэкэнды представления. В документации и реализациях уделяется внимание совместимости с другими библиотеками в сообществе Elixir для построения моделей и конвейеров обработки данных.

  • Многомерные массивы: поддержка тензоров различной размерности с явным указанием типов элементов и размеров.
  • Базовые операции: арифметические, матричные и поэлементные операции, агрегации и редукции.
  • Автоматическое дифференцирование: инструменты для вычисления градиентов и производных, применимые в задачах оптимизации и обучения моделей.
  • Бэкэнды исполнения: абстракция для работы с различными механизмами выполнения (локальный CPU, внешние ускорители или компилируемые представления).
  • Компиляция выражений: преобразование высокоуровневых вычислительных графов в оптимизированные планы выполнения для выбранного бэкэнда.
  • Интеграция с BEAM: проект учитывает модель многозадачности, лёгкие процессы и устойчивость к ошибкам, типичные для среды Erlang/Elixir.
  • Функциональный интерфейс: декларативное описание вычислений, сочетающееся с возможностью последовательного и параллельного исполнения.
  • Совместимость с экосистемой: адаптеры и вспомогательные инструменты для связи с библиотеками визуализации, загрузки данных и построения моделей на Elixir.
Подробнее