Google acaba de hacer obsoleto a TensorFlow.js (LiteRT.js)

BBetter Stack
컴퓨터/소프트웨어게임/e스포츠AI/미래기술

스크립트

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.

핵심 요약

LiteRT.js reemplaza la dependencia de núcleos de JavaScript en el navegador con un motor optimizado basado en WebAssembly, permitiendo ejecutar modelos de IA con una mejora de rendimiento de hasta 3 veces en CPU y GPU.

하이라이트

  • LiteRT.js permite la ejecución de modelos de IA en el navegador con velocidades cercanas a las nativas mediante WebAssembly.

  • El rendimiento de inferencia en CPU y GPU mejora hasta 3 veces en comparación con otros tiempos de ejecución web basados en JavaScript.

  • LiteRT.js emplea XNNPack para CPU multihilo y WebGPU para una aceleración de hardware optimizada.

  • Las cargas de trabajo complejas, como la estimación de pose, experimentan aumentos de rendimiento de 5 a 60 veces al delegar cálculos de la CPU a la GPU o NPU.

  • La biblioteca es compatible directamente con archivos existentes en formato .TF Lite y modelos provenientes de PyTorch mediante conversión.

  • LiteRT.js incluye soporte para ejecución sin servidor ni APIs, operando totalmente del lado del cliente en el navegador.

타임라인

Arquitectura y ventajas de LiteRT.js

  • LiteRT.js utiliza WebAssembly para ejecutar inferencias de IA en el navegador fuera del cuello de botella de los núcleos de JavaScript.
  • El motor integra un backend de tres niveles compatible con CPU, GPU y hardware NPU dedicado.
  • XNNPack proporciona soporte para ejecución multihilo y SIMD en la CPU.

LiteRT.js extiende el tiempo de ejecución nativo utilizado en dispositivos Android e iOS hacia el navegador. A diferencia de TensorFlow.js, que depende de núcleos de JavaScript limitados, esta biblioteca compila el motor nativo a WebAssembly. Esta estructura permite aprovechar al máximo los recursos de hardware disponibles en el dispositivo.

Rendimiento y capacidades de hardware

  • Las pruebas en un MacBook Pro M4 demuestran inferencias tres veces más rápidas en tareas de visión y audio.
  • WebGPU y WebNN permiten descargar tareas pesadas de la CPU para lograr incrementos de velocidad de hasta 60 veces.
  • El ecosistema permite reutilizar modelos existentes de PyTorch o TensorFlow mediante el formato .TF Lite.

El rendimiento varía según la GPU, la gestión térmica y los controladores instalados. La arquitectura separa las tareas de procesamiento neuronal para maximizar la eficiencia energética y la velocidad. Además, los flujos de trabajo heredados de TensorFlow.js son fácilmente portables gracias a las herramientas de conversión y cuantización integradas.

Aplicaciones prácticas y demostraciones técnicas

  • Las capacidades actuales incluyen detección de objetos YOLO, estimación de profundidad y escalado de imágenes.
  • Una demostración de captura de movimiento en tiempo real pasó de 38 FPS a 120 FPS al cambiar de procesamiento en CPU a WebGPU.
  • LiteRT.LM.js llegará próximamente para permitir la ejecución local de modelos de lenguaje (LLM) en el navegador.

La creación de una aplicación de captura de movimiento utilizando Blaze Pose y 3.js confirmó una reducción de la latencia de inferencia de 23.3 ms a 8.4 ms mediante el uso de WebGPU. Este proyecto permite exportar datos de animación directamente para su uso en software como Blender. El futuro de la tecnología incluye la ejecución de modelos de lenguaje completos localmente sin depender de backends.

커뮤니티 글

모든 글 보기