Repolode
mratsim

mratsim/Arraymancer

Быстрая и удобная библиотека N-мерных тензоров на Nim с бэкендами для CPU, CUDA и OpenCL, предназначенная для численных вычислений и глубокого обучения.

Open source альтернатива:NumPyPyTorch

Звёзды
1,415
Форки
102
Открытые issues
166
Последний коммит
19 дней назад

Что это?

Arraymancer — библиотека ndarray (тензоров) на Nim, созданная под влиянием NumPy и PyTorch. Она предоставляет N-мерные массивы с поддержкой срезов, broadcasting, изменения формы и базовых операций линейной алгебры, таких как умножение матриц, метод наименьших квадратов, разложение на собственные значения, PCA и k-means.

Помимо базовых операций с массивами, библиотека включает DSL для нейросетей на основе autograd, позволяющий задавать, обучать и запускать модели со слоями Linear, Conv2D, MaxPool2D и GRU. Тензоры можно обрабатывать на CPU с помощью распараллеленных через OpenMP процедур на основе BLAS/LAPACK, а также на устройствах CUDA (при необходимости — с cuDNN) и OpenCL, хотя GPU-тензоры поддерживают меньше операций, чем CPU-тензоры.

Библиотека быстро компилируется и создает автономные бинарные файлы, зависящие главным образом от библиотеки BLAS; в README отмечается, что это делает ее подходящей для встраиваемых устройств и Raspberry Pi. Проект помечен как экспериментальный, а интерфейс для глубокого обучения все еще дорабатывается.

Ключевые возможности

  • 01N-мерные тензоры размерностью до 6 со срезами в стиле NumPy и явным broadcasting с помощью +.
  • 02Операции изменения формы и объединения: concat, reshape, split, permute и transpose.
  • 03Чтение и запись файлов CSV, NumPy (.npy) и HDF5.
  • 04Операции линейной алгебры, включая метод наименьших квадратов, разложение на собственные значения и матрицы ковариации.
  • 05DSL для нейросетей на основе autograd со слоями Linear, Conv2D, pooling и GRU.
  • 06Бэкенды тензоров для CPU, CUDA и OpenCL; CUDA и OpenCL поддерживают меньше операций.

Сценарии использования

  • Проекты численных вычислений на Nim, которым нужны быстрые многомерные массивы.
  • Прототипирование небольших нейросетей на Nim с autograd и лаконичным синтаксисом описания моделей.
  • Развертывание моделей на устройствах с ограниченными ресурсами, где крупный стек Python не подходит.
  • Задачи классического машинного обучения, например PCA, k-means и подгонка методом наименьших квадратов в коде на Nim.

Быстрый старт

  1. 1

    Установить Nim с помощью choosenim

  2. 2

    Установить Arraymancer с помощью nimble

    nimble install arraymancer

Что важно знать

  • Проект помечен как экспериментальный, а его интерфейс глубокого обучения считается нестабильным и продолжает меняться.
  • Для работы Arraymancer необходимо установить в системе библиотеки BLAS и LAPACK.
  • В бэкендах CUDA и OpenCL реализовано меньше функций, чем в CPU-тензорах.

Темы

Частые вопросы

Что такое Arraymancer?
Быстрая и удобная библиотека N-мерных тензоров на Nim с бэкендами для CPU, CUDA и OpenCL, предназначенная для численных вычислений и глубокого обучения. Arraymancer — библиотека ndarray (тензоров) на Nim, созданная под влиянием NumPy и PyTorch. Она предоставляет N-мерные массивы с поддержкой срезов, broadcasting, изменения формы и базовых операций линейной алгебры, таких как умножение матриц, метод наименьших квадратов, разложение на собственные значения, PCA и k-means.
Arraymancer можно использовать бесплатно? Какая у него лицензия?
Arraymancer распространяется с открытым исходным кодом под лицензией Apache-2.0. Перед использованием в коммерческих продуктах проверьте условия лицензии.
Arraymancer всё ещё поддерживается?
Активно поддерживается. Последний коммит в Arraymancer — 6 окт. 2026 г..
Для чего можно использовать Arraymancer?
Проекты численных вычислений на Nim, которым нужны быстрые многомерные массивы. Прототипирование небольших нейросетей на Nim с autograd и лаконичным синтаксисом описания моделей. Развертывание моделей на устройствах с ограниченными ресурсами, где крупный стек Python не подходит. Задачи классического машинного обучения, например PCA, k-means и подгонка методом наименьших квадратов в коде на Nim.
Как установить Arraymancer?
Установить Nim с помощью choosenim Установить Arraymancer с помощью nimble: nimble install arraymancer
Где скачать Arraymancer?
Исходный код и инструкции по установке — на GitHub: https://github.com/mratsim/Arraymancer

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

Открытый фреймворк для компиляции моделей машинного обучения: он позволяет настраивать конвейеры компилятора на Python и развёртывать модели на разных аппаратных платформах.

13,9 тыс.+4 за неделю4 тыс.PythonApache-2.0Обновлён 11 часов назад