El AI

M1 Max ejecuta 64 Token / s: algunos usuarios implementaron Ling-3.0-tiny en Mac Studio hace cuatro años, superando las expectativas

Recientemente, a menudo se puede ver que algunas personas utilizan NVIDIA DGX Spark para desplegar modelos grandes de 10 mil millones y 100 mil millones, lo que ha visto a muchas personas cosquillear. No, no [...]

Catálogo de artículos

Recientemente, a menudo se puede ver que algunas personas utilizan NVIDIA DGX Spark para desplegar modelos grandes de 10 mil millones y 100 mil millones, lo que ha visto a muchas personas coscar.

Sin embargo, DGX Spark tiene un rendimiento fuerte y el precio no es amigable para la gente. Para la mayoría de los desarrolladores, lo que realmente puede ser difícil es la computadora que ha estado en servicio durante varios años.

Recientemente, un usuario compartió un conjunto de Mac Studio de primera generación 2022 (M1 Max / 32GB) Desarrollo superior Ling - 3.0 - minúsculo INT4 El programa completo.

Originalmente, el internauta pensaba que era difícil para esta máquina asumir la tarea de razonamiento de modelos grandes de hoy.

Pero los resultados de las pruebas reales fueron algo inesperados.

El modelo no solo admite chat, razonamiento (Modo de pensamiento) y llamada a herramientas, sino que también puede mantenerse aproximadamente en Apple Silicon. 64 Token / s La velocidad de generación estable de es bastante fluida para escenarios como chat local, asistencia de código, traducción y agente personal.

Más importante aún, no es un "modelo pequeño 1B " en el sentido tradicional.


¿Por qué Ling-3.0-tiny vale la pena prestar atención?

La escala de parámetros totales de Ling - 3.0 - tiny es de aproximadamente 7.9B。

Sin embargo, utiliza Arquitectura de expertos escasos MoE (Mixura de Expertos)。

En pocas palabras:

  • El modelo cuenta con unos 128 expertos.
  • Cada token activa solo 8 de estos expertos
  • Trabajar con expertos compartidos para participar en el cálculo
  • En realidad, sólo hay aproximadamente 1.3B Parámetros

Este diseño tiene en cuenta la capacidad del modelo con el costo de razonamiento, y también le permite obtener una buena velocidad de razonamiento en Apple Silicon.


Prueba de entorno

La configuración del dispositivo utilizado por este internauta es la siguiente:

  • Apple Mac Studio (2022) (en inglés)
  • Apple M1 Max
  • GPU de 24 núcleos
  • 32GB de memoria unificada
  • macOS 15.7.4
  • Armado 64

Aunque Ling-3.0-tiny admite contextos más largos, para equilibrar el uso de memoria con la estabilidad, el Context se estableció en esta prueba. 8k。

Esto es suficiente para chat, complementación de código y aplicaciones de agente diarias, al tiempo que evita que KV Cache consuma una gran cantidad de memoria unificada.

Toda la arquitectura de despliegue es la siguiente:

Ling-3.0-tiny INT4
        │
支持 Ling 的 Ollama 实验分支
        │
      MLX Runner
        │
 Metal / Apple Silicon GPU
        │
 Ollama API(11434)

La razón por la que la versión estable de Ollama no se utiliza directamente es porque el soporte actual de Ling con Bailing MoE V3 todavía depende de la rama experimental de Ollama.

Los marcos de razonamiento como vLLM y SGLang son más adecuados para el entorno CUDA de NVIDIA, que no son la mejor opción en Apple Silicon.


Planificar el espacio en disco antes de implementarlo

Lo más fácil de subestimar en todo el proceso de implementación no es el modelo en sí, sino la ocupación de disco.

La ocupación final del directorio es aproximadamente la siguiente:

Contenido Tamaño
Hugging Face INT4 Peso original Aproximadamente 5,4 GB
Modelo de importación de Ollama Aproximadamente 5,8 GB
Fuente de Ollama, MLX y resultados compilados Aproximadamente 1.3 GB
Cache y configuración Decenas de MB

