Repolode
sonos

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. 1

    Instala el paquete de Python desde PyPI

    pip install tract
  2. 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