VRAM para Qwen3.6 local: medir cuantizaciones 27B y 35B-A3B

Separa pesos teóricos, tamaño GGUF y VRAM medida de Qwen3.6-27B y 35B-A3B, con pruebas reproducibles de cuantización, contexto, GPU y backend.

Las dos versiones abiertas comunes de Qwen3.6 para implementación local son Qwen3.6-27B y Qwen3.6-35B-A3B. El primero es un modelo denso de 27 mil millones y el segundo es un modelo MoE con aproximadamente 35 mil millones de parámetros totales y cada token activa alrededor de 3 mil millones de parámetros.

MoE tiene menos parámetros de activación, lo que generalmente puede reducir la cantidad de cálculo por token, pero no reducirá el peso que debe cargarse a 3B. Al elegir una tarjeta gráfica, primero debe observar el peso total y el archivo de cuantificación, y luego calcular el caché KV y el margen de ejecución.

No mezclar tres cifras de memoria distintas

  • Volumen de peso teórico: calculado utilizando la cantidad de parámetros y el ancho de la broca, utilizado solo para el cribado preliminar;
  • Tamaño de archivo GGUF: el tamaño del archivo de conversión específico en el disco, incluidos los metadatos cuantitativos;
  • Memoria de tiempo de ejecución: la suma de pesos, caché KV, búfer de cálculo, proyección multimodal y sobrecarga de backend.

Escribir “El cuarto trimestre requiere 18 GB de memoria de video” en línea sin explicar el archivo del modelo, el contexto y el backend no puede considerarse como una conclusión a partir de mediciones reales.

Estimación teórica de los pesos

Fórmula:

1
权重 GiB ≈ 参数量 × 位宽 ÷ 8 ÷ 1024³
Modelo Peso desnudo de 4 bits Peso desnudo de 5 bits Peso desnudo de 8 bits BF16 peso desnudo
27B ~12,6 GiB ~15,7 GiB ~25,1 GiB ~50,3 GiB
35B-A3B Aproximadamente 16,3 GiB Aproximadamente 20,4 GiB Aproximadamente 32,6 GiB Aproximadamente 65,2 GiB

El GGUF real suele ser mayor que la estimación de peso desnudo correspondiente. El ancho de bits promedio efectivo varía entre los planes del cuarto y quinto trimestre, por lo que la tabla no es un indicador del tamaño de archivo real de la página de descarga.

Selección inicial según la VRAM disponible

El siguiente es el punto de partida de la implementación, no un valor garantizado. El valor predeterminado es concurrencia única, aproximadamente en contexto 4K y permite la descarga de CPU necesaria:

Memoria de vídeo disponible 27B 35B-A3B
12GB Cuantización baja + descarga obvia de CPU No recomendado como solución diaria
16GB El cuarto trimestre puede intentar una descarga parcial Baja cuantificación + descarga de CPU
24 GB El cuarto y quinto trimestre son más realistas El cuarto trimestre es más realista, pero aún se necesita espacio en caché
32GB Se puede probar Q5/Q6 Q4/Q5 es más cómodo
48 GB+ Alta cuantificación o contexto más largo La alta cuantificación y el contexto prolongado son más realistas

Si carga la visión mmproj al mismo tiempo, aumenta el contexto a cientos de miles de tokens o aumenta la concurrencia, los requisitos de memoria aumentarán significativamente. No trate el contexto máximo de la tarjeta modelo como el valor de inicio predeterminado.

Registre el nombre completo del archivo cuando se selecciona GGUF

Documento al menos:

1
2
3
4
5
6
基础模型:Qwen/Qwen3.6-27B 或 Qwen/Qwen3.6-35B-A3B
转换仓库与 commit:
GGUF 文件名:
量化:Q4_K_M / Q5_K_M / 其他
SHA256:
llama.cpp 版本:

Los GGUF de terceros deben ser rastreables hasta los pesos base oficiales y describir las herramientas y licencias de conversión. Sólo los nombres de los almacenes son similares, lo que no puede probar que los documentos provengan de una fuente oficial.

Pasos de medición reales de llama.cpp

Comenzando con contexto 4K, simultaneidad única:

