Descrição
Shumai é uma biblioteca de tensores diferenciável projetada para JavaScript e TypeScript, aproveitando a velocidade do Bun e o poder do Flashlight. Ela visa tornar a manipulação de dados, o treinamento de modelos e a lógica de inferência avançada mais acessíveis e eficientes para desenvolvedores dentro do ecossistema JavaScript. Ao utilizar arrays tipados nativos e o compilador Just-In-Time (JIT) do Bun, Shumai oferece uma solução de alto desempenho para tarefas que vão desde a criação de conjuntos de dados até o treinamento de pequenos modelos de aprendizado de máquina.
A biblioteca fornece operações de tensor centrais, diferenciação automática para computação de gradientes e conversão contínua de e para arrays nativos do JavaScript. Isso permite que os desenvolvedores trabalhem com dados diretamente em JavaScript, preparem-nos para arrays compatíveis com GPU e, em seguida, treinem modelos sem sair do ambiente. A arquitetura do Shumai é construída para minimizar a sobrecarga, permitindo que o JavaScript saia do caminho durante o treinamento e a inferência, especialmente para modelos menores.
As principais capacidades incluem utilitários de array padrão, criação de tensores, operações matemáticas e rastreamento de gradientes. Os usuários podem habilitar a computação de gradientes para tensores, realizar operações e, em seguida, acessar os gradientes computados. A biblioteca também oferece recursos para ajuste de uso de memória, permitindo que os usuários ajustem os parâmetros de coleta de lixo para otimizar o desempenho com base nas capacidades do hardware. Além disso, Shumai inclui um sistema de coleta de estatísticas que pode registrar o desempenho das operações no console ou via HTTP, com opções para profiling com escopo e coleta de rastreamentos de pilha.
Shumai é particularmente benéfico para engenheiros de software e pesquisadores que já trabalham dentro do ecossistema JavaScript e desejam incorporar capacidades de aprendizado de máquina sem uma curva de aprendizado acentuada associada a outras linguagens ou frameworks. Seus benchmarks de desempenho mostram vantagens significativas sobre bibliotecas como TensorFlow.js em várias operações, especialmente em GPUs Apple M1 Pro e Nvidia. O projeto é experimental e contribuições são bem-vindas para melhorar sua funcionalidade e estabilidade.
Recursos principais de Shumai
Biblioteca de tensores diferenciável e rápida para JavaScript e TypeScript
Construída com Bun e Flashlight para alto desempenho
Suporta diferenciação automática para computação de gradientes
Conversão contínua entre tensores e arrays nativos do JavaScript
Otimizada para treinamento de modelos pequenos e lógica de inferência avançada
Utiliza arrays tipados nativos e compilação JIT
Ajuste de uso de memória para otimização de desempenho
Coleta de estatísticas integrada para profiling de operações
Coleta de estatísticas com escopo para profiling isolado
Software experimental com desenvolvimento ativo
Suporta computação GPU via backends ArrayFire (CUDA em Linux, CPU em macOS)
Registro de estatísticas extensível com opções de Console e HTTP
Primeiros passos com Shumai
Instalar Bun e ArrayFire: Siga as instruções específicas da plataforma para macOS e Linux.
Instalar Shumai: Execute `bun install @shumai/shumai`.
Importar Shumai: Use `import * as sm from '@shumai/shumai'` em seu código TypeScript/JavaScript.
Criar Tensores: Utilize funções como `sm.randn()` ou `sm.tensor()` para criar tensores.
Realizar Operações: Aplique operações matemáticas como `matmul()`, `mul()` e `sum()`.
Habilitar Gradientes: Defina `tensor.requires_grad = true` para tensores que precisam de rastreamento de gradiente.
Computar Gradientes: Chame `.backward()` no tensor de perda para preencher os gradientes.
Ajustar Memória: Ajuste as opções de memória usando `util.memoryOptions()` para desempenho.
Casos de uso de Shumai
- Criação de Conjuntos de Dados
- Treinamento de Modelos
- Lógica de Inferência
- Pré-processamento de Dados
- Prototipagem de Pesquisa
- Desenvolvimento de Aplicações








