Un chip de $10 ejecuta un modelo de IA de 45M de parámetros (Needle 2)

BBetter Stack
컴퓨터/소프트웨어가전제품/카메라

스크립트

00:00:00Esto es Needle 2. Es un modelo LLM Argentic de 14 megabytes. Déjame repetirlo por si te lo perdiste.
00:00:07Tiene 14 megabytes y cuenta con 45 millones de parámetros. Básicamente, este LLM es tan diminuto que puede ejecutarse
00:00:14en cualquier dispositivo de borde hasta en un ESP32 S3 básico. Fue desarrollado por Cactus Compute, que ahora
00:00:21ha publicado este modelo como código abierto bajo la licencia Apache 2.0, y yo mismo lo probé y de verdad
00:00:28funciona. Así que en este video vamos a echar un vistazo a Needle 2, ver cómo funciona y luego vamos
00:00:34a realizar algunas pruebas de inferencia divertidas en un microcontrolador real para ver su rendimiento. Va a
00:00:40ser muy divertido, así que vamos a ello. Hace un par de semanas hice otro video en el que
00:00:49desplegué un modelo de 29 millones de parámetros en un ESP32 S3, pero eso era más bien un truco publicitario y no
00:00:56un LLM real, porque era tan básico que fue entrenado con cuentos infantiles, así que eso era lo único
00:01:03que podía generar. Sin embargo, este LLM es un modelo real que comprende tu contexto, pero antes de que
00:01:10te emociones demasiado, hay una salvedad. Este no va a ser tu LLM de chat habitual. En su lugar,
00:01:16este modelo está hecho específicamente para funcionar como un despachador de llamadas a herramientas. Así que la forma en que opera es que
00:01:22predefines un conjunto de llamadas a herramientas, y eso puede ser cualquier cosa, desde girar un servomotor hasta cualquier otra operación mecánica
00:01:29o ejecutable que se te ocurra. Y luego puedes darle instrucciones al modelo en lenguaje natural
00:01:35y será lo suficientemente inteligente como para entender, según tu comando, qué llamada a herramienta debe ejecutar. Y eso
00:01:40es básicamente la esencia. Ahora bien, esto es genial porque en una placa como una Raspberry Pi 5 puede alcanzar
00:01:47hasta 500 tokens por segundo, por lo que puede ser un controlador muy eficiente para, digamos, proyectos de robótica. Pero en dispositivos más grandes y potentes,
00:01:55¿puede Needle 2 operar realmente como un chatbot? Bueno, la respuesta es no, porque no se trata realmente de una cuestión de velocidad,
00:02:04ya que Needle no fue entrenado en absoluto con conocimiento general o conversación. Todos sus datos de entrenamiento son
00:02:10acciones de dispositivos como comandos de hogar inteligente, acciones móviles, acciones de dispositivos portátiles, ese tipo de cosas. Así que
00:02:17incluso en un dispositivo potente, si le preguntas cuál es la capital de Francia, no podrá responder. Será
00:02:23muy bueno seleccionando la función correcta y completando los argumentos adecuados, pero nada más. Y ese es el
00:02:28compromiso que tuvieron que hacer para lograr que fuera así de pequeño. Pero hablemos de cómo lograron
00:02:3345 millones de parámetros que realmente compiten con modelos cinco o siete veces más grandes. Porque
00:02:40normalmente, cuando reduces un modelo tanto, simplemente se vuelve tonto. Pero Cactus no quería eso, así que reconstruyó
00:02:47algunas piezas de la arquitectura desde cero. El gran cambio es algo que llaman engrama.
00:02:53Normalmente, todo el conocimiento del modelo reside en sus pesos y cada uno de esos pesos tiene que pasar
00:02:59por una multiplicación de matrices para cada token, y eso es costoso. Pero Cactus trasladó una parte de ese
00:03:06conocimiento a tablas de búsqueda hash en su lugar. De este modo, el modelo solo puede ir a buscar una fila de memoria en lugar de
00:03:12hacer operaciones matemáticas con ella. Y también cambiaron las capas MLP normales por algo construido con una transformada de Hadamard,
00:03:19que es una operación matemática fija con casi ningún parámetro aprendible asociado. Normalmente, ese
00:03:25paso de mezcla se realiza mediante enormes matrices que el modelo tiene que aprender desde cero. Y eso consume la mayor parte de
00:03:32los escasos parámetros del modelo pequeño. Pero una transformada de Hadamard se salta todo ese aprendizaje porque es una
00:03:38fórmula fija que hace toda la mezcla gratis. Así que Cactus obtiene ese beneficio sin gastar ninguno de
00:03:44sus 45 millones de parámetros en ello. Y luego está la cuantización, que honestamente es la parte que hace
00:03:50que todo esto sea implementable. Needle 2 se ejecuta con dos bits por peso y de hecho fue entrenado con dos
00:03:57bits, no cuantizado después del hecho. El problema es que muchos modelos pequeños se desmoronan cuando los
00:04:03comprimes después del entrenamiento porque nunca fueron construidos para sobrevivir a esa compresión. Pero Needle fue
00:04:09entrenado contra su propia compresión desde el principio, por lo que su versión predeterminada ya está optimizada. ¿Se sostiene todo esto
00:04:16en la práctica? Bueno, según las propias pruebas de Cactus, Needle 2 compite genuinamente cara a cara con un modelo
00:04:23cinco veces su tamaño. Y en un par de las pruebas de llamadas a herramientas más difíciles, de hecho lo supera por completo,
00:04:30a pesar de funcionar con una precisión de dos bits frente a la precisión completa de 16 bits de LFM 2.5. Y en la prueba de acciones móviles
00:04:38de referencia, Needle elige el nombre de función correcto el 98.3% de las veces, lo cual es superior al de cada uno de los
00:04:45modelos con los que se compara. Así que no es perfecto en todo, pero en la tarea para la que fue creado,
00:04:51es realmente muy bueno. Vamos a probarlo para ver cómo funciona en la práctica. Para este propósito, construí
00:04:57mi propio motor de inferencia personalizado que se ejecuta en esta placa exacta, un ESP32-S3. Dejaré un enlace al
00:05:05repositorio de GitHub en la descripción de abajo si quieres probarlo por ti mismo. Aquí en la terminal,
00:05:10podemos ver que tenemos una pequeña aplicación TUI. Ahora puedo simplemente darle una instrucción con una solicitud en lenguaje natural
00:05:17y ver cómo funciona. Primero, hagamos una solicitud sencilla. Digamos que encienda una luz roja
00:05:25intermitente durante tres segundos. Tan pronto como ejecuto esto, puedes ver que está mapeando el modelo directamente desde
00:05:32el chip flash y configurando su memoria de trabajo. Y una vez que lo hace, pasa por la fase de razonamiento
00:05:39y podemos ver que identificó que el color es rojo, el modo es intermitente, y también identificó
00:05:48que necesitamos hacerlo durante tres segundos. Una vez que termina con la fase de razonamiento,
00:05:53procede a escribir la llamada a herramienta real. Esto toma un momento porque es lento
00:06:00en un ESP32. Pero aun así, esto es bastante genial. Y mira eso, ahora tenemos una luz roja intermitente durante
00:06:08tres segundos. También podemos ver que tiene una puntuación de confianza que nos indica cuán seguro estaba
00:06:15sobre esta llamada a herramienta en particular. Esto está integrado en Needle 2. Y es bastante genial porque, basándonos en
00:06:21esta puntuación de confianza, podemos programar el chip para diferentes escenarios. Como viste, esto tomó alrededor de
00:06:2739 segundos en completarse, lo cual puede parecer lento. Pero recuerda que este es un modelo de 45 millones de parámetros
00:06:35ejecutándose en un microcontrolador de ocho megabytes sin GPU. Veamos ahora qué pasa si le pregunto
00:06:41algo totalmente fuera de contexto. Permíteme preguntarle: ¿cuál es la capital de Francia?
00:06:48Y como puedes ver aquí, está leyendo nuestra solicitud de nuevo. Ahora, en la fase de razonamiento,
00:06:54dice que no hay ninguna herramienta disponible para datos de países. Así que la llamada a la herramienta estará vacía. Y
00:07:00mira eso, estaba muy seguro de que no hay herramientas que se puedan ejecutar con confianza basándose
00:07:07en esta instrucción. Así que diría que sigue siendo una respuesta muy inteligente. Esta vez, pidámosle que
00:07:14ilumine con una luz púrpura durante siete segundos y veamos si lo comprende. Identifica que
00:07:21el color es efectivamente púrpura y comprende que iluminar significa que el modo debe ser fijo y no intermitente.
00:07:29También entiende que debe ser durante siete segundos. Luego procede a escribir la llamada a herramienta
00:07:36real. Una vez hecho esto, mira eso: ahora está emitiendo una luz púrpura. Debería durar siete segundos.
00:07:46Ahí lo tienes. ¿Qué tan genial es eso? Y curiosamente, esta vez no estaba tan seguro.
00:07:52La puntuación de confianza fue de 0.57, pero aun así logró razonar la tarea adecuadamente y
00:08:00ejecutar exactamente lo que pedimos. Hay una cosa más que quiero mostrarte. Construí este proyecto
00:08:06específicamente para que sea reutilizable. Así que puedes cambiar los comandos de luz intermitente por otra cosa. Como,
00:08:12por ejemplo, si tienes un proyecto de robótica que utiliza servomotores, puedes reemplazar estos
00:08:17comandos por los tuyos. He documentado un proceso de tres pasos sobre cómo hacer eso en el archivo Léeme del proyecto.
00:08:24Así que si quieres reutilizarlo para tus propios proyectos, solo sigue esos tres pasos y estarás
00:08:29listo. Probemos otra variante: muestra una luz amarilla durante cinco segundos. Y listo.
00:08:36Está parpadeando una luz amarilla durante cinco segundos. Y esta tuvo la puntuación de confianza más baja de todas,
00:08:420.46. Me pareció interesante que pensara que mostrar significaba parpadear una luz y no mostrarla
00:08:50durante un período prolongado. Ahí lo tienes. Eso demuestra que el modelo no es perfecto. Es posible que aún
00:08:56malinterprete tus intenciones, pero aun así, obtuvimos una luz amarilla y la obtuvimos durante cinco segundos. Y
00:09:03la mayoría de estas llamadas a herramientas tardan unos 40 segundos en procesarse con un promedio de 1.86 tokens por segundo. Así que
00:09:10ese es un resultado bastante genial en mi opinión. Así que ahí lo tienen, amigos. Eso es Needle 2 en pocas palabras,
00:09:16un modelo de 45 millones de parámetros, 14 megabytes ejecutándose completamente sin conexión en un chip que cuesta unos 10 dólares.
00:09:24Y amigos, si les gustan este tipo de análisis técnicos, háganmelo saber destrozando ese
00:09:28botón de Me gusta debajo del video. Y tampoco olviden suscribirse a nuestro canal.
00:09:33Esto ha sido Andrus de BetterStack y los veré en los próximos videos.