1
2
3
4
5
6
7
.\llama-server.exe `
  -m .\qwen-model-q4_k_m.gguf `
  -ngl 999 `
  -c 4096 `
  -np 1 `
  --host 127.0.0.1 `
  --port 8080

Abrir otro registro de terminal:

El registro de inicio

1
nvidia-smi --query-gpu=name,memory.total,memory.used,driver_version --format=csv

también almacena el búfer del modelo, la caché KV, el número de capa de descarga y la información del backend. Luego ejecute la misma palabra de aviso en contexto 4K y 8K respectivamente, y registre la memoria máxima, el retraso del primer token y los tokens generados.

Cómo medir Ollama

La etiqueta específica de

1
ollama run qwen3.6:27b

está sujeta a la página actual de la biblioteca de modelos de Ollama. Ejecutar después de ejecutar:

PROCESSOR de

1
2
ollama ps
nvidia-smi

ollama ps muestra la asignación de CPU/GPU. Si la etiqueta del modelo no especifica el tipo de cuantificación, los resultados no se pueden comparar directamente con Q4_K_M de un GGUF.

Diferencias de implementación entre modelos densos y MoE

Cada capa del modelo denso 27B participa en el cálculo y la estructura es relativamente sencilla; 35B-A3B se dirigirá a algunos expertos según el token. Al implementar MoE, además de la capacidad de peso, también debe prestar atención a si el backend implementa correctamente el enrutamiento experto.

Las posibles diferencias incluyen:

  • Bajo el mismo volumen de peso, la cantidad de cálculo de cada token es diferente;
  • MoE es más sensible al acceso a la memoria y a la programación experta;
  • Diferentes backends tienen diferentes estrategias de asignación de GPU/CPU para expertos;
  • Algunas versiones antiguas del backend pueden leer la configuración, pero no pueden generarla correctamente;
  • La transferencia experta entre dispositivos puede convertirse en un cuello de botella cuando se asignan varias tarjetas.

Por lo tanto, el 35B-A3B no se puede comparar sólo con el modelo 3B en cuanto a velocidad, ni tampoco se puede comparar sólo con el modelo denso 35B en cuanto a memoria de vídeo.

Calcular disco y RAM antes de descargar

Una instalación local necesita caché, archivos GGUF y mapeo de memoria. Probar varias cuantizaciones puede agotar primero el disco.

Windows puede comprobar:

La memoria del sistema

1
2
3
4
5
Get-PSDrive -PSProvider FileSystem |
  Select-Object Name, Used, Free

Get-CimInstance Win32_ComputerSystem |
  Select-Object TotalPhysicalMemory

no solo debe ser igual a los pesos no descargados. Si la pieza del modelo se coloca en la CPU, también se debe reservar espacio para el sistema operativo, el caché de archivos, el caché KV y el búfer de back-end. Una vez que el sistema comience a cambiar de página con frecuencia, la velocidad de generación disminuirá significativamente.

Crear configuraciones de inicio independientes para dos modelos

No modifiques el mismo comando largo repetidamente. La creación de scripts separados puede evitar el uso indebido del contexto o de los archivos 35B al probar 27B.

27B Comando de inicio

1
2
3
4
5
6
7
.\llama-server.exe `
  -m .\qwen3.6-27b-q4_k_m.gguf `
  -ngl 999 `
  -c 4096 `
  -np 1 `
  --host 127.0.0.1 `
  --port 8081

35B-A3B comando de inicio

Una vez separados los puertos

1
2
3
4
5
6
7
.\llama-server.exe `
  -m .\qwen3.6-35b-a3b-q4_k_m.gguf `
  -ngl 999 `
  -c 4096 `
  -np 1 `
  --host 127.0.0.1 `
  --port 8082

, se pueden iniciar y comparar uno por uno; No ejecute dos servicios al mismo tiempo cuando la memoria de video sea insuficiente.

Verificar la plantilla de chat y pensar en el resultado

