Acelerador multiplataforma para ejecutar modelos de ML exportados al formato ONNX, con compatibilidad para entrenar mediante scripts de PyTorch.
sonos/tract
Motor de inferencia autónomo escrito en Rust que carga modelos ONNX y NNEF y los ejecuta en CPU, Apple Metal, NVIDIA CUDA y WebAssembly.
- Estrellas
- 3,112
- Forks
- 297
- Issues abiertos
- 136
- Último commit
- hace 5 horas
¿Qué es?
tract es un motor de inferencia de redes neuronales escrito en Rust y desarrollado en Sonos. Carga y optimiza modelos ONNX y NNEF, y los ejecuta en destinos que van desde CPU ARM integradas hasta GPU de NVIDIA y Apple, en el navegador mediante WebAssembly o en equipos con Linux, macOS y Windows. También se publica en PyPI un paquete de Python basado en el mismo núcleo.
Una idea central es traducir una vez el modelo a un formato intermedio basado en NNEF, tract-OPL, y luego distribuir solo un runtime pequeño con la aplicación. El proyecto también admite inferencia pulsificada, que convierte un modelo secuencial para que procese bloques de tamaño fijo a lo largo de su eje de streaming; esto permite tanto el procesamiento por lotes como el uso en tiempo real y con baja latencia, por ejemplo, para detectar palabras de activación y reconocer voz en streaming. Los ejemplos del repositorio abarcan clasificación de imágenes, reconocimiento de voz, generación de texto con transformers, generación de imágenes a partir de texto y detección de rostros.
Funciones clave
- 01Carga modelos ONNX, NNEF, TensorFlow Lite y grafos congelados de TensorFlow 1, un formato antiguo.
- 02Se ejecuta en CPU con kernels SIMD escritos a mano, además de ofrecer backends para Apple Metal y NVIDIA CUDA.
- 03Se compila a WebAssembly para implementarlo en navegadores o mediante WASI.
- 04Convierte modelos a un formato compacto basado en NNEF para reducir las dependencias del runtime.
- 05Admite inferencia pulsificada para modelos de streaming, como los de detección de palabras de activación y reconocimiento de voz.
- 06Ofrece una API de Rust y un paquete de Python en PyPI.
Casos de uso
- Ejecutar detección de palabras de activación o reconocimiento de voz en streaming en dispositivos ARM integrados.
- Distribuir un runtime de inferencia pequeño sin protobuf ni cargadores de frameworks de entrenamiento.
- Ejecutar modelos ONNX o NNEF en una aplicación de Rust, en CPU o GPU.
- Ejecutar modelos de imágenes, voz o lenguaje en el navegador mediante WebAssembly.
Inicio rápido
- 1
Instala el paquete de Python desde PyPI
pip install tract - 2
Carga un modelo ONNX y ejecútalo con la API de Rust siguiendo el ejemplo de inicio rápido del README
Antes de usarlo
- TensorFlow 2 no es compatible directamente, por lo que primero hay que convertir los modelos a ONNX.
- Para compilar desde el código fuente se necesita rustc 1.91.0 o posterior.
- Los entornos de ejecución Metal y CUDA requieren GPU de Apple y NVIDIA, respectivamente.
Temas
Preguntas frecuentes
- ¿Qué es tract?
- Motor de inferencia autónomo escrito en Rust que carga modelos ONNX y NNEF y los ejecuta en CPU, Apple Metal, NVIDIA CUDA y WebAssembly. tract es un motor de inferencia de redes neuronales escrito en Rust y desarrollado en Sonos. Carga y optimiza modelos ONNX y NNEF, y los ejecuta en destinos que van desde CPU ARM integradas hasta GPU de NVIDIA y Apple, en el navegador mediante WebAssembly o en equipos con Linux, macOS y Windows. También se publica en PyPI un paquete de Python basado en el mismo núcleo.
- ¿tract es gratuito? ¿Qué licencia tiene?
- tract es open source bajo la licencia Other. Revisa los términos de la licencia antes de usarlo en productos comerciales.
- ¿tract sigue mantenido?
- Mantenimiento activo. El último commit de tract fue el 7 nov 2026.
- ¿Para qué puedo usar tract?
- Ejecutar detección de palabras de activación o reconocimiento de voz en streaming en dispositivos ARM integrados. Distribuir un runtime de inferencia pequeño sin protobuf ni cargadores de frameworks de entrenamiento. Ejecutar modelos ONNX o NNEF en una aplicación de Rust, en CPU o GPU. Ejecutar modelos de imágenes, voz o lenguaje en el navegador mediante WebAssembly.
- ¿Cómo se instala tract?
- Instala el paquete de Python desde PyPI: pip install tract Carga un modelo ONNX y ejecútalo con la API de Rust siguiendo el ejemplo de inicio rápido del README
- ¿Dónde consigo tract?
- El código fuente y las instrucciones de instalación están en GitHub: https://github.com/sonos/tract
Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.
Proyectos relacionados
Biblioteca de Python que compila modelos entrenados de scikit-learn, LightGBM y XGBoost en operaciones con tensores para ejecutar inferencias en PyTorch, TorchScript, ONNX o TVM.
Un plan de estudios de IA para principiantes de Microsoft, de 12 semanas y 24 lecciones, que abarca IA simbólica, redes neuronales, visión por computadora, NLP y ética, con notebooks en PyTorch y TensorFlow.
Compilador y runtime basados en MLIR que traducen modelos de ML a una IR unificada para desplegarlos desde centros de datos hasta dispositivos móviles y edge.
Paquete de Python que convierte redes neuronales de Keras, PyTorch y ONNX en código HLS para ejecutar inferencias de ML en FPGAs.
Un framework de deep learning para Java independiente del motor que permite crear, entrenar y ejecutar modelos con una API nativa de Java.