Despliegue local de Qwen3.6-35B-A3B: GGUF, llama.cpp, VRAM y verificación de la API

Tomando como referencia los pesos oficiales de Qwen3.6-35B-A3B, explica cómo elegir la cuantización GGUF, iniciar llama.cpp, comprobar la VRAM, cargar el archivo de proyección visual y verificar la API compatible con OpenAI.

Qwen3.6-35B-A3B es el modelo MoE multimodal oficial de Qwen con pesos abiertos. 35B en el nombre es la escala total de parámetros y A3B significa que cada token activa aproximadamente 3B de parámetros. Su cantidad de cálculo puede ser menor que la de un modelo denso del mismo tamaño, pero aún tiene que adaptarse a todos los pesos expertos al cargar y no puede considerarse como una memoria de estimación de modelo pequeño 3B.

Este artículo solo analiza el modelo base oficial y su conversión GGUF. Los pesos marcados por terceros como Uncensored, Aggressive o “versión jailbreak” no son liberados oficialmente por Qwen. El editor debe probar de forma independiente los datos de entrenamiento, las modificaciones de alineación y las declaraciones de capacidad, por lo que no se utilizan como puntos de referencia de implementación. Confirme tres cosas antes de implementar

Fuente del modelo

La identificación oficial del modelo es:

1
Qwen/Qwen3.6-35B-A3B

Al descargar GGUF, también debe verificar si el almacén de conversión está claramente marcado:

  • Compromiso del modelo básico;
  • versión convertida llama.cpp;
  • Métodos cuantitativos y lista de fragmentación;
  • Si se debe proporcionar mmproj que coincida con el modelo;
  • Suma de comprobación del archivo o metadatos LFS de Hugging Face.

Solo el nombre del almacén contiene Qwen3.6, lo que no es suficiente para demostrar que coincide con el peso oficial. Memoria disponible

El tamaño del archivo GGUF está cerca del límite inferior de carga de peso y no es igual al uso final de la VRAM. La operación real también requiere espacio para caché KV, búfer de cálculo, proyección visual y tiempo de ejecución.

Para una sola tarjeta de 24 GB, la cuantización Q4 suele ser un punto de partida más razonable; 16 GB o 12 GB de VRAM a menudo requieren una cuantización más baja, carga por niveles de CPU/RAM o contextos más cortos. Esta es una estimación de ingeniería, no la conclusión de medición real de este sitio en cada tipo de tarjeta gráfica. Backend de inferencia

Registre la versión primero para evitar que “el mismo comando se comporte de manera inconsistente en diferentes versiones” pero no se pueda ubicar:

1
2
.\llama-server.exe --version
nvidia-smi

Las líneas base que deben guardarse incluyen la confirmación de llama.cpp, el modelo y controlador de GPU, la memoria del sistema, el nombre del archivo GGUF, la longitud del contexto y el tipo de caché KV. Cómo elegir la cuantización

Gol Pruebe primero Costo principal
Verifique si se puede cargar primero IQ2 / IQ3 Se reduce la calidad del resultado y la estabilidad de las tareas largas
Compensación entre calidad y capacidad Q4_K_M o cuantización dinámica equivalente Requiere más VRAM o descarga parcial de la CPU
Más énfasis en la calidad Q5/Q6 Los archivos, la VRAM y los tiempos de carga siguen aumentando
Precisión de comparación Q8 / FP8 / BF16 Generalmente más allá del rango de comodidad de las tarjetas individuales ordinarias

A3B reduce principalmente la carga computacional de cada token y no comprimirá el peso total de 35B en 3B. La elección de la cuantización debe basarse en el tamaño total del archivo y los informes de tiempo de ejecución. Iniciar llama-server en Windows

Comience con modo texto, contexto breve y escucha nativa únicamente. El carácter de continuación de línea de PowerShell es un acento grave, no el ^ de CMD:

Función del parámetro

