Ejecuté un modelo de 35B parámetros en mi iPhone (IA local)

BBetter Stack
컴퓨터/소프트웨어가전제품/카메라스마트폰/모바일

스크립트

00:00:00Este modelo de 35 mil millones de parámetros se está ejecutando directamente en mi iPhone. Puedo generar 11 tokens por
00:00:06segundo gracias a una hábil ingeniería para la que este modelo nunca fue diseñado. En este video te
00:00:11mostraré exactamente cómo hacer lo mismo. Lo que ejecuto aquí es un modelo de mezcla de expertos (MoE). Tiene
00:00:2135 mil millones de parámetros, que como un archivo normal de 4 bits ocupa unos 20 GB y tendría que estar en la RAM,
00:00:28pero mediante varias técnicas como transmitir expertos desde el SSD a demanda, los pesos que realmente
00:00:33deben permanecer en memoria se reducen a solo 1,4 GB. Explicaré cómo funciona todo esto y luego
00:00:39pasaremos a la configuración en el iPhone. La mayoría de modelos residen por completo en la RAM, pero lo genial de los modelos de mezcla
00:00:45de expertos es que solo una pequeña porción está activa al mismo tiempo. Esto significa que las partes inactivas
00:00:51del modelo pueden quedarse en el SSD esperando su momento de brillar. El truco para ejecutar modelos más grandes
00:00:56con memoria limitada es transmitir esos expertos a la memoria solo cuando se necesitan. Estamos ejecutando Qwen
00:01:023.5, la variante de 35 mil millones de parámetros, y el “A3B” al final significa que solo unos 3 mil millones de esos parámetros
00:01:10están activos para cada token. Tiene 40 capas, cada una con 256 pequeños expertos más un experto compartido. Un enrutador
00:01:19elige ocho de esos expertos por token, por lo que un solo token solo ejecuta unos 3 mil millones de los 35 mil millones
00:01:26de parámetros totales. Normalmente, el modelo completo se dividiría y estaría todo en la memoria, pero esto no
00:01:32cabría en un iPhone. En su lugar, las partes que cada token necesita —las incrustaciones, la atención, los enrutadores
00:01:39y el experto compartido— solo se cargan una vez y permanecen residentes en la RAM todo el tiempo. Eso son unos
00:01:441,4 GB. Y los expertos (40 archivos de unos 300 MB cada uno, sumando 12 gigabytes) se quedan en el SSD. Así que, para cada token,
00:01:53la atención se ejecuta en la GPU, luego el enrutador elige 8 expertos y el motor lee esos 8 directamente del SSD
00:02:00a la memoria de la GPU y los ejecuta junto con el experto compartido. Esto sucede en cada una de
00:02:06esas 40 capas, por lo que son 320 lecturas pequeñas por cada token. Si no estás familiarizado con la atención,
00:02:14es la parte del modelo que analiza todo lo dicho en la conversación hasta el momento y determina
00:02:19qué palabras anteriores importan para predecir la siguiente. La atención se ejecuta en cada token sin importar
00:02:25qué, así que debe permanecer en memoria. Los expertos son la parte que realiza el razonamiento real sobre un token una vez
00:02:31que la atención ha determinado el contexto, pero como solo se usan ocho de esos expertos, podemos dejar
00:02:36el resto en el disco. No hay caché de expertos en la aplicación; cada lectura pasa por el sistema operativo
00:02:42y iOS mantiene los expertos usados recientemente en su propia caché de páginas mientras tenga RAM libre. Los autores
00:02:49crearon su propia caché de 9,8 GB y luego la eliminaron, lo que hizo que todo fuera un 38 % más rápido porque
00:02:55en una Mac o un iPhone, cualquier RAM que la app acapare es RAM quitada tanto a la GPU como a esa caché de páginas,
00:03:03y esa caché hace la mayor parte del trabajo aquí. A 11 tokens por segundo, si cada experto viniera de la memoria flash,
00:03:09el teléfono necesitaría más de 5 gigabytes por segundo de lectura, y la memoria flash del iPhone solo alcanza unos 1,6 por
00:03:15segundo. Así que la mayoría de los expertos provienen de la RAM que el sistema gestiona por nosotros. El siguiente truco es la cuantización
00:03:22por niveles. La cuantización comprime los pesos de un modelo para que ocupen menos espacio, pero también reduce
00:03:29la precisión de esos pesos y por tanto afecta la inteligencia. Pero con este modelo, alrededor del 25 % de los
00:03:35expertos manejan cerca del 80 % del trabajo. Así que los expertos más usados se quedan en 4 bits y los menos usados se
00:03:41cuantizan a 2 bits, haciéndolos un 44 % más pequeños. El archivo completo se reduce un 34 %, de unos 19 GB a
00:03:5013 GB, lo que permite que quepa más en la caché de páginas. En mi iPhone 17, esto se ejecuta a 11 tokens por segundo con el
00:03:57modelo en modo pensamiento. Debo decir que el teléfono se calienta bastante; con solo decir “hola”, pude sentir
00:04:03cómo se calentaba en mi mano, así que intenta que no explote al probarlo. De hecho, me da un poco
00:04:08de miedo escribir algo demasiado complejo porque podría derretirse en mi mano.
00:04:14El motor en particular que ejecutamos es un proyecto llamado Flash MoE de Dan Woods. Fue escrito para
00:04:19MacBook y hay una pequeña adaptación para iOS llamada Flash iOS que envuelve ese mismo motor en una app de iPhone,
00:04:26lo que me permite ejecutar todo en mi teléfono. Al principio me encontré con un error donde el pensamiento del
00:04:31modelo se quedaba atrapado en un bucle. Empezaba bien y, tras unas 10 palabras, repetía
00:04:35los mismos dos tokens indefinidamente. Para solucionar esto, actualicé una función llamada `async pre-read weight` para que verifique
00:04:41la lectura de cada experto con su propio tamaño. Los expertos de 2 bits miden la mitad que los de 4 bits,
00:04:48por lo que antes de la corrección, cada experto de 2 bits fallaba la comprobación de tamaño y se omitía en silencio. El modelo
00:04:54ejecutaba prácticamente la mitad de los expertos, por lo que entraba en bucle. Si están disfrutando esto, amigos, nos harían
00:04:59un gran favor suscribiéndose al canal para seguir creando contenido gratuito todos los días. Ahora, para
00:05:05configurar esto en tu teléfono, debes clonar el repositorio y aplicar la corrección de lectura previa que mencioné en
00:05:11`metal infer / infer.m`. Apunta el proyecto de Xcode a tu equipo e ID de paquete. Necesitarás una cuenta de desarrollo
00:05:18de Apple de pago para esto. Compila la versión final e instálala en tu iPhone. Descarga el modelo
00:05:24cuantizado empaquetado (unos 13 GB) y pásalo a la app por USB, lo cual tardará unos siete minutos.
00:05:30En el teléfono, abre la app Flash MoE, toca el modelo y empieza a chatear. Y si quieres probar la ejecución
00:05:36de modelos locales en tu Mac para lograr una velocidad de tokens por segundo aún mayor, mira el siguiente video. Soy Warren de
00:05:43Better Stack. Muchas gracias por ver el video y, por supuesto, ¡nos vemos en el próximo!