핵심 요약

El modelo de código abierto Needle 2 ejecuta llamadas a herramientas en microcontroladores de diez dólares mediante una arquitectura optimizada de 45 millones de parámetros y cuantización de dos bits.

하이라이트

  • Needle 2 es un modelo de lenguaje de 45 millones de parámetros y 14 megabytes desarrollado por Cactus Compute.

  • El modelo opera como despachador de llamadas a herramientas y alcanza hasta 500 tokens por segundo en una Raspberry Pi 5.

  • La arquitectura incorpora tablas de búsqueda hash llamadas engramas y una transformada de Hadamard en lugar de capas MLP normales.

  • El modelo se ejecuta con una precisión de dos bits y fue entrenado directamente con esa misma compresión.

  • En una prueba de acciones móviles, Needle 2 elige el nombre de función correcto el 98.3 por ciento de las veces.

  • El dispositivo ESP32-S3 ejecuta el modelo localmente sin GPU a un promedio de 1.86 tokens por segundo.

타임라인

Presentación del modelo Needle 2 y su función principal

  • Needle 2 cuenta con 45 millones de parámetros y ocupa 14 megabytes.
  • El desarrollo pertenece a Cactus Compute bajo la licencia Apache 2.0.
  • El modelo funciona específicamente como un despachador de llamadas a herramientas en lugar de un chatbot general.

