Описание
Shumai — это дифференцируемая библиотека тензоров, разработанная для JavaScript и TypeScript, использующая скорость Bun и мощь Flashlight. Ее цель — сделать манипулирование данными, обучение моделей и сложную логику вывода более доступными и эффективными для разработчиков в экосистеме JavaScript. Используя нативные типизированные массивы и JIT-компилятор Bun, Shumai предлагает производительное решение для задач, начиная от создания наборов данных и заканчивая обучением небольших моделей машинного обучения.
Библиотека предоставляет основные тензорные операции, автоматическое дифференцирование для вычисления градиентов и бесшовное преобразование в нативные массивы JavaScript и обратно. Это позволяет разработчикам работать с данными непосредственно в JavaScript, подготавливать их для массивов, совместимых с GPU, а затем обучать модели, не покидая среды. Архитектура Shumai построена таким образом, чтобы минимизировать накладные расходы, позволяя JavaScript не мешать процессу обучения и вывода, особенно для небольших моделей.
Ключевые возможности включают стандартные утилиты для работы с массивами, создание тензоров, математические операции и отслеживание градиентов. Пользователи могут включить вычисление градиентов для тензоров, выполнять операции, а затем получать доступ к вычисленным градиентам. Библиотека также предлагает функции для настройки управления памятью, позволяя пользователям регулировать параметры сборки мусора для оптимизации производительности в зависимости от возможностей оборудования. Кроме того, Shumai включает систему сбора статистики, которая может записывать производительность операций в консоль или через HTTP, с опциями для профилирования в рамках области видимости и сбора трассировок стека.
Shumai особенно полезна для инженеров-программистов и исследователей, которые уже работают в экосистеме JavaScript и хотят интегрировать возможности машинного обучения без крутой кривой обучения, связанной с другими языками или фреймворками. Ее тесты производительности показывают значительные преимущества по сравнению с такими библиотеками, как TensorFlow.js, в различных операциях, особенно на Apple M1 Pro и GPU Nvidia. Проект является экспериментальным, и приветствуются предложения по улучшению его функциональности и стабильности.
Основные функции Shumai
Быстрая, дифференцируемая библиотека тензоров для JavaScript и TypeScript
Создана на базе Bun и Flashlight для высокой производительности
Поддерживает автоматическое дифференцирование для вычисления градиентов
Бесшовное преобразование между тензорами и нативными массивами JavaScript
Оптимизирована для обучения небольших моделей и сложной логики вывода
Использует нативные типизированные массивы и JIT-компиляцию
Настройка использования памяти для оптимизации производительности
Встроенный сбор статистики для профилирования операций
Сбор статистики в рамках области видимости для изолированного профилирования
Экспериментальное программное обеспечение с активной разработкой
Поддерживает вычисления на GPU через бэкенды ArrayFire (CUDA на Linux, CPU на macOS)
Расширяемое логирование статистики с опциями Console и HTTP
Начало работы с Shumai
Установите Bun и ArrayFire: Следуйте инструкциям для вашей платформы (macOS и Linux).
Установите Shumai: Выполните команду `bun install @shumai/shumai`.
Импортируйте Shumai: Используйте `import * as sm from '@shumai/shumai'` в вашем коде TypeScript/JavaScript.
Создавайте тензоры: Используйте функции, такие как `sm.randn()` или `sm.tensor()`, для создания тензоров.
Выполняйте операции: Применяйте математические операции, такие как `matmul()`, `mul()` и `sum()`.
Включите градиенты: Установите `tensor.requires_grad = true` для тензоров, требующих отслеживания градиентов.
Вычисляйте градиенты: Вызовите `.backward()` для тензора потерь, чтобы заполнить градиенты.
Настраивайте память: Используйте `util.memoryOptions()` для настройки параметров памяти и оптимизации производительности.
Варианты использования Shumai
- Создание наборов данных
- Обучение моделей
- Логика вывода
- Предобработка данных
- Прототипирование исследований
- Разработка приложений








