- Selección de modelos de IA para correr localmente en una RTX 3070 (8 GB de VRAM).
- Se verificó que todos los modelos listados a continuación pueden ejecutarse en nuestro hardware.
- La carpeta
/modeloscontiene los archivosdocker-composecorrespondientes a cada modelo para su despliegue. - El motor de inferencia utilizado es vllm.
- Qwen3.5-9B
- Llama 3.1 8B
- Gemma 4 E4B
- Qwen 3 8B
- Mistral 7B Instruct v0.3
- DeepSeek-R1-Distill-Llama-8B
- Qwen 2.5 7B Instruct
- Phi-4 Mini
- Granite 4.1 8B Instruct
| Modelo | Params | Tipo | Cuantización | Licencia |
|---|---|---|---|---|
| Qwen3.5-9B | 9B | Reasoning (thinking) | BnB 4-bit | Apache 2.0 |
| Llama 3.1 8B | 8B | Instruct | BnB 4-bit | Llama 3.1 |
| Gemma 4 E4B | ~4B | Instruct + Visión | BnB 4-bit | Gemma ToS |
| Qwen3-VL 8B | 8B | Instruct (VL en modo texto) | BnB 4-bit | Apache 2.0 |
| Mistral 7B v0.3 | 7B | Instruct | BnB INT8 | Apache 2.0 |
| DeepSeek-R1-Distill | 8B | Reasoning destilado | BnB 4-bit | MIT |
| Qwen2.5-7B Instruct | 7B | Instruct | AWQ Marlin 4-bit | Apache 2.0 |
| Phi-4 Mini | 3.8B | Instruct | BnB INT8 | MIT |
| Granite 4.1 8B | 8B | Instruct | AWQ INT4 (Marlin) | Apache 2.0 |
| Modelo | Pesos | KV-cache | CPU offload | Idle total |
|---|---|---|---|---|
| Qwen3.5-9B | 4.54 GiB | 1.38 GiB | 3.0 GB | 7.18 GiB |
| Llama 3.1 8B | 5.65 GiB | 0.70 GiB | — | 7.24 GiB |
| Gemma 4 E4B | ~2.5 GiB | ~3.0 GiB | 2.0 GB | ~7.59 GiB |
| Qwen3-VL 8B | 6.21 GiB | ~1.05 GiB | — | 7.26 GiB |
| Mistral 7B v0.3 | 4.17 GiB | 2.32 GiB | — | 6.99 GiB |
| DeepSeek-R1-Distill | 5.65 GiB | 0.86 GiB | — | 6.97 GiB |
| Qwen2.5-7B Instruct | 5.20 GiB | 1.35 GiB | — | 6.97 GiB |
| Phi-4 Mini | 2.87 GiB | 3.70 GiB | — | 7.07 GiB |
| Granite 4.1 8B | 5.09 GiB | 1.53 GiB | — | 6.98 GiB |
| Modelo | Contexto | KV total | Concurrencia | Generación | Init (cacheado) |
|---|---|---|---|---|---|
| Qwen3.5-9B | 8,192 | 11,088 | ~4 | 3.7 tok/s | ~3 min |
| Llama 3.1 8B | 4,096 | 5,728 | ~1 | 28.8 tok/s | ~36 s |
| Gemma 4 E4B | 2,048 | — | ~4 | ~45 tok/s | ~4 s |
| Qwen3-VL 8B | 2,048 | 4,992 | ~2 | 22.8 tok/s | ~4 s |
| Mistral 7B v0.3 | 4,096 | 18,960 | ~4 | 28 tok/s | ~15 s |
| DeepSeek-R1-Distill | 6,144 | 7,008 | ~1 | 3.8 tok/s | ~24 s |
| Qwen2.5-7B Instruct | 8,192 | 25,328 | ~3 | ~70 tok/s | ~15 s |
| Phi-4 Mini | 8,192 | 30,272 | ~3 | 30 tok/s | ~13 s |
| Granite 4.1 8B | 8,192 | 10,032 | ~1 | ~47 tok/s | ~8 s |
| Campo | Valor |
|---|---|
| Modelo | Qwen/Qwen3.5-9B |
| Arquitectura | Híbrido: Gated DeltaNet (atención lineal) + Gated Attention |
| Parámetros | 9B |
| Capas | 32 / Dimensión oculta 4096 |
| Licencia | Apache 2.0 |
| Servidor | vLLM v0.19.1 (API compatible con OpenAI) |
| Métrica | Valor |
|---|---|
| GPU | NVIDIA GeForce RTX 3070 |
| VRAM total | 8,192 MiB |
| VRAM ocupada (idle) | 7,359 MiB (~7.18 GiB) |
| VRAM libre (idle) | 483 MiB |
| VRAM para pesos del modelo | 4.54 GiB (cuantizado a 4-bit) |
| VRAM para KV-cache | 1.38 GiB |
| CPU offload (pesos en RAM) | 3.0 GB |
| Temperatura GPU (idle) | 44 °C |
| Potencia consumida (idle) | 21.7 W / 270 W máx. |
| Utilización GPU (idle) | 0% |
| Métrica | Valor |
|---|---|
| Contexto máximo (configurado) | 8,192 tokens |
| KV-cache total disponible | 11,088 tokens |
| Concurrencia máxima (8192 tokens/req) | ~4 requests simultáneos |
| Throughput de generación | ~3.7 tokens/s |
| Throughput de prompt (prefill) | ~2.3 tokens/s |
| Tiempo de carga del modelo | 10.4 segundos |
| Tiempo de inicialización total | ~3 minutos (incluye profiling de KV-cache de ~90 s) |
| Parámetro | Valor |
|---|---|
| Puerto | 8005 |
| Cuantización | BitsAndBytes 4-bit |
| dtype en GPU | float16 |
| gpu-memory-utilization | 0.90 |
| Chunked prefill | activado |
| Vision Encoder | desactivado (--language-model-only) |
| CUDA Graphs | desactivados (--enforce-eager) |
| Reasoning parser | qwen3 |
- Thinking mode (por defecto): genera razonamiento interno en
<think>...</think>antes de responder, expuesto en el camporeasoningde la API. Puede desactivarse por request. - API compatible con OpenAI:
/v1/chat/completions,/v1/models,/health. - Tarea soportada: generación de texto.
- Contexto nativo del modelo: 262,144 tokens (limitado a 8,192 en este despliegue por restricciones de VRAM).
- En idle, el modelo ocupa el 89% de la VRAM disponible; no hay margen para otro proceso de GPU en el mismo host.
- La velocidad de generación (~3.7 tokens/s) es consistente con BitsAndBytes 4-bit usando
--enforce-eageren hardware consumer. Para mayor throughput, se requeriría AWQ/GPTQ con CUDA Graphs o hardware con más VRAM. - El arranque requiere ~3 minutos; el healthcheck en
http://localhost:8005/healthresponde200 OKsolo después de que finaliza el profiling del KV-cache.
| Campo | Valor |
|---|---|
| Modelo | meta-llama/Llama-3.1-8B |
| Arquitectura | LlamaForCausalLM (Transformer decoder, GQA) |
| Parámetros | 8B |
| Capas | 32 / Dimensión oculta 4096 |
| Licencia | Meta Llama 3.1 Community License (repo gateado) |
| Servidor | vLLM v0.19.1 (API compatible con OpenAI) |
| Métrica | Valor |
|---|---|
| GPU | NVIDIA GeForce RTX 3070 |
| VRAM total | 8,192 MiB |
| VRAM ocupada (idle) | 7,419 MiB (~7.24 GiB) |
| VRAM libre (idle) | 773 MiB |
| VRAM para pesos del modelo | 5.65 GiB (cuantizado a 4-bit) |
| VRAM para KV-cache | 0.7 GiB |
| Temperatura GPU (idle) | 44 °C |
| Potencia consumida (idle) | 21 W / 270 W máx. |
| Utilización GPU (idle) | 0% |
| Métrica | Valor |
|---|---|
| Contexto máximo (configurado) | 4,096 tokens |
| KV-cache total disponible | 5,728 tokens |
| Concurrencia máxima (4096 tokens/req) | ~1 request simultáneo |
| Throughput de generación | ~28.8 tokens/s |
| Throughput de prompt (prefill) | ~1.6 tokens/s (promedio ventana 10 s) |
| Tiempo de carga del modelo | 4.56 segundos |
| Tiempo de inicialización total | ~36 segundos |
| Parámetro | Valor |
|---|---|
| Puerto | 8005 |
| Cuantización | BitsAndBytes 4-bit |
| dtype en GPU | float16 |
| gpu-memory-utilization | 0.90 |
| Chunked prefill | activado |
| CUDA Graphs | desactivados (--enforce-eager) |
| Attention backend | FlashAttention v2 |
- Modelo base (no instruct): optimizado para completar texto, no para seguir instrucciones de chat. Para uso conversacional se recomienda
Llama-3.1-8B-Instruct. - API compatible con OpenAI:
/v1/completions,/v1/chat/completions,/v1/models,/health. - Tarea soportada: generación de texto.
- Contexto nativo del modelo: 131,072 tokens (limitado a 4,096 en este despliegue por restricciones de VRAM).
- Los pesos en 4-bit ocupan 5.65 GiB, más que el Qwen3.5-9B (4.54 GiB) a pesar de tener menos parámetros, porque el modelo original es bfloat16 y se convierte a float16 antes de cuantizar.
--enforce-eageres obligatorio: los CUDA graphs requieren ~1 GiB adicional que dejaría la KV-cache en 0.14 GiB (insuficiente para arrancar).- El contexto se limitó a 4,096 tokens (vs 8,192 del Qwen) porque el modelo base consume más VRAM por peso.
- La velocidad de generación (~28.8 tokens/s) es notablemente mayor que Qwen3.5-9B (~3.7 tokens/s) al ser un modelo base sin overhead de reasoning.
- El arranque es rápido (~36 s) porque los pesos ya están cacheados en el volumen Docker.
| Campo | Valor |
|---|---|
| Modelo | google/gemma-4-E4B-it |
| Arquitectura | Gemma4ForConditionalGeneration (Vision-Language Transformer) |
| Parámetros | ~4B |
| Licencia | Gemma Terms of Service (repo gateado) |
| Servidor | vLLM fork vllm/vllm-openai:gemma4 (API compatible con OpenAI) |
| Métrica | Valor |
|---|---|
| GPU | NVIDIA GeForce RTX 3070 |
| VRAM total | 8,192 MiB |
| VRAM ocupada (idle) | ~7,773 MiB (~7.59 GiB) |
| VRAM libre (idle) | ~419 MiB |
| VRAM para pesos del modelo | ~2.5 GiB (cuantizado a 4-bit) |
| VRAM para KV-cache | ~3.0 GiB |
| CPU offload (pesos en RAM) | 2.0 GB |
| Temperatura GPU (idle) | ~45 °C |
| Potencia consumida (idle) | ~22 W / 270 W máx. |
| Utilización GPU (idle) | 0% |
| Métrica | Valor |
|---|---|
| Contexto máximo (configurado) | 2,048 tokens |
| Concurrencia máxima (2048 tokens/req) | ~4 requests simultáneos |
| Throughput de generación | ~45 tokens/s |
| Tiempo de carga del modelo | ~4 segundos (pesos cacheados) |
| Tiempo de inicialización total | ~2-5 minutos (arranque frío) |
| Parámetro | Valor |
|---|---|
| Puerto | 8005 |
| Cuantización | BitsAndBytes 4-bit |
| dtype en GPU | float16 |
| gpu-memory-utilization | 0.95 |
| max-model-len | 2,048 |
| CPU offload | 2 GB (--cpu-offload-gb 2) |
| Multimodal | --limit-mm-per-prompt '{"image":1,"video":0,"audio":0}' |
| CUDA Graphs | desactivados (--enforce-eager) |
| Runtime patch | sí (ver Notas de operación) |
- Modelo multimodal (texto + imagen): acepta hasta 1 imagen por request vía la API de chat de OpenAI. Video y audio están desactivados para conservar VRAM.
- API compatible con OpenAI:
/v1/chat/completions,/v1/models,/health. - Tarea soportada: generación de texto, seguimiento de instrucciones, comprensión de imágenes.
- Contexto nativo del modelo: 128,000 tokens (limitado a 2,048 en este despliegue por restricciones de VRAM).
- El entrypoint aplica un patch en
gpu_model_runner.pyque elimina un assert que bloqueaba el CPU offload al reinicializar el batch multimodal — bug conocido upstream (vLLM PR #18298). El patch es idempotente; cuando upstream lo integre, el log mostraráAlready patched or not found. - El flag
--cpu-offload-gb 2es necesario para caber en 8 GB de VRAM; sin él el servidor termina con OOM durante el profiling de la KV-cache. - Sin
--limit-mm-per-prompt '{"image":1,"video":0,"audio":0}'el servidor falla con OOM porque el encoder visual reserva memoria adicional en el profiling. --enforce-eageres obligatorio: bitsandbytes no es compatible con CUDA Graphs.- El primer arranque descarga los pesos en BF16 (~2-5 min); los reinicios con pesos cacheados en el volumen Docker cargan el modelo en ~4 s.
- Se requiere aceptar la licencia Gemma en hf.co/google/gemma-4-E4B-it antes de descargar.
| Campo | Valor |
|---|---|
| Modelo | Qwen/Qwen3-VL-8B-Instruct |
| Arquitectura | Qwen3VLForConditionalGeneration (Vision-Language Transformer) |
| Parámetros | ~8B |
| Capas | 28 / Dimensión oculta 3584 |
| Licencia | Apache 2.0 |
| Servidor | vLLM v0.19.1 (API compatible con OpenAI) |
| Métrica | Valor |
|---|---|
| GPU | NVIDIA GeForce RTX 3070 |
| VRAM total | 8,192 MiB |
| VRAM ocupada (idle) | 7,435 MiB (~7.26 GiB) |
| VRAM libre (idle) | 757 MiB |
| VRAM para pesos del modelo | 6.21 GiB (cuantizado a 4-bit) |
| VRAM para KV-cache | ~1.05 GiB |
| Temperatura GPU (idle) | 48 °C |
| Potencia consumida (idle) | 22.1 W / 270 W máx. |
| Utilización GPU (idle) | 0% |
| Métrica | Valor |
|---|---|
| Contexto máximo (configurado) | 2,048 tokens |
| KV-cache total disponible | 4,992 tokens |
| Concurrencia máxima (2048 tokens/req) | ~2 requests simultáneos |
| Throughput de generación | ~22.8 tokens/s |
| Tiempo de carga del modelo | 4.4 segundos (pesos cacheados) |
| Tiempo de inicialización total | ~2-5 minutos en arranque frío |
| Parámetro | Valor |
|---|---|
| Puerto | 8005 |
| Cuantización | BitsAndBytes 4-bit |
| dtype en GPU | bfloat16 |
| gpu-memory-utilization | 0.95 |
| max-model-len | 2,048 |
| max-num-seqs | 4 |
| Chunked prefill | activado |
| CUDA Graphs | desactivados (--enforce-eager) |
| Vision Encoder | deshabilitado (--limit-mm-per-prompt '{"image":0,"video":0}') |
- Modelo multimodal en modo texto: Qwen3-VL-8B-Instruct es un modelo vision-language (texto + imagen + video), pero se ejecuta en modo texto únicamente para caber en 8 GB de VRAM. El encoder visual se deshabilita durante el profiling de memoria y la inferencia.
- API compatible con OpenAI:
/v1/chat/completions,/v1/completions,/v1/models,/health. - Tarea soportada: generación de texto, seguimiento de instrucciones.
- Contexto nativo del modelo: 256,000 tokens (limitado a 2,048 en este despliegue por restricciones de VRAM).
- Los pesos en 4-bit ocupan 6.21 GiB — el mayor footprint de todos los modelos desplegados — dejando solo ~1.05 GiB para KV-cache. Eso limita el contexto máximo a 2,048 tokens.
- Sin
--limit-mm-per-prompt '{"image":0,"video":0}'el servidor falla con OOM durantedetermine_available_memoryporque el encoder visual consume ~576 MiB adicionales en el profiling. - La velocidad de generación (~22.8 tokens/s) es intermedia: superior a Qwen3.5-9B con reasoning (~3.7 tokens/s), pero inferior a Llama 3.1 8B base (~28.8 tokens/s) y Mistral INT8 (~28 tokens/s).
--enforce-eagery--trust-remote-codeson obligatorios: bitsandbytes no es compatible con CUDA Graphs y la arquitectura Qwen3-VL requiere código remoto.- El primer arranque descarga ~18 GB de pesos originales en BF16 (~2-5 min); los reinicios con pesos cacheados en
~/.cache/huggingfacecargan el modelo en ~4 seg.
| Campo | Valor |
|---|---|
| Modelo | mistralai/Mistral-7B-Instruct-v0.3 |
| Arquitectura | MistralForCausalLM (Transformer decoder, GQA, Sliding Window Attention) |
| Parámetros | 7B |
| Capas | 32 / Dimensión oculta 4096 |
| Licencia | Apache 2.0 |
| Servidor | vLLM v0.19.1 (API compatible con OpenAI) |
| Métrica | Valor |
|---|---|
| GPU | NVIDIA GeForce RTX 3070 |
| VRAM total | 8,192 MiB |
| VRAM ocupada (idle) | 7,159 MiB (~6.99 GiB) |
| VRAM libre (idle) | 683 MiB |
| VRAM para pesos del modelo | 4.17 GiB (cuantizado a INT8) |
| VRAM para KV-cache | 2.32 GiB |
| Temperatura GPU (idle) | 46 °C |
| Potencia consumida (idle) | 21.81 W / 270 W máx. |
| Utilización GPU (idle) | 0% |
| Métrica | Valor |
|---|---|
| Contexto máximo (configurado) | 4,096 tokens |
| KV-cache total disponible | 18,960 tokens |
| Concurrencia máxima (4096 tokens/req) | ~4 requests simultáneos |
| Throughput de generación | ~28 tokens/s |
| Tiempo hasta primer token (TTFT) | ~0.26 s (promedio) |
| Tiempo de carga del modelo | 4.55 segundos (pesos cacheados) |
| Tiempo de inicialización total | ~15 segundos (profile + warmup KV-cache) |
| Parámetro | Valor |
|---|---|
| Puerto | 8005 |
| Cuantización | BitsAndBytes INT8 |
| dtype en GPU | float16 |
| gpu-memory-utilization | 0.90 |
| Chunked prefill | activado |
| Prefix cache | activado |
| CUDA Graphs | desactivados (--enforce-eager) |
- Modelo instruct (fine-tuned con SFT): responde instrucciones y mantiene conversaciones coherentes en múltiples idiomas. El modelo base (Mistral-7B-v0.3) no sigue instrucciones; esta variante es la correcta para chat y Q&A.
- API compatible con OpenAI:
/v1/chat/completions,/v1/completions,/v1/models,/health. - Tarea soportada: generación de texto, seguimiento de instrucciones, chat.
- Contexto nativo del modelo: 32,768 tokens (limitado a 4,096 en este despliegue por restricciones de VRAM).
- La cuantización INT8 (vs 4-bit de otros modelos) resulta en mayor velocidad de generación (~28 tokens/s) a costa de mayor VRAM por peso. Los 4.17 GiB de pesos dejan 2.32 GiB para KV-cache — más del doble que Llama 3.1 8B con 4-bit (0.7 GiB).
- Con 18,960 tokens de KV-cache disponibles, soporta ~4 requests simultáneos de 4,096 tokens, igual que Qwen3.5-9B pero con 7x más throughput de generación.
--enforce-eageres obligatorio: la cuantización bitsandbytes no es compatible con CUDA Graphs en este hardware.- El primer arranque descarga ~14 GB de pesos (~4 minutos); los reinicios subsiguientes cargan desde
~/.cache/huggingfaceen ~15 s.
| Campo | Valor |
|---|---|
| Modelo | deepseek-ai/DeepSeek-R1-Distill-Llama-8B |
| Arquitectura | LlamaForCausalLM (destilado de DeepSeek-R1 vía knowledge distillation) |
| Parámetros | 8B |
| Capas | 32 / Dimensión oculta 4096 |
| Licencia | MIT |
| Servidor | vLLM v0.19.1 (API compatible con OpenAI) |
| Métrica | Valor |
|---|---|
| GPU | NVIDIA GeForce RTX 3070 |
| VRAM total | 8,192 MiB |
| VRAM ocupada (idle) | 7,141 MiB (~6.97 GiB) |
| VRAM libre (idle) | 1,051 MiB |
| VRAM para pesos del modelo | 5.65 GiB (cuantizado a 4-bit) |
| VRAM para KV-cache | 0.86 GiB |
| Temperatura GPU (idle) | 48 °C |
| Potencia consumida (idle) | 22 W / 270 W máx. |
| Utilización GPU (idle) | 0% |
| Métrica | Valor |
|---|---|
| Contexto máximo (configurado) | 6,144 tokens |
| KV-cache total disponible | 7,008 tokens |
| Concurrencia máxima (6144 tokens/req) | ~1 request simultáneo |
| Throughput de generación | ~3.8 tokens/s |
| Throughput de prompt (prefill) | ~1.2 tokens/s |
| Tiempo de carga del modelo | 4.43 segundos (pesos cacheados) |
| Tiempo de inicialización total | ~24 segundos |
| Parámetro | Valor |
|---|---|
| Puerto | 8005 |
| Cuantización | BitsAndBytes 4-bit |
| dtype en GPU | bfloat16 |
| gpu-memory-utilization | 0.90 |
| max-model-len | 6,144 |
| max-num-seqs | 8 |
| Chunked prefill | activado |
| Prefix cache | activado |
| CUDA Graphs | desactivados (--enforce-eager) |
| Attention backend | FlashAttention v2 |
| HTTP keep-alive timeout | 300 s (VLLM_HTTP_TIMEOUT_KEEP_ALIVE=300) |
- Modelo de razonamiento (reasoning): genera cadena de pensamiento en
<think>...</think>antes de la respuesta final. No existe variante base separada: el proceso de destilación desde DeepSeek-R1 produce directamente un modelo instruction-following con razonamiento integrado. - API compatible con OpenAI:
/v1/chat/completions,/v1/models,/health. - Tarea soportada: generación de texto, razonamiento paso a paso, seguimiento de instrucciones.
- Contexto nativo del modelo: 131,072 tokens (limitado a 6,144 en este despliegue por restricciones de VRAM).
- Los pesos en 4-bit ocupan 5.65 GiB — igual que Llama 3.1 8B, ya que comparten la misma arquitectura base. Esto deja solo 0.86 GiB para KV-cache.
- El contexto se limitó a 6,144 tokens (en lugar del máximo nativo de 131,072): con
--max-model-len 8192el servidor falla al arrancar porque la KV-cache necesaria (1.0 GiB) supera la disponible (0.86 GiB). vLLM reportó el límite real: 7,008 tokens de KV-cache, suficientes para 6,144 tokens de contexto con margen. - El flag
--timeout-keep-aliveno existe en vLLM 0.19.x; el timeout de 5 minutos se configura mediante la variable de entornoVLLM_HTTP_TIMEOUT_KEEP_ALIVE=300, relevante para respuestas largas con cadenas de razonamiento extendidas. - La velocidad de generación (~3.8 tokens/s) incluye los tokens de la cadena de pensamiento (
<think>), que en preguntas complejas puede ser extensa. El throughput neto de la respuesta visible es mayor. --enforce-eageres obligatorio: bitsandbytes no es compatible con CUDA Graphs.--trust-remote-codees necesario por la arquitectura personalizada del modelo.- Temperatura recomendada: 0.5–0.7 para equilibrar creatividad y coherencia en el razonamiento.
| Campo | Valor |
|---|---|
| Modelo | Qwen/Qwen2.5-7B-Instruct-AWQ |
| Arquitectura | Qwen2ForCausalLM (Transformer decoder, GQA) |
| Parámetros | 7B |
| Capas | 28 / Dimensión oculta 3584 |
| Licencia | Apache 2.0 |
| Servidor | vLLM v0.19.1 (API compatible con OpenAI) |
| Métrica | Valor |
|---|---|
| GPU | NVIDIA GeForce RTX 3070 |
| VRAM total | 8,192 MiB |
| VRAM ocupada (idle) | 7,139 MiB (~6.97 GiB) |
| VRAM libre (idle) | 703 MiB |
| VRAM para pesos del modelo | 5.2 GiB (AWQ Marlin 4-bit) |
| VRAM para KV-cache | 1.35 GiB |
| Temperatura GPU (idle) | 44 °C |
| Potencia consumida (idle) | 21.87 W / 270 W máx. |
| Utilización GPU (idle) | 0% |
| Métrica | Valor |
|---|---|
| Contexto máximo (configurado) | 8,192 tokens |
| KV-cache total disponible | 25,328 tokens |
| Concurrencia máxima (8192 tokens/req) | ~3 requests simultáneos |
| Throughput de generación | ~70 tokens/s |
| Throughput de prompt (prefill) | ~4.7 tokens/s (promedio ventana 10 s) |
| Tiempo de carga del modelo | ~105 segundos (primera vez, incluye descarga) |
| Tiempo de inicialización total (primera vez) | ~2 minutos 20 segundos |
| Tiempo de inicialización total (pesos cacheados) | ~15 segundos |
| Parámetro | Valor |
|---|---|
| Puerto | 8005 |
| Cuantización | AWQ Marlin 4-bit |
| dtype en GPU | float16 |
| gpu-memory-utilization | 0.90 |
| max-model-len | 8,192 |
| max-num-seqs | 8 |
| Chunked prefill | activado |
| Prefix cache | activado |
| CUDA Graphs | desactivados (--enforce-eager) |
| HTTP keep-alive timeout | 300 s (VLLM_HTTP_TIMEOUT_KEEP_ALIVE=300) |
- Modelo instruct puro de texto: Qwen2.5-7B-Instruct es un modelo de lenguaje de texto puro (no multimodal). Sigue instrucciones, mantiene conversaciones coherentes y soporta múltiples idiomas incluyendo español.
- API compatible con OpenAI:
/v1/chat/completions,/v1/completions,/v1/models,/health. - Nombre en la API:
qwen2.5-7b-instruct - Tarea soportada: generación de texto, seguimiento de instrucciones, chat, Q&A.
- Contexto nativo del modelo: 128,000 tokens (limitado a 8,192 en este despliegue por restricciones de VRAM).
- La cuantización AWQ Marlin es notablemente más rápida que BitsAndBytes 4-bit: ~70 tokens/s vs ~3-28 tokens/s de otros modelos en este hardware. El kernel Marlin optimiza específicamente el acceso a memoria para pesos AWQ en arquitecturas Ampere (RTX 30xx).
- Con 25,328 tokens de KV-cache disponibles, tiene el mayor pool de contexto activo de todos los modelos desplegados.
- A diferencia de los modelos con BitsAndBytes, AWQ descarga pesos ya cuantizados desde HuggingFace (~4 GB). Esto elimina el paso de cuantización en carga y explica el tiempo de inicialización más corto con pesos cacheados (~15 s).
--enforce-eagerse mantiene para limitar el consumo de VRAM; el kernel AWQ Marlin alcanza buen rendimiento sin CUDA Graphs.--trust-remote-codees necesario para cargar el tokenizador Qwen2.5.- El timeout HTTP keep-alive se configura vía la variable de entorno
VLLM_HTTP_TIMEOUT_KEEP_ALIVE=300(el flag--timeout-keep-alivefue eliminado en vLLM 0.19.x).
| Campo | Valor |
|---|---|
| Modelo | microsoft/Phi-4-mini-instruct |
| Arquitectura | Phi3ForCausalLM (Transformer decoder, GQA) |
| Parámetros | 3.8B |
| Capas | 32 / Dimensión oculta 3072 |
| Licencia | MIT |
| Servidor | vLLM v0.19.1 (API compatible con OpenAI) |
| Métrica | Valor |
|---|---|
| GPU | NVIDIA GeForce RTX 3070 |
| VRAM total | 8,192 MiB |
| VRAM ocupada (idle) | 7,247 MiB (~7.07 GiB) |
| VRAM libre (idle) | 595 MiB |
| VRAM para pesos del modelo | 2.87 GiB (cuantizado a INT8) |
| VRAM para KV-cache | 3.7 GiB |
| Temperatura GPU (idle) | 45 °C |
| Potencia consumida (idle) | 21.84 W / 270 W máx. |
| Utilización GPU (idle) | 0% |
| Métrica | Valor |
|---|---|
| Contexto máximo (configurado) | 8,192 tokens |
| KV-cache total disponible | 30,272 tokens |
| Concurrencia máxima (8192 tokens/req) | ~3 requests simultáneos |
| Throughput de generación | ~30 tokens/s |
| Tiempo hasta primer token (TTFT) | ~0.10 s (promedio) |
| Tiempo de carga del modelo | ~5 segundos (pesos cacheados) |
| Tiempo de inicialización total | ~13 segundos (pesos cacheados) |
| Parámetro | Valor |
|---|---|
| Puerto | 8005 |
| Cuantización | BitsAndBytes INT8 |
| dtype en GPU | bfloat16 |
| gpu-memory-utilization | 0.90 |
| max-model-len | 8,192 |
| max-num-seqs | 8 |
| Chunked prefill | activado |
| Prefix cache | activado |
| CUDA Graphs | desactivados (--enforce-eager) |
| Vision Encoder | deshabilitado (--limit-mm-per-prompt '{"image":0}') |
- Modelo instruct (fine-tuned con SFT + RLHF): responde instrucciones y mantiene conversaciones en múltiples idiomas. Optimizado para razonamiento y calidad de respuesta en tareas de chat y Q&A.
- API compatible con OpenAI:
/v1/chat/completions,/v1/completions,/v1/models,/health. - Tarea soportada: generación de texto, seguimiento de instrucciones, chat, razonamiento.
- Contexto nativo del modelo: 131,072 tokens con LongRoPE (limitado a 8,192 en este despliegue por restricciones de VRAM).
- Los pesos en INT8 ocupan 2.87 GiB — el footprint más bajo de todos los modelos instruct desplegados — liberando 3.7 GiB para KV-cache y permitiendo 8,192 tokens de contexto con ~3 requests simultáneos.
- Aunque Phi-4-mini-instruct es un modelo vision-language, se ejecuta en modo texto únicamente con
--limit-mm-per-prompt '{"image":0}'para conservar VRAM. - El contexto nativo es 131,072 tokens gracias a LongRoPE (sobre una ventana base de 4,096 tokens); vLLM genera un warning al respecto que es esperado y no afecta el funcionamiento.
- La velocidad de generación (~30 tokens/s) es la más alta entre los modelos instruct del setup, ligeramente superior a Mistral 7B Instruct INT8 (~28 tokens/s) pese a tener menos parámetros.
--enforce-eagery--trust-remote-codeson obligatorios: bitsandbytes no es compatible con CUDA Graphs y la arquitectura Phi-4 requiere código remoto.- El primer arranque descarga los pesos BF16 (~2 minutos); los reinicios con pesos cacheados en
~/.cache/huggingfaceinicializan en ~13 segundos.
| Campo | Valor |
|---|---|
| Modelo | cyankiwi/granite-4.1-8b-AWQ-INT4 (base: ibm-granite/granite-4.1-8b-instruct) |
| Arquitectura | GraniteForCausalLM (Transformer decoder, GQA) |
| Parámetros | 8B |
| Capas | 40 / Dimensión oculta 4096 |
| Attention heads | 32 / KV heads 8 (GQA) |
| Licencia | Apache 2.0 |
| Servidor | vLLM v0.19.1 (API compatible con OpenAI) |
| Métrica | Valor |
|---|---|
| GPU | NVIDIA GeForce RTX 3070 |
| VRAM total | 8,192 MiB |
| VRAM ocupada (idle) | 7,149 MiB (~6.98 GiB) |
| VRAM libre (idle) | 1,043 MiB |
| VRAM para pesos del modelo | 5.09 GiB (AWQ INT4 / compressed-tensors Marlin) |
| VRAM para KV-cache | 1.53 GiB |
| Temperatura GPU (idle) | 48 °C |
| Potencia consumida (idle) | 22.2 W / 270 W máx. |
| Utilización GPU (idle) | 0% |
| Métrica | Valor |
|---|---|
| Contexto máximo (configurado) | 8,192 tokens |
| KV-cache total disponible | 10,032 tokens |
| Concurrencia máxima (8192 tokens/req) | ~1 request simultáneo |
| Throughput de generación | ~47 tokens/s |
| Tiempo hasta primer token (TTFT) | ~0.06 s (warm) |
| Tiempo de carga del modelo | 4.18 segundos (pesos cacheados) |
| Tiempo de inicialización total | ~8 segundos (pesos cacheados) |
| Parámetro | Valor |
|---|---|
| Puerto | 8005 |
| Cuantización | AWQ INT4 (compressed-tensors, kernel Marlin WNA16) |
| dtype en GPU | float16 (cast desde bfloat16) |
| gpu-memory-utilization | 0.90 |
| max-model-len | 8,192 |
| max-num-seqs | 8 |
| Chunked prefill | activado |
| Prefix cache | activado |
| CUDA Graphs | desactivados (--enforce-eager) |
- Modelo instruct de IBM: entrenado para seguir instrucciones, chat y tareas empresariales. Es el sucesor de la familia Granite 3.x con mejoras en razonamiento y seguimiento de instrucciones.
- API compatible con OpenAI:
/v1/chat/completions,/v1/models,/health. - Nombre en la API:
granite-4.1-8b-instruct - Tarea soportada: generación de texto, seguimiento de instrucciones, chat, Q&A.
- Contexto nativo del modelo: 131,072 tokens (limitado a 8,192 en este despliegue por restricciones de VRAM).
- El modelo usa cuantización
compressed-tensors(WNA16) con el kernelMarlinLinearKernel, que es el mismo backend de alto rendimiento que usa Qwen2.5-7B AWQ. Esto explica los ~47 tok/s — muy superiores a modelos con BitsAndBytes (~3–30 tok/s). - vLLM auto-detecta la cuantización desde el
quantization_configdel model card. Pasar--quantization awqexplícitamente falla porque el método registrado escompressed-tensors, noawq. - El modelo original es bfloat16; vLLM lo castea a float16 automáticamente (la RTX 3070 no tiene soporte nativo eficiente para bfloat16).
- Con 10,032 tokens de KV-cache, la concurrencia real es ~1 request de 8,192 tokens. Para mayor concurrencia conviene reducir
--max-model-lena 4,096 (duplicaría el pool de KV-cache). - El primer arranque descarga ~5.1 GB de pesos ya cuantizados desde HuggingFace (sin paso de cuantización en carga). Los reinicios con pesos cacheados inicializan en ~8 s.
--trust-remote-codees necesario para cargar la arquitectura GraniteForCausalLM.--enforce-eageres obligatorio para operar dentro del presupuesto de VRAM de 8 GB.