Descripción
Shumai es una biblioteca de tensores diferenciable diseñada para JavaScript y TypeScript, que aprovecha la velocidad de Bun y la potencia de Flashlight. Su objetivo es hacer que la manipulación de datos, el entrenamiento de modelos y la lógica de inferencia avanzada sean más accesibles y eficientes para los desarrolladores dentro del ecosistema JavaScript. Al utilizar arrays tipados nativos y el compilador Just-In-Time (JIT) de Bun, Shumai ofrece una solución de alto rendimiento para tareas que van desde la creación de conjuntos de datos hasta el entrenamiento de pequeños modelos de aprendizaje automático.
La biblioteca proporciona operaciones de tensores principales, diferenciación automática para el cálculo de gradientes y conversión fluida desde y hacia arrays nativos de JavaScript. Esto permite a los desarrolladores trabajar con datos directamente en JavaScript, prepararlos para arrays compatibles con GPU y luego entrenar modelos sin salir del entorno. La arquitectura de Shumai está construida para minimizar la sobrecarga, permitiendo que JavaScript se aparte durante el entrenamiento y la inferencia, especialmente para modelos más pequeños.
Las capacidades clave incluyen utilidades de arrays estándar, creación de tensores, operaciones matemáticas y seguimiento de gradientes. Los usuarios pueden habilitar el cálculo de gradientes para tensores, realizar operaciones y luego acceder a los gradientes calculados. La biblioteca también ofrece funciones para ajustar la gestión de memoria, permitiendo a los usuarios ajustar los parámetros de recolección de basura para optimizar el rendimiento en función de las capacidades del hardware. Además, Shumai incluye un sistema de recopilación de estadísticas que puede registrar el rendimiento de las operaciones en la consola o a través de HTTP, con opciones para perfiles con ámbito y recopilación de trazas de pila.
Shumai es particularmente beneficioso para ingenieros de software e investigadores que ya trabajan dentro del ecosistema JavaScript y desean incorporar capacidades de aprendizaje automático sin una curva de aprendizaje pronunciada asociada con otros lenguajes o frameworks. Sus puntos de referencia de rendimiento muestran ventajas significativas sobre bibliotecas como TensorFlow.js en varias operaciones, especialmente en GPUs Nvidia y Apple M1 Pro. El proyecto es experimental y se agradecen las contribuciones para mejorar su funcionalidad y estabilidad.
Características principales de Shumai
Biblioteca de tensores rápida y diferenciable para JavaScript y TypeScript
Construida con Bun y Flashlight para alto rendimiento
Soporta diferenciación automática para el cálculo de gradientes
Conversión fluida entre tensores y arrays nativos de JavaScript
Optimizada para entrenar modelos pequeños y lógica de inferencia avanzada
Aprovecha arrays tipados nativos y compilación JIT
Ajuste de uso de memoria para optimización del rendimiento
Recopilación de estadísticas integrada para perfiles de operaciones
Recopilación de estadísticas con ámbito para perfiles aislados
Software experimental con desarrollo activo
Soporta computación GPU a través de backends ArrayFire (CUDA en Linux, CPU en macOS)
Registro de estadísticas extensible con opciones de consola y HTTP
Primeros pasos con Shumai
Instalar Bun y ArrayFire: Siga las instrucciones específicas de la plataforma para macOS y Linux.
Instalar Shumai: Ejecute `bun install @shumai/shumai`.
Importar Shumai: Use `import * as sm from '@shumai/shumai'` en su código TypeScript/JavaScript.
Crear Tensores: Utilice funciones como `sm.randn()` o `sm.tensor()` para crear tensores.
Realizar Operaciones: Aplique operaciones matemáticas como `matmul()`, `mul()` y `sum()`.
Habilitar Gradientes: Establezca `tensor.requires_grad = true` para los tensores que necesiten seguimiento de gradientes.
Calcular Gradientes: Llame a `.backward()` en el tensor de pérdida para poblar los gradientes.
Ajustar Memoria: Ajuste las opciones de memoria usando `util.memoryOptions()` para el rendimiento.
Casos de uso de Shumai
- Creación de Conjuntos de Datos
- Entrenamiento de Modelos
- Lógica de Inferencia
- Preprocesamiento de Datos
- Prototipado de Investigación
- Desarrollo de Aplicaciones