1
2
3
4
5
6
7
8
.\llama-server.exe `
  -m "D:\models\Qwen3.6-35B-A3B-Q4_K_M.gguf" `
  --host 127.0.0.1 `
  --port 8080 `
  -c 8192 `
  -n 2048 `
  -ngl 999 `
  --jinja

:

  • -m: Modelo principal GGUF; El modelo de fragmento debe apuntar al primer fragmento.
  • -c 8192: utilice primero la verificación de contexto de 8K para evitar llevar inicialmente la caché KV a 128K.
  • -ngl 999: Solicitud para poner tanto como sea posible en la GPU; Si todos los datos eventualmente se colocarán en la GPU depende del registro.
  • --jinja: Utilice plantillas de chat modelo para evitar empalmar mensajes directamente.
  • --host 127.0.0.1: Acepte solo acceso local para evitar que servicios no autenticados queden expuestos a la red.

Si el inicio falla, primero baje -ngl para confirmar si no hay suficiente VRAM; Si aún falla, verifique el archivo del modelo, el backend y el controlador en lugar de continuar reduciendo la cuantización y realizar una prueba ciega. Determinar si fue exitoso a partir del registro de inicio

Mantenga la salida del terminal de inicio y verifique tres tipos de información:

  1. Si los metadatos y la arquitectura del modelo se reconocen como Qwen3.6 MoE;
  2. Cuántas capas o tensores entran en la GPU;
  3. Si la ocupación del búfer de cálculo y la caché de KV está dentro de las expectativas.

Si el proceso sale directamente y falla la asignación de memoria, primero reduzca -c o la descarga de GPU. Solo cuando el contexto pequeño no se puede cargar significa que el peso en sí ha excedido la capacidad de la combinación actual. Verificar API local

Una vez iniciado el servicio, primero verifique el estado de salud:

1
Invoke-RestMethod http://127.0.0.1:8080/health

Verifique nuevamente el punto final del modelo:

1
2
Invoke-RestMethod http://127.0.0.1:8080/v1/models |
  ConvertTo-Json -Depth 6

finalmente emitió la solicitud de chat mínima:

Los criterios de aceptación para

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
$body = @{
  model = "Qwen3.6-35B-A3B"
  messages = @(
    @{ role = "user"; content = "只回复 READY" }
  )
  temperature = 0
  max_tokens = 16
} | ConvertTo-Json -Depth 6

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

no son que READY deba devolverse palabra por palabra, sino que la solicitud HTTP sea exitosa, que haya un mensaje de asistente en la estructura de devolución, que no haya una plantilla en el terminal o que haya un error de análisis. Cargar archivo de proyección visual

Después de confirmar que la solicitud de texto es normal, agregue mmproj que coincida con el mismo modelo:

Cuando el modelo principal

1
2
3
4
5
6
7
8
.\llama-server.exe `
  -m "D:\models\Qwen3.6-35B-A3B-Q4_K_M.gguf" `
  --mmproj "D:\models\mmproj-Qwen3.6-35B-A3B.gguf" `
  --host 127.0.0.1 `
  --port 8080 `
  -c 8192 `
  -ngl 999 `
  --jinja

y mmproj no coinciden, los resultados comunes son que se informan errores de dimensiones al inicio, la solicitud de imagen falla o el modelo ignora la imagen por completo. Las funciones visuales deben aceptarse por separado. No asuma que la multimodalidad ha entrado en vigor sólo porque el chat de texto es normal. Cómo grabar memoria y velocidad de video

Durante la inferencia, abra otra terminal y observe una vez por segundo:

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

registra al menos dos conjuntos de datos:

  • Memoria de vídeo cuando el modelo acaba de cargarse y aún no ha sido solicitado;
  • Memoria y velocidad máximas al generar mensajes fijos y longitudes de salida fijas.

Un registro comparable debería escribirse como:

1
2
3
4
5
6
7
8
9
GPU:具体型号与显存
后端:llama.cpp commit
模型:完整 GGUF 文件名
上下文:8192
KV cache:默认或具体量化
GPU offload:日志中的实际结果
提示词:固定测试文本
输出:固定上限
结果:加载显存、峰值显存、prompt tok/s、generation tok/s

Sin estas condiciones, no se puede reproducir simplemente escribiendo “se pueden ejecutar 24 GB” o “muy rápido”. Fallos comunes y recuperación

El inicio es OOM

Reduzca el contexto, la simultaneidad y la descarga de GPU en ese orden; cierre otros programas con uso intensivo de GPU. Si aún falla, cambie a una cuantización más pequeña o permita que entren más pesos en la memoria del sistema. Salida duplicada y roles confusos

Asegúrese de utilizar la última versión de llama.cpp, conserve --jinja y verifique que GGUF contenga la plantilla de chat correcta. No duplique plantillas en el cliente y el servidor al mismo tiempo. 404 después de conectarse al cliente

llama-server proporciona una interfaz de finalización de chat compatible con OpenAI. Si el cliente solo admite la API de Respuestas, no solo puede modificar base_url; Se requiere una capa de conversión de protocolo. Este problema no tiene nada que ver con si el modelo se cargó correctamente. Salir y retroceder

Presione Ctrl+C en la terminal de servicio para detener el proceso. No se registre como un servicio de inicio en las primeras etapas de implementación; Primero guarde un comando de referencia que pueda iniciarse de manera estable y luego agregue contexto, visión y acceso remoto uno por uno. Límite de seguridad

  • De forma predeterminada, solo se monitorea 127.0.0.1.
  • No exponga puertos de inferencia no autenticados directamente a la red pública.
  • El agente utiliza privilegios mínimos y confirmación manual al acceder a archivos, shells o navegadores.
  • El ajuste de ponderaciones por parte de terceros requiere una verificación separada de fuentes, licencias, datos y diferencias de comportamiento.

- La ejecución local solo aborda parte de la ruta de transferencia de datos y no garantiza automáticamente una salida correcta ni la seguridad del sistema. Conclusión

La implementación local de Qwen3.6-35B-A3B debe comenzar con la identidad del modelo oficial, el servicio de texto de contexto breve y la verificación de API, y luego agregar gradualmente la descarga de GPU, la proyección visual y el acceso del agente. MoE puede reducir la cantidad de cálculo, pero el peso total, el caché KV y la sobrecarga del tiempo de ejecución aún determinan si la máquina puede funcionar de manera estable. Referencias