Skip to content

Transformers.js: models de llenguatge i ML al navegador

Published:

Introducció a Transformers.js de Hugging Face i exemple de LLM al navegador amb suport CPU (WASM) o GPU (WebGPU) segons el que suporti el navegador

Transformers.js és una biblioteca de JavaScript de Hugging Face que permet executar models de machine learning directament al navegador, sense necessitat d’un servidor. És l’equivalent en JavaScript de la coneguda biblioteca Python transformers de Hugging Face, amb una API similar per a desenvolupadors web.

Per què executar models al navegador

Executar inferència al client té avantatges clars:

En resum: cost zero dòlars —tot s’executa a la teva màquina— i és completament privat: les dades no s’envien enlloc.

Transformers.js utilitza ONNX Runtime per executar els models. Per sota pot usar:

La biblioteca tria automàticament el millor backend disponible (per exemple, WebGPU si està disponible, i en cas contrari WASM en CPU).

Què es pot fer amb Transformers.js

Suporta moltes tasques i modalitats:

L’API d’alt nivell es basa en el concepte de pipeline: tries la tasca i opcionalment el model, i la biblioteca s’encarrega de descarregar i executar el model.

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

const pipe = await pipeline('sentiment-analysis');
const result = await pipe('M\'encanta aquest article!');

Els models es descarreguen des del Hub de Hugging Face i es poden usar versions quantitzades (per exemple q4, q8) per reduir mida i requisits de memòria en entorns limitats.

Exemple: LLM al navegador (CPU o GPU)

El següent xat executa un LLM (SmolLM2) completament al teu navegador usant Transformers.js. El model es descarrega un sol cop i queda en memòria cau. La inferència corre en un Web Worker per no bloquejar la interfície, les respostes arriben en streaming token a token, i el markdown es renderitza en temps real.

Si el teu navegador suporta WebGPU, la inferència s’accelerarà usant la GPU i es desbloquejarà el model Llama 3.2 1B; en cas contrari s’usarà WASM (CPU).

Selecciona un model i descarrega'l al navegador per xatejar.

Descàrrega: 182 MB · RAM recomanada: ~512 MB

Conclusions

Encara que WebGPU no està disponible a tots els navegadors, WASM ofereix una alternativa universal que permet executar models més petits en CPU amb resultats acceptables. Com pots comprovar tu mateix al xat de dalt, amb WebGPU l’acceleració per GPU ja és suficient per mantenir converses fluides amb models de fins a 1B de paràmetres.

El principal inconvenient és el pes dels models: fins i tot quantitzats, van de ~180 MB a més d’1 GB. Tanmateix, un cop descarregats s’emmagatzemen a la memòria cau del navegador, de manera que les visites següents carreguen el model gairebé a l’instant sense tornar-lo a descarregar.

Aquesta tecnologia obre una via prometedora per integrar intel·ligència artificial a llocs web sense cost d’infraestructura, sense enviar dades a tercers i sense dependre d’APIs de pagament. Tot passa al dispositiu de l’usuari: zero dòlars i privacitat total.

La versió actual (v3) encara té limitacions amb certs formats de quantització en WebGPU. No obstant això, Transformers.js v4 ja està disponible en preview i porta un runtime WebGPU completament reescrit en C++ juntament amb l’equip d’ONNX Runtime. Promet suport per a models de més de 8B de paràmetres, fins a 4x més velocitat en models d’embeddings, càrrega directa de pesos a GPU sense passar per WASM, i funcionament offline complet. Quan s’estabilitzi, el panorama de la IA al navegador farà un salt significatiu.

Referències