El modelo se ejecuta en dispositivos de borde como el microcontrolador ESP32-S3. A diferencia de los modelos conversacionales tradicionales, este sistema no posee conocimiento general ni capacidad de chat, ya que fue entrenado exclusivamente con acciones de dispositivos y comandos en lenguaje natural para activar funciones mecánicas o ejecutable.

Arquitectura y optimización para tamaño reducido

  • La Raspberry Pi 5 alcanza hasta 500 tokens por segundo con este modelo.
  • Cactus reemplazó las operaciones matriciales con tablas de búsqueda hash llamadas engramas y una transformada de Hadamard.
  • El entrenamiento se realizó directamente con una cuantización de dos bits por peso.

El diseño arquitectónico evita el uso intensivo de parámetros aprendibles al delegar parte del conocimiento a tablas hash y utilizar una fórmula fija de Hadamard para la mezcla. Esto permite mantener un rendimiento competitivo frente a modelos cinco veces más grandes, superando a competidores en tareas de llamadas a herramientas con una precisión del 98.3 por ciento en referencias de acciones móviles.

Pruebas de inferencia en un microcontrolador ESP32-S3

  • El motor de inferencia personalizado se ejecuta en una placa ESP32-S3 sin GPU.
  • Las solicitudes en lenguaje natural activan luces de diferentes colores y duraciones con puntuaciones de confianza variables.
  • El procesamiento de cada llamada a herramienta toma alrededor de 40 segundos con un promedio de 1.86 tokens por segundo.

Las pruebas demuestran la capacidad del microcontrolador para interpretar solicitudes complejas y generar llamadas a herramientas precisas de manera totalmente desconectada. Aunque el tiempo de procesamiento es elevado debido a las limitaciones del hardware de diez dólares, el sistema procesa correctamente las instrucciones y maneja de forma adecuada consultas fuera de contexto.

커뮤니티 글

아직 글이 없습니다. 이 영상에 대한 첫 번째 글을 작성해 보세요!

이 영상에 대해 글쓰기