Las diferentes versiones de Qwen pueden tener diferentes plantillas de chat, modos de pensamiento o tokens especiales. Cuando se produzcan los siguientes fenómenos, primero verifique la tarjeta del modelo y el soporte de backend:

  • Imprima e imprima etiquetas de caracteres como system, user tal como están;
  • Las respuestas se repiten;
  • El límite entre el contenido del pensamiento y la respuesta final es anormal;
  • Mezcle etiquetas adicionales antes de la salida JSON;
  • El parámetro de llamada de herramienta no es JSON válido.

No “arregles” eliminando fichas especiales aleatorias. Los errores de plantilla pueden generar resultados completamente diferentes entre las pruebas comparativas y las aplicaciones del mundo real.

Conectividad API y verificación de identidad del modelo

Después de iniciar ambos servicios, consulte la lista de modelos por separado:

1
2
curl.exe http://127.0.0.1:8081/v1/models
curl.exe http://127.0.0.1:8082/v1/models

vuelve a utilizar la misma solicitud para comparar:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
$payload = @{
  model = 'local-qwen'
  messages = @(
    @{ role = 'user'; content = '用 JSON 返回三个 Linux 日志排查步骤。' }
  )
  temperature = 0
} | ConvertTo-Json -Depth 5

Invoke-RestMethod `
  -Uri 'http://127.0.0.1:8081/v1/chat/completions' `
  -Method Post `
  -ContentType 'application/json' `
  -Body $payload

Cambie el puerto a 8082 y repita la prueba. Verifique el archivo del modelo real en el registro de servicio para evitar que el campo model pasado por el cliente enmascare el archivo cargado por el backend.

La caché de KV debe medirse por separado

La secuencia de medición puede ser:

  1. El servicio acaba de iniciarse y no ha sido solicitado;
  2. Ingrese el token de 1K;
  3. Ingrese el token 4K;
  4. Ingrese el token de 8K;
  5. Mantenga 8K y agregue una segunda solicitud simultánea.

Registre el pico de memoria y el tiempo de respuesta en cada paso. Si solo graba la memoria de video después del inicio, perderá el contexto largo y el caché simultáneo.

El texto de prueba debe provenir de un archivo fijo local para evitar números de token diferentes cada vez. Primero puede utilizar las estadísticas del tokenizador del cliente o verificar el token de entrada real en el campo API usage.

La implementación de varias tarjetas primero confirma el resultado de la asignación

Dos tarjetas gráficas de 24 GB no necesariamente dan como resultado automáticamente los 48 GB de espacio ideales. Se pueden dividir diferentes backends por capa, tensor o experto, y una tarjeta también puede albergar capas de salida y cachés adicionales.

Observa cada carta:

1
nvidia-smi --query-gpu=index,name,memory.total,memory.used,utilization.gpu --format=csv -l 1

Si una tarjeta está cerca de OOM y la otra tarjeta todavía tiene mucho tiempo de inactividad, debe verificar la división del tensor y los parámetros de selección de dispositivo del llama.cpp actual. Los parámetros cambiarán con la versión. Antes de su uso, consulte el resultado de ayuda de la versión correspondiente:

1
.\llama-server.exe --help

No copie los parámetros de varias tarjetas de la versión anterior y utilícelos directamente para producción.

La entrada visual requiere tres coincidencias

La implementación multimodal debe cumplir ambos:

  • El modelo Qwen admite de forma nativa la entrada visual;
  • mmproj coincide con el modelo base específico;
  • La compilación actual de llama.cpp admite esta arquitectura multimodal.

Los archivos de proyección visual no se pueden mezclar entre 27B y 35B-A3B. Al realizar la prueba, primero utilice una imagen pequeña y una pregunta clara, y luego verifique si el registro realmente carga el codificador visual. El simple hecho de recibir una respuesta por mensaje de texto no significa que la imagen haya sido procesada.

También realice un seguimiento del tamaño y la cantidad de imágenes, ya que los tokens visuales también amplían el contexto y el caché.

Establece tu propia línea base de tareas

Se recomienda incluir al menos cinco tipos de tareas:

