Back

Ejecuta Modelos de IA Directamente en el Navegador con Transformers.js

Ejecuta Modelos de IA Directamente en el Navegador con Transformers.js

¿Qué pasaría si tu aplicación web pudiera clasificar texto, transcribir audio o detectar objetos en imágenes, sin necesidad de enviar datos a un servidor? Eso es exactamente lo que Transformers.js hace posible. Trae la inferencia de IA del lado del cliente al navegador usando únicamente JavaScript.

Puntos Clave

  • Transformers.js te permite ejecutar modelos de ML pre-entrenados completamente en el navegador sin necesidad de un servidor backend.
  • La inferencia se ejecuta mediante ONNX Runtime en WebAssembly (amplia compatibilidad) o WebGPU (más rápido, acelerado por GPU).
  • Solo funcionan los modelos con pesos compatibles con ONNX; los modelos cuantizados son la opción práctica predeterminada para uso en navegador.
  • Mueve la inferencia a un Web Worker para evitar congelar la interfaz en aplicaciones de producción.
  • La IA del lado del cliente permite funcionalidades que preservan la privacidad, capacidad offline y baja latencia, al tiempo que potencialmente reduce los costos de inferencia en el backend.

¿Qué es Transformers.js?

Transformers.js es una biblioteca de JavaScript de Hugging Face que te permite ejecutar modelos de aprendizaje automático pre-entrenados directamente en el navegador, sin necesidad de un servidor de modelos en el backend. Replica la API de la biblioteca transformers de Python de Hugging Face, por lo que el modelo mental se transfiere fácilmente si has trabajado con ella anteriormente.

El paquete mantenido es @huggingface/transformers. Si ves referencias antiguas a @xenova/transformers, estas se refieren al nombre del paquete anterior usado antes de que el proyecto pasara al mantenimiento de Hugging Face. La versión estable actual es la línea v3, con vistas previas de desarrollo de v4 disponibles pero aún no universalmente estables.

Cómo Funciona Realmente la Inferencia de IA en el Navegador

Transformers.js ejecuta modelos usando ONNX Runtime compilado para entornos JavaScript. ONNX (Open Neural Network Exchange) actúa como un formato universal que permite que modelos entrenados en PyTorch, TensorFlow o JAX se ejecuten en el navegador.

Por defecto, la inferencia se ejecuta en la CPU mediante WebAssembly (WASM), que funciona en prácticamente todos los navegadores modernos. Para un mejor rendimiento en hardware compatible, puedes optar por WebGPU, que descarga el cómputo a la GPU.

La disponibilidad de WebGPU continúa evolucionando en diferentes navegadores y plataformas. Puedes verificar el estado actual de implementación en webstatus.dev. En la práctica, el soporte y el rendimiento aún varían dependiendo del navegador, sistema operativo y controladores de GPU.

Usa WASM cuando necesites máxima compatibilidad. Cambia a WebGPU cuando el rendimiento sea importante y estés apuntando a navegadores modernos con soporte para WebGPU.

No Todos los Modelos de Hugging Face se Ejecutan en el Navegador

Esta es una restricción importante: los modelos necesitan pesos compatibles con ONNX para funcionar con Transformers.js. Muchas arquitecturas populares—DistilBERT, Whisper, T5, Llama, Qwen y docenas más—ya tienen versiones ONNX disponibles en el Hub de Hugging Face. Para modelos que no las tienen, puedes convertirlos usando Optimum.

Debido a que los entornos de navegador tienen recursos limitados, los modelos cuantizados son la opción práctica predeterminada. La opción dtype controla esto:

  • "fp32" — precisión completa, predeterminado para WebGPU
  • "fp16" — precisión media, buen equilibrio para GPU
  • "q8" — cuantización de 8 bits, predeterminado para WASM
  • "q4" — cuantización de 4 bits, el más pequeño y rápido

Ejecutando tu Primer Pipeline

La API de pipeline maneja el preprocesamiento, inferencia y postprocesamiento en una sola llamada. Instala el paquete:

npm install @huggingface/transformers

Luego ejecuta análisis de sentimientos en pocas líneas:

import { pipeline } from "@huggingface/transformers";

// Por defecto usa WASM, utiliza un modelo predeterminado para la tarea
const classifier = await pipeline("sentiment-analysis");
const result = await classifier("I love building with Transformers.js!");
console.log(result); // [{ label: 'POSITIVE', score: 0.9998 }]

Para habilitar WebGPU con precisión fp16:

const classifier = await pipeline(
  "sentiment-analysis",
  "Xenova/distilbert-base-uncased-finetuned-sst-2-english",
  { device: "webgpu", dtype: "fp16" }
);

Los archivos del modelo se almacenan en caché en el navegador después de la primera descarga, por lo que el uso repetido—incluyendo offline—no requiere volver a descargarlos. Para producción, considera alojar los assets del modelo tú mismo en lugar de depender directamente del Hub.

Una nota práctica: por defecto, la inferencia se ejecuta en el hilo principal, lo que puede congelar la interfaz durante cálculos pesados. Mover la inferencia a un Web Worker es el patrón correcto para cualquier funcionalidad de producción.

Por Qué Esto Importa para los Desarrolladores Frontend

Ejecutar modelos de IA en el navegador con Transformers.js abre casos de uso que la inferencia del lado del servidor no puede igualar de manera tan limpia:

  • Inferencia que preserva la privacidad — los datos del usuario nunca salen del dispositivo
  • Aplicaciones de IA offline — pueden funcionar sin conexión de red después de la descarga inicial del modelo
  • Reducción de costos de servidor — menos cargas de trabajo de GPU en el backend para aprovisionar o escalar
  • Funcionalidades de baja latencia — sin viaje de ida y vuelta de red a un endpoint de API

La lista de tareas soportadas es amplia: clasificación de texto, resumen, traducción, detección de objetos, segmentación de imágenes, reconocimiento de voz, texto a voz, y más.

Conclusión

Transformers.js hace que la IA basada en navegador sea cada vez más práctica para desarrolladores frontend. Comienza con un modelo cuantizado pequeño, valida que la tarea se ajuste a tu caso de uso, y luego optimiza desde ahí—WebGPU para velocidad, Web Workers para capacidad de respuesta de la interfaz, y modelos auto-alojados para confiabilidad en producción. La documentación oficial y el hub de modelos son las mejores siguientes paradas.

Preguntas Frecuentes

No. Solo los modelos que tienen pesos compatibles con ONNX funcionan con Transformers.js. Muchas arquitecturas populares como DistilBERT, Whisper y T5 ya tienen versiones ONNX en el Hub de Hugging Face. Para modelos que no las tienen, puedes convertir los pesos tú mismo usando la biblioteca Optimum.

Por defecto, la inferencia se ejecuta en el hilo principal, lo que bloquea las actualizaciones de la interfaz durante el cómputo. La solución recomendada es mover toda la lógica de inferencia a un Web Worker. Esto mantiene el hilo principal libre para renderizado e interacciones del usuario mientras el modelo se ejecuta en segundo plano.

Sí. Los archivos del modelo se almacenan en caché en el navegador después de la descarga inicial. Una vez en caché, la inferencia puede funcionar sin conexión de red. Para aplicaciones de producción, alojar los assets del modelo tú mismo te da más control sobre la disponibilidad y evita la dependencia del Hub de Hugging Face.

Usa WASM para máxima compatibilidad de navegador ya que funciona en todas partes. Elige WebGPU cuando necesites inferencia más rápida y tu audiencia objetivo use navegadores con soporte para WebGPU. WebGPU descarga el cómputo a la GPU y puede ser significativamente más rápido para modelos más grandes.

Gain Debugging Superpowers

Unleash the power of session replay to reproduce bugs, track slowdowns and uncover frustrations in your app. Get complete visibility into your frontend with OpenReplay — the most advanced open-source session replay tool for developers. Check our GitHub repo and join the thousands of developers in our community.

OpenReplay