Optimización de Qwen3.5-9B en RTX 3070 Mobile con ik_llama.cpp: Ajustes de Configuración y Puntos de Referencia

✍️ OpenClawRadar📅 Publicado: 25 de marzo de 2026🔗 Source
Optimización de Qwen3.5-9B en RTX 3070 Mobile con ik_llama.cpp: Ajustes de Configuración y Puntos de Referencia
Ad

Configuración de Hardware y Software

Un desarrollador documentó su experiencia optimizando la inferencia local en una laptop con una GPU RTX 3070 Mobile (8GB de VRAM, efectivamente ~7.7GB utilizables). El sistema ejecuta CachyOS (Linux 6.19 basado en Arch) con 32GB de RAM y un CPU Intel i7-10750H. Utilizaron ik_llama.cpp (el fork optimizado de llama.cpp de ikawrakow) con el modelo Qwen3.5-9B Q4_K_M de Jackrong/Qwen3.5-9B-Claude-4.6-Opus-Reasoning-Distilled-v2-GGUF.

Problemas Iniciales de Configuración

La configuración inicial ingenua incluía varios problemas:

  • Las banderas específicas de MoE (--n-cpu-moe, -ger, -ser) se aplicaron incorrectamente a un modelo no-MoE (n_expert = 0)
  • --mlock fallaba silenciosamente debido a límites de asignación de memoria (requiere ulimit -l unlimited o una entrada en limits.conf)
  • El tamaño de lote -b 4096 consumía VRAM excesiva (búfer de cálculo de 2004 MiB), casi 2GB en una tarjeta de 8GB

Esta configuración produjo una velocidad de generación de ~47.8 t/s y una evaluación de prompt de ~82 t/s con VRAM al ~97%.

Resultados de Optimización

Después de corregir los problemas de configuración y ajustar los tamaños de lote a -b 2048 -ub 512 (reduciendo el búfer de cálculo a 501 MiB), el desarrollador probó diferentes configuraciones de caché KV:

  • Original (q4_0/q4_0, b4096): 47.8 t/s generación, 82.6 t/s prompt, ~97% VRAM
  • Banderas corregidas + b2048/ub512, q8_0K/q4_0V: 48.4 t/s generación, 189.9 t/s prompt, ~80% VRAM
  • q8_0K/q8_0V: 50.0 t/s generación, 213.0 t/s prompt, ~84% VRAM

La velocidad de evaluación de prompt aumentó drásticamente de ~82 a ~213 t/s, principalmente al reducir el tamaño del lote para liberar memoria de la GPU. Mientras que la velocidad de generación mostró un cambio mínimo (~2% de diferencia entre q4_0 y q8_0), la configuración q8_0/q8_0 produjo respuestas notablemente más coherentes y completas en salidas más largas, valiendo el uso extra de ~256 MiB de VRAM.

Ad

Configuración Final

El comando optimizado para uso de servidor local de un solo usuario:

./build/bin/llama-server \
 -m ./models/Qwen3.5-9B.Q4_K_M.gguf \
 -ngl 999 \
 -fa on \
 -c 65536 \
 -b 2048 \
 -ub 512 \
 -ctk q8_0 \
 -ctv q8_0 \
 --threads 6 \
 --threads-batch 12

Preguntas Abiertas y Pruebas Futuras

El desarrollador identificó varias áreas para mayor investigación:

  • Ajuste del límite de potencia de GPU en GPUs móviles (potencial para reducir TGP con pérdida mínima de velocidad ya que la inferencia está limitada por el ancho de banda de memoria)
  • Otros modelos compatibles con 8GB con buen rendimiento de codificación o razonamiento
  • Comparación de ik_llama.cpp vs llama.cpp principal (las optimizaciones específicas de ik incluyen operaciones fusionadas y reutilización de gráficos)
  • Consejos para arquitectura híbrida SSM (las advertencias de cambio de contexto causan paradas bruscas cuando se llena el contexto, sin ventana deslizante)

Las pruebas utilizaron un prompt solicitando la implementación de un programa Rust de la Criba de Eratóstenes con explicación del algoritmo, análisis de complejidad y salida de ejemplo para N=50.

📖 Leer la fuente completa: r/LocalLLaMA

Ad

👀 Ver también