Categorías Ejemplos Métodos de puntuación
Preguntas y respuestas en chino Preguntas de conocimiento interno con respuestas estándar Verdadero/Falso
Modificación de código Arreglar una prueba ejecutable Si pasa la prueba
Resumen largo Documentos fijos de 4K a 8K Si faltan hechos clave
Salida estructurada Esquema JSON fijo Analizabilidad y precisión de campo
Llamada de herramienta Llamada de función de dos pasos ¿Son correctos los parámetros y el orden?

Cada tarea se ejecuta al menos tres veces con temperatura, semilla y longitud máxima de salida fijas. Las fluctuaciones, la velocidad y la precisión del MoE y del modelo denso deben registrarse juntas.

La velocidad debe dividirse en dos indicadores.

  • Procesamiento rápido: la velocidad de lectura de la entrada, el texto largo y RAG le prestan más atención;
  • Generación de token: La velocidad de generación de respuestas, la experiencia de chat le presta más atención.Publicar solo uno o más tokens puede resultar confuso. Si 35B-A3B se genera rápidamente pero es lento para procesar entradas largas, es posible que no sea adecuado para su flujo de trabajo de documentos.

El primer retraso del token también debe enumerarse por separado. Los usuarios suelen ser más sensibles al tiempo que esperan la primera palabra que al rendimiento final.

Decidir si conviene una cuantización superior

Antes de pasar de Q4_K_M a Q5_K_M, responda:

  • si se ha reducido significativamente la tasa de error de las tareas críticas;
  • Si la producción estructurada es más estable;
  • Si la memoria de vídeo todavía deja espacio para la caché KV;
  • ¿Es aceptable la desaceleración en la velocidad de generación?
  • Si se debe cambiar de GPU completa a descarga parcial de CPU.

Si la actualización de la cuantificación genera una gran cantidad de descarga, es posible que una pequeña mejora en la calidad no valga la pena por la pérdida de velocidad.

Preguntas frecuentes

Por qué el 35B-A3B es más grande pero potencialmente más rápido que el 27B

Requiere almacenar más pesos totales, pero cada ficha sólo activa a algunos expertos. Las velocidades reales dependen del enrutamiento experto, el ancho de banda de la memoria y las optimizaciones del backend y no se pueden extrapolar únicamente a partir de los parámetros de activación.

¿Qué tarjeta gráfica de 24 GB debo elegir?

Pruebe primero 27B Q4/Q5, luego pruebe 35B-A3B Q4. Se corrigió el contexto y la tarea, se comparó la residencia completa de la GPU, la velocidad y la precisión, no se consideró directamente MoE como una ganancia segura.

¿Por qué cambiar a una cuantificación más baja todavía causa OOM?

Podría ser que no haya cambios de contexto, concurrencia, proyección visual u otra ocupación del programa. Mire el registro de arranque y nvidia-smi, no se limite a comparar el tamaño del archivo GGUF.

¿Es posible utilizar directamente el contexto máximo de la tarjeta modelo?

El soporte teórico no significa que la configuración nativa pueda soportarlo. Comience primero con 4K/8K, aumente y registre el caché KV según las necesidades reales.

Secuencia de recuperación después de OOM

  1. Desactive la concurrencia y mantenga -np 1;
  2. Reducir el contexto de 8192 a 4096 o 2048;
  3. Cambie a una cuantificación más pequeña;
  4. Reduzca la descarga de GPU y utilice la memoria del sistema para asumir parte del peso;
  5. Detener otros procesos que ocupan la memoria de video;
  6. Reinicie el servicio y confirme que la configuración surta efecto desde el registro de inicio.

La descarga de la CPU convierte “se ejecuta” en “se ejecuta lentamente”, por lo que la velocidad debe registrarse al mismo tiempo.

27B o 35B-A3B

  • Requiere una implementación simple y una compatibilidad de back-end estable: la comparación de prioridad es 27B;
  • Centrarse en la eficiencia de inferencia de MoE: medido 35B-A3B en el mismo hardware;
  • Sólo 12 GB de memoria de vídeo: dé prioridad a los modelos más pequeños y no fuerce una gran cantidad de descarga para el modelo;
  • Haciendo multimodalidad: primero verifique la tarjeta del modelo oficial y el soporte visual del backend, y luego incluya el transparencia mmproj.

Tarjetas de modelo Qwen y referencias del backend