스크립트
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!
커뮤니티 글
아직 글이 없습니다. 이 영상에 대한 첫 번째 글을 작성해 보세요!
이 영상에 대해 글쓰기