핵심 요약

La ejecución de modelos de 35B parámetros a 11 tokens por segundo en un iPhone requiere solo 1,4 GB de RAM residente al transmitir dinámicamente expertos cuantizados desde el SSD mediante Flash MoE.

하이라이트

  • Qwen 3.5 A3B ejecuta un modelo de 35 mil millones de parámetros cargando solo 1,4 GB en la RAM del iPhone y manteniendo 12 GB de expertos en el SSD.

  • El enrutador del modelo selecciona solo 8 de los 256 expertos por capa para cada token, realizando 320 lecturas de disco por token generado.

  • Eliminar la caché personalizada de 9,8 GB incrementó la velocidad de procesamiento en un 38 % al permitir que iOS gestione la RAM a través de la caché de páginas del sistema.

  • La cuantización por niveles reduce los expertos menos usados a 2 bits y los más frecuentes a 4 bits, achicando el archivo total un 34 %.

  • Un error en la función `async pre-read weight` omitía los expertos de 2 bits por falla de verificación de tamaño, provocando bucles infinitos de tokens.

타임라인

Arquitectura MoE y gestión de memoria en dispositivos móviles

  • Un modelo MoE de 35B ocupa normalmente 20 GB de memoria en 4 bits.
  • Las partes estáticas del modelo ocupan únicamente 1,4 GB de RAM.
  • El enrutador activa 3 mil millones de parámetros de forma simultánea por token.

La mayoría de los modelos de lenguaje requieren cargar la totalidad de sus pesos en la memoria RAM, superando el límite de hardware de los teléfonos móviles. La arquitectura Qwen 3.5 A3B resuelve esta restricción estructurando 40 capas con 256 expertos cada una, acompañadas por un experto compartido. Solo el componente de atención, la incrustación y los enrutadores residen permanentemente en la memoria.

Transmisión de expertos desde el SSD y caché del sistema

  • Cada token requiere 320 lecturas individuales al almacenamiento flash.
  • La memoria flash del iPhone lee a un máximo de 1,6 GB por segundo.
  • El uso de la caché de páginas de iOS eleva el rendimiento un 38 %.

La atención examina el contexto previo de la conversación sobre la GPU y determina las palabras clave para predecir el siguiente token. Los expertos procesan el razonamiento sobre dicho token directamente desde el almacenamiento. Eliminar una caché de aplicación dedicada de 9,8 GB libera RAM para el sistema operativo, permitiendo que iOS retenga los expertos consultados recientemente y supere los límites físicos del SSD.

Cuantización por niveles y resolución del bucle de ejecución

  • El 25 % de los expertos realiza cerca del 80 % del trabajo de inferencia.
  • La cuantización mixta reduce el archivo final del modelo de 19 GB a 13 GB.
  • La corrección en `async pre-read weight` evita la omisión de los expertos de 2 bits.

Comprimir a 2 bits los expertos secundarios reduce su tamaño un 44 % afectando mínimamente la inteligencia general. Durante las pruebas en Flash iOS, los expertos de 2 bits fallaban las validaciones de tamaño por un error de código, lo que causaba que el modelo ignorara la mitad de los datos y repitiera tokens en bucle. La corrección del archivo `metal infer / infer.m` permite compilar la aplicación en Xcode e instalar los 13 GB de datos vía USB.

커뮤니티 글

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

이 영상에 대해 글쓰기