Qué es realmente la arquitectura
Un vision transformer, convertido a ONNX y comprimido a unos 40 MB, dividido en dos partes para que cada una se mantenga por debajo del límite de tamaño de archivo de la plataforma de alojamiento. Se reensambla en el navegador y se verifica su suma de comprobación antes de ejecutar nada.
La inferencia se realiza a través de WebAssembly, que permite que un entorno de ejecución compilado funcione a una velocidad casi nativa dentro de una pestaña del navegador. El propio entorno de ejecución es un binario WASM comprimido que se carga junto a los pesos.
Esto ya no tiene nada de inusual. Lo que era una demostración de investigación en 2021 ahora es una forma normal de distribuir un modelo, y los navegadores hicieron la mayor parte del trabajo.
Qué ventajas aporta
| Inmuebles | En el navegador | En un servidor |
|---|---|---|
| La imagen sale de su dispositivo | No imposible | Yes necesario |
| Coste por comprobación | Yes cero | No cálculo real |
| Acuerdo de procesamiento de datos necesario | No | Yes |
| Funciona sin red tras la carga | Yes | No |
| El modelo se puede mantener privado | No se descarga | Yes |
| La primera comprobación es instantánea | No el modelo se descarga una vez | Yes |
La primera fila es la razón por la que existen las demás. Como no hay punto final de carga, no hay depósitos de fotografías de otras personas, ni política de retención que redactar, ni filtraciones de datos que revelar, ni nada que entregar si se solicita.
La segunda fila es la razón por la que puede ser gratuito sin un medidor de uso. Servir una comprobación no cuesta nada, así que no hay coste por imagen que recuperar, lo que cambia el planteamiento de los precios.
Cuáles son sus costes
Tres contrapartidas reales, expuestas con claridad, porque una página que solo enumera ventajas es publicidad.
- La primera comprobación es lenta. Deben llegar cuarenta megabytes antes de que ocurra nada. En una conexión rápida, esto supone unos pocos segundos; en una deficiente, tarda más. Las comprobaciones posteriores reutilizan el modelo en caché y comienzan de inmediato.
- Los dispositivos antiguos tienen dificultades. La inferencia requiere memoria y procesamiento que un teléfono de hace cinco años puede no tener holgadamente. A un servidor no le importaría qué dispositivo tiene entre manos.
- El modelo es público. Cualquier cosa que se descargue en un navegador se puede guardar. Un modelo del lado del servidor puede ser propietario; este no puede serlo, y los pesos son de todos modos un punto de control de investigación abierto.
Merece la pena ser directo sobre el tercer punto. Enviar un modelo al cliente significa regalarlo. Aquí es un intercambio aceptable porque los pesos ya están publicados, y el trabajo que hace que la herramienta sea útil es la calibración, la fragmentación y la interpretación creadas en torno a ellos.
Los problemas de ingeniería que conviene conocer
Dividir un archivo grande
Las plataformas de alojamiento estático limitan los tamaños de los archivos individuales. Un modelo de 40 MB superaba el límite, por lo que se envía en dos partes deterministas que se reensamblan en el navegador y se comprueban con un hash de manifiesto antes de su uso. Una parte corrupta o sustituida falla de manera evidente en lugar de producir puntuaciones erróneas en silencio.
No cargar nada hasta que sea necesario
El modelo, el entorno de ejecución y el lector de credenciales no se obtienen al cargar la página. Llegan en la primera interacción, por lo que alguien que lea un artículo nunca descarga nada de esto. Eso mantiene las páginas rápidas para la gran mayoría de visitantes que nunca ejecutan una comprobación.
Decodificación de formatos complejos
Los archivos HEIC de iPhones, AVIF, TIFF y JPEG XL necesitan decodificación antes de ser puntuados. Ahora los navegadores procesan la mayoría de ellos de forma nativa, lo que elimina la que solía ser la mayor parte del trabajo en el lado del cliente en una herramienta como esta.
Cuándo esta arquitectura es la elección equivocada
No es universalmente mejor. Un servidor tiene más sentido cuando el modelo es propietario y merece la pena protegerlo, cuando es demasiado grande para enviarlo, cuando necesita resultados en un flujo de trabajo de backend en lugar de frente a una persona, o cuando necesita un tiempo de respuesta garantizado independientemente del dispositivo.
Para una herramienta que alguien abre con el fin de comprobar una imagen sospechosa, nada de eso se aplica, y la característica de privacidad vale más que todo lo que aportaría un servidor.
Qué es lo que esto descarta
Elegir el cliente tiene consecuencias más allá de la privacidad, y algunas de ellas son limitaciones que conviene nombrar en lugar de características.
No hay historial. Un resultado solo existe en la pestaña que lo produjo, por lo que no se puede consultar nada más tarde a menos que se haya exportado. Ese es el coste directo de no tener una cuenta, y es la función más solicitada que la arquitectura dificulta enormemente.
No hay estado compartido. Dos personas no pueden ver la misma cola de trabajo y un equipo no puede revisar las comprobaciones de los demás. Un enlace compartido conlleva un único resultado, lo que abarca una conversación y no un flujo de trabajo.
No hay API. Nada que se ejecute en una pestaña del navegador se puede llamar desde un flujo de trabajo de backend, lo que descarta por completo los usos de mayor volumen. Esas son carencias reales, y la postura honesta es que son el precio de la característica que más importa.