Todo el proyecto finalmente 13GB。

Considere descargar archivos temporales, caché de compilación y macOS Swap, y se recomienda reservar al menos 20GB Espacio disponible, se recomienda más preparar 30 GB por encima.


Un pozo fácil de ignorar: Git

La mayor experiencia de pisar el pozo compartida por este internauta no es el modelo, sino Git.

Debido a que todo el proceso de implementación se lleva a cabo en el directorio del proyecto Codex, el proyecto tiene las instantáneas de versión habilitadas de forma predeterminada.

Después de que se completó la descarga del modelo, Git guardó una copia de todo el directorio del modelo.

El resultado es que un modelo de aproximadamente 5 GB se expandió rápidamente a una docena de GB, y el espacio en el disco del sistema se redujo rápidamente.

La verificación final encontró que no había un catálogo de modelo agregado por adelantado. .gitignore。

Se recomienda agregar con anticipación:

.cache/
models/
ollama-models/
ollama-ling/

Después de volver a limpiar los objetos Git, todo .git Sólo queda un catálogo 132KB。

Si está listo para implementar un modelo grande, es mejor que este paso se realice con anticipación.


Descargar Ling - 3.0 - tiny INT4

El peso Hugging Face INT4 ya está disponible oficialmente.

Todo el almacén contiene:

  • 44 Documentos
  • 32 segmentos de peso de safetensores

Durante el proceso de descarga, este internauta se encontró principalmente con dos problemas:

En primer lugar, la velocidad de descarga de Xet se estancó durante mucho tiempo.

Más tarde, cerró Xet y cambió a descargas HTTP normales.

En segundo lugar, hay un tiempo de espera frecuente durante el proceso de descarga.

Debido a que la CLI de Hugging Face admite la retransmisión de puntos de interrupción, solo necesita aumentar adecuadamente el tiempo de espera para continuar la descarga.

Después de la descarga, no se considera directamente que el modelo está completo.

En lugar de eso, se realizan tres comprobaciones:

  • Compruebe que todos los 32 fragmentos de peso están presentes
  • Comprobar que el índice del modelo está completo de referencia
  • Calcular SHA - 256 para toda la pieza

Resultados finales:

  • Excepción de archivo: 0
  • Excepción hash: 0
  • Falta de segmentos: 0

Para los modelos de varios gigabytes, se recomienda completar al menos la verificación de número de fragmentos o hash, en lugar de juzgar la integridad del modelo solo por el indicador de finalización de descarga.


Compilación de soporte para Ollama de Ling

En la actualidad, la versión estable oficial de Ollama no puede ejecutar Ling directamente, por lo que debe cambiar las ramas experimentales para compilarlas por sí mismas.

En todo el proceso, lo que realmente atrapó a este internauta es Toolchain de metal。

La máquina ya está instalada:

  • XCode
  • Herramientas de línea de comando

Pero la compilación MLX todavía reportó errores.

Más tarde, se descubrió que Metal Toolchain necesitaba ser instalado por separado.

Aún más problemático, incluso si se completa la instalación, es posible que el sistema no pueda encontrar el compilador de metal.

Después de ver finalmente el identificador de cadena de herramientas, debe configurarlo manualmente:

export TOOLCHAINS=...

Cabe señalar que este valor varía según las versiones de macOS y Xcode, y no se recomienda copiar directamente la configuración de otras personas.

Una vez que se completa la compilación, se genera:

  • Programa principal de Ollama
  • El MLX Runner
  • Núcleo de metal
  • Biblioteca dinámica

Requiere especial atención, no sólo retener ollama archivos ejecutables.

El modelo realmente se ejecuta y también se basa en el runner y la biblioteca dinámica en el directorio build.


Importar el modelo INT4

Para evitar mezclarse con la versión estable de Ollama en el sistema, el internauta ha mantenido el catálogo de modelos por separado dentro del proyecto.

Una vez que se completa la importación, Ollama salidas:

26947 tensors
479 layers
preserving source quantization

Los pesos int4 se mantienen en el formato de cuantificación original y no necesitan ser convertidos de nuevo.

El nombre del modelo final es:

ling-tiny-int4:latest

¿Cómo puedo comprobar que la GPU está realmente funcionando?

Esto es muy importante.

ya que el modelo puede revertirse silenciosamente a la CPU.

Una vez completada la implementación, puede ver la confirmación de registro para ver si aparece información similar:

library=Metal
Apple M1 Max
MLX engine initialized device=gpu

Sólo ver estos registros puede confirmar que todo el proceso de inferencia se ejecuta realmente en la GPU de Apple.


Velocidad máxima medida M1

Con el fin de evitar que el retraso del primer token afecte los resultados, el internauta primero calentó el modelo.

Tres rondas consecutivas de pruebas de generación completa se llevaron a cabo.

Las condiciones de prueba son uniformes de las siguientes:

  • Contextos: 8192
  • Temperatura: 0
  • Piensa en: Cerrar
  • Longitud de salida: 384 Tokens

Los resultados finales fueron los siguientes:

Prueba Token / s
Primera ronda 64.26
La segunda ronda 65.18
Tercera ronda 63.67

Promedio final:

64.37 Token / s

Tiempo aproximado de carga del modelo por primera vez:

6.93 El segundo

Después de que el modelo reside, ocupa un almacenamiento unificado:

6.48GB

Para un M1 Max que ha sido lanzado durante varios años, este rendimiento ya es bastante bueno.


¿Cómo fue la experiencia real?

Después de la implementación, el usuario conectó el modelo a la herramienta de traducción de capturas de pantalla comúnmente utilizada en Mac. El Bob。

Debido a que Bob puede llamar directamente a la API de Ollama, no hay necesidad de configurar adicionalmente la interfaz de la nube.

A juzgar por la experiencia real, la velocidad de respuesta de la traducción local es muy rápida.

Especialmente en la escena de traducción de captura de pantalla, los resultados se pueden devolver casi después de un clic.

Aunque la calidad de la traducción tiene sus propios aspectos, el modelo local tiene dos ventajas claras sobre los servicios de traducción en línea:

Primero, la velocidad de respuesta es más rápida.

En segundo lugar, todos los datos se mantienen localmente, lo que es más adecuado para tratar con contenido privado.

Además, también se desempeña bien en las siguientes escenas:

  • Habla cotidiana
  • Documento Resumen
  • Traducción AI
  • Asistencia de código
  • Base de conocimiento local
  • Agente personal

La experiencia general ha sido capaz de satisfacer las necesidades de uso diario.


Escrita al final

A partir de todo el proceso de despliegue, la mayor ganancia de este internauta no es "Mac puede ejecutar un modelo grande".

Más bien, el ecosistema de IA local de Apple Silicon está madurando.

Con el desarrollo de MLX, Metal, MoE y esquemas de cuantificación más eficientes, un M1 Max de hace unos años también ha sido capaz de proporcionar una buena experiencia de razonamiento local.

Por supuesto, todavía no puede reemplazar las GPU NVIDIA de gama alta, ni es adecuado para entornos de producción de alta concurrencia.

Pero para los desarrolladores individuales, ya es suficiente para:

  • El chat local
  • Traducción AI
  • Asistente de programación
  • Banco de conocimiento privado
  • Agente personal
  • Privacidad Procesamiento de texto

Si tiene un presupuesto limitado y desea experimentar un modelo local realmente grande, entonces Ling - 3.0 - INT4 minúsculo + Apple Silicon + MLX + OllamaEs una combinación que vale la pena probar.

Al menos, demuestra que Mac Studio, lanzado hace unos años, todavía tiene buenas capacidades de razonamiento de IA nativa.