스크립트
00:00:00Google acaba de lanzar una nueva biblioteca de tiempo de ejecución que permite ejecutar modelos de inteligencia artificial
00:00:05y aprendizaje automático dentro del navegador a velocidades cercanas a las nativas. Se llama LiteRT.js y es impresionante. Así que
00:00:12en este video echaremos un vistazo a LiteRT.js, veremos cómo funciona y lo probaremos
00:00:18creando una aplicación de captura de movimiento en 3D en tiempo real que se ejecuta totalmente en el navegador. Será
00:00:24muy divertido, así que vamos a sumergirnos. ¿Qué es exactamente LiteRT.js? Bueno, es un enlace de JavaScript para
00:00:36LiteRT, su tiempo de ejecución de inferencia en dispositivo, que ha estado ejecutando modelos en Android, iOS y hardware
00:00:42integrado desde hace años. Pero LiteRT.js lleva el mismo tiempo de ejecución al navegador mediante WebAssembly usando
00:00:50el paquete npm principal de LiteRT.js. Y esto es lo que hace diferente a LiteRT.js. Google ya tiene una
00:00:58biblioteca de aprendizaje automático para el navegador, se llama TensorFlow.js, y existe desde hace años. Pero
00:01:04TensorFlow.js se ejecuta en núcleos basados en JavaScript, y eso es un gran cuello de botella. Verán, los núcleos de JavaScript
00:01:11no pueden explotar completamente la CPU o la GPU como lo hace un tiempo de ejecución nativo. Por eso, TensorFlow.js siempre ha estado por detrás
00:01:19del rendimiento de una aplicación nativa. Pero LiteRT.js usa WebAssembly y viene con su propio núcleo optimizado.
00:01:27Así que el mismo tiempo de ejecución nativo que potencia la inferencia en Android e iOS se compila a WASM y luego se expone a
00:01:34LiteRT.js. Por lo tanto, ya no obtienes una capa de abstracción con sabor a web, en realidad obtienes
00:01:40un motor de tiempo de ejecución verdaderamente optimizado. Y esto también se refleja en su arquitectura de backend. LiteRT.js tiene
00:01:47tres niveles diferentes que le permiten funcionar bien en CPU, GPU e incluso NPU. En el lado de la CPU,
00:01:55usa XNNPack, la biblioteca de núcleos de CPU optimizada de Google, que es multihilo con soporte para SIMD relajado.
00:02:04Esta es su alternativa universal que funcionará en cualquier lugar, sin necesidad de GPU. Pero para las GPU,
00:02:11utiliza ML drift sobre WebGPU, y aquí es donde reside el rendimiento real. Utiliza núcleos de GPU
00:02:18nativos, por lo que elementos como los sombreadores ya no se renderizan usando algún tipo de orquestación de JavaScript. Y para
00:02:24NPU, tiene WebNN, que todavía es experimental en Chrome y Edge, y apunta a hardware dedicado de
00:02:31procesamiento neuronal para una inferencia eficiente en términos de energía. Y según los propios puntos de referencia de Google, que
00:02:37realizaron en un MacBook Pro 2024 con silicio M4, parece tener una inferencia tres veces más rápida que
00:02:45otros tiempos de ejecución web en CPU y GPU en modelos de visión y audio. Y al ejecutar cargas de trabajo como
00:02:53seguimiento de objetos, transcripción de audio o manipulación de imágenes en la GPU o NPU, en lugar de en la CPU,
00:03:00obtenemos aumentos de rendimiento que van desde cinco veces hasta 60 veces más rápidos,
00:03:07dependiendo de la tarea. Y vale la pena mencionar que ese es el mejor escenario posible. Google también
00:03:13reconoce esto. Por lo tanto, los resultados pueden variar, teniendo en cuenta su GPU específica,
00:03:18la regulación térmica y la calidad de los controladores. Y hay una cosa más que realmente importa para este tiempo de ejecución.
00:03:24Si ya tienes modelos que usas para ejecutar en PyTorch o TensorFlow, si tienes un archivo TF Lite existente,
00:03:30LiteRT.js puede ejecutarlo directamente. Y si estás en PyTorch, también existe LiteRT
00:03:38Torch, una ruta de conversión que lleva tu modelo directamente a .TF Lite. Además, también hay un cuantizador
00:03:44de AI Edge para reducir el tamaño de los modelos sin necesidad de una reescritura completa. Así que los flujos de trabajo heredados que has estado usando en
00:03:50TensorFlow.js pueden portarse fácilmente al nuevo LiteRT.js, lo cual es genial. Pero, ¿qué puedes
00:03:58hacer realmente con él? Bueno, Google tiene algunas demostraciones interesantes, que te dan una idea de la
00:04:03gama. Puedes hacer detección de objetos YOLO en tiempo real, estimación de profundidad monocular con la
00:04:09biblioteca depth anything que convierte la transmisión de tu cámara web en una nube de puntos 3D en vivo. Y también puede hacer
00:04:16escalado de imágenes con la biblioteca real ESR GAN. Y todas estas demos se ejecutan completamente en el cliente con
00:04:23sin backends, sin APIs directamente dentro de tu navegador. Y ya han anunciado lo que viene a continuación,
00:04:29LiteRT.LM.js. Y esto será para ejecutar modelos de lenguaje completos localmente en el navegador.
00:04:36Así que esto no es solo para visión por computadora. Pronto ofrecerá inferencia local de LLM también.
00:04:42Muy bien, todo eso suena genial, pero quería probarlo por mi cuenta para ver qué tan potente es realmente.
00:04:48Así que para esta demostración, decidí crear una aplicación de captura de movimiento real que usa tu cámara web para
00:04:55estimación de pose en tiempo real. Y también se ejecuta completamente en tu navegador, del lado del cliente y sin conexión, sin
00:05:03trucos. Codifiqué esta aplicación en cloud code usando el nuevo modelo Fable 5. Y aquí está el resultado final.
00:05:10Y, por cierto, si quieres descargar este repositorio y jugar con él tú mismo, también he añadido un enlace a
00:05:15el proyecto en la descripción de abajo. Así que aquí LiteRT.JS se está ejecutando en el navegador usando un modelo de blaze pose
00:05:23con 33 puntos de referencia corporales, impulsando un personaje 3D en tiempo real usando 3.js. No hay servidor backend y
00:05:31todo lo que ves está sucediendo en esta máquina en este momento completamente sin conexión. Así que podemos ver aquí que en la
00:05:38CPU, estamos promediando alrededor de 38 FPS con una inferencia de 23.3 milisegundos. Y también podemos ver que la estimación de
00:05:47pose se está retrasando un poco. Pero ahora, si cambiamos a la versión de WebGPU, podemos ver que ahora estamos
00:05:54obteniendo unos sólidos 120 fotogramas por segundo con una inferencia de 8.4 milisegundos. Y la estimación de pose también es un poco
00:06:02más rápida. Y eso es aproximadamente un salto de tres veces en la velocidad de fotogramas y una reducción de 2.8 veces en el tiempo de inferencia, lo que
00:06:10coincide con los números de Google, aunque está en el extremo modesto de lo que publicaron. Pero tenemos que
00:06:16tener en cuenta que blaze pose es realmente un modelo pequeño. Así que hay menos cómputo bruto para que la GPU
00:06:23lo procese. Pero incluso con eso, mover las matemáticas de los tensores fuera de la CPU y hacia la WebGPU reduce la latencia
00:06:30lo suficiente como para que el retraso sea significativamente menor. Y también añadí una función donde puedes grabar tu
00:06:36animación de captura de pose y exportarla como un JSON o como un archivo de captura de movimiento de bio visión, y luego abrir eso en
00:06:44algo como blender y reorientar esa animación a tu propio personaje personalizado. Y como puedes ver aquí,
00:06:49no es perfecto. Los movimientos no son muy detallados ni refinados. Así que esto sigue siendo un trabajo en
00:06:56progreso. Pero es genial que pude hacer funcionar esta versión inicial en solo 10 minutos
00:07:01usando el nuevo LiteRT.js. Así que ahí lo tienen, amigos. Eso es LiteRT.js en pocas palabras. Es
00:07:08honestamente sorprendente ver lo lejos que WebAssembly ha impulsado las capacidades de ejecutar aplicaciones complejas
00:07:14en el navegador. Y esta nueva biblioteca LiteRT.js demuestra realmente que a veces JavaScript puede
00:07:21ser un verdadero cuello de botella para alcanzar esas velocidades de rendimiento casi nativas. Así que estoy muy impresionado con esta
00:07:27biblioteca y no puedo esperar a probar LiteRT.js cuando finalmente se lance a finales de este año. Pero, ¿qué opinas
00:07:35sobre LiteRT.js? ¿Lo has probado? ¿Lo usarás? Háznoslo saber en los comentarios de abajo. Y amigos,
00:07:40si te gustan este tipo de análisis técnicos, por favor házmelo saber dándole a ese botón de me gusta
00:07:45debajo del video. Y también no olvides suscribirte a nuestro canal. Este ha sido Andres de
00:07:50BetterStack y los veré en los próximos videos.