Opciones de configuración
Docker Model Runner proporciona varias opciones de configuración para ajustar el comportamiento del modelo, el uso de memoria y el rendimiento de la inferencia. Esta guía cubre las configuraciones clave y cómo aplicarlas.
Tamaño del contexto (longitud del contexto)
El tamaño del contexto determina el número máximo de tokens que un modelo puede procesar en una sola solicitud, incluyendo tanto el prompt de entrada como la salida generada. Esta es una de las configuraciones más importantes que afectan al uso de memoria y a las capacidades del modelo.
Tamaño de contexto predeterminado
Por defecto, Docker Model Runner utiliza un tamaño de contexto que equilibra la capacidad con la eficiencia de los recursos:
| Motor | Comportamiento predeterminado |
|---|---|
| llama.cpp | 4096 tokens |
| vLLM | Utiliza el tamaño de contexto máximo entrenado del modelo |
NoteEl valor predeterminado real varía según el modelo. La mayoría de los modelos admiten entre 2,048 y 8,192 tokens por defecto. Algunos modelos más nuevos admiten contextos de 32K, 128K o incluso mayores.
Configurar el tamaño del contexto
Puedes ajustar el tamaño del contexto por modelo utilizando el comando docker model configure:
$ docker model configure --context-size 8192 ai/qwen2.5-coder
O en un archivo de Compose:
models:
llm:
model: ai/qwen2.5-coder
context_size: 8192Directrices para el tamaño del contexto
| Tamaño del contexto | Caso de uso típico | Impacto en memoria |
|---|---|---|
| 2,048 | Consultas sencillas, fragmentos de código cortos | Bajo |
| 4,096 | Conversaciones estándar, archivos de código medianos | Moderado |
| 8,192 | Conversaciones largas, archivos de código más grandes | Mayor |
| 16,384+ | Documentos extensos, contexto de múltiples archivos | Alto |
ImportantLos tamaños de contexto más grandes requieren más memoria (RAM/VRAM). Si experimentas errores de falta de memoria (out-of-memory), reduce el tamaño del contexto. Como guía aproximada, cada 1,000 tokens adicionales requieren aproximadamente entre 100 y 500 MB de memoria adicional, según el tamaño del modelo.
Comprobar el contexto máximo de un modelo
Para ver la configuración de un modelo, incluido el tamaño de su contexto:
$ docker model inspect ai/qwen2.5-coder
NoteEl comando
docker model inspectmuestra la longitud máxima de contexto admitida por el modelo (por ejemplo,gemma3.context_length), no el tamaño del contexto configurado. El tamaño del contexto configurado es el que se establece condocker model configure --context-sizey representa el límite real utilizado durante la inferencia, el cual debe ser menor o igual a la longitud de contexto máxima admitida por el modelo.
Banderas de tiempo de ejecución (runtime flags)
Las banderas de tiempo de ejecución te permiten pasar parámetros directamente al motor de inferencia subyacente. Esto proporciona un control detallado sobre el comportamiento del modelo.
Uso de banderas de tiempo de ejecución
Las banderas de tiempo de ejecución se pueden proporcionar a través de múltiples mecanismos:
Uso de Docker Compose
En un archivo de Compose:
models:
llm:
model: ai/qwen2.5-coder
context_size: 4096
runtime_flags:
- "--temp"
- "0.7"
- "--top-p"
- "0.9"Uso de la línea de comandos
Con el comando docker model configure:
$ docker model configure ai/qwen2.5-coder -- --temp 0.7 --top-p 0.9
Parámetros comunes de llama.cpp
Estos son los parámetros de llama.cpp más utilizados. No necesitas buscar en la documentación de llama.cpp para los casos de uso típicos.
Parámetros de muestreo
| Bandera | Descripción | Predeterminado | Rango |
|---|---|---|---|
--temp | Temperatura para el muestreo. Menor = más determinista, mayor = más creativo | 0.8 | 0.0-2.0 |
--top-k | Limita el muestreo a los mejores K tokens. Menor = más enfocado | 40 | 1-100 |
--top-p | Umbral de muestreo nucleus. Menor = más enfocado | 0.9 | 0.0-1.0 |
--min-p | Umbral de probabilidad mínima | 0.05 | 0.0-1.0 |
--repeat-penalty | Penalización por repetición de tokens | 1.1 | 1.0-2.0 |
Ejemplo: Salida determinista (para generación de código)
runtime_flags:
- "--temp"
- "0"
- "--top-k"
- "1"Ejemplo: Salida creativa (para redacción de historias)
runtime_flags:
- "--temp"
- "1.2"
- "--top-p"
- "0.95"Parámetros de rendimiento
| Bandera | Descripción | Predeterminado | Notas |
|---|---|---|---|
--threads | Hilos de CPU para la generación | Auto | Establecer en el número de núcleos de rendimiento |
--threads-batch | Hilos de CPU para el procesamiento por lotes | Auto | Generalmente el mismo que --threads |
--batch-size | Tamaño del lote para el procesamiento del prompt | 512 | Mayor = procesamiento de prompts más rápido |
--mlock | Bloquear el modelo en memoria | Desactivado | Evita el intercambio (swapping), requiere RAM suficiente |
--no-mmap | Deshabilitar el mapeo de memoria | Desactivado | Puede mejorar el rendimiento en algunos sistemas |
Ejemplo: Optimizado para CPU multinúcleo
runtime_flags:
- "--threads"
- "8"
- "--batch-size"
- "1024"Parámetros de GPU
| Bandera | Descripción | Predeterminado | Notas |
|---|---|---|---|
--n-gpu-layers | Capas a descargar en la GPU | Todas (si hay GPU disponible) | Reducir si te quedas sin VRAM |
--main-gpu | GPU a utilizar para el cálculo | 0 | Para sistemas con varias GPU |
--split-mode | Cómo dividir el trabajo entre las GPU | layer | Opciones: none, layer, row |
Ejemplo: Descarga parcial en GPU (VRAM limitada)
runtime_flags:
- "--n-gpu-layers"
- "20"Parámetros avanzados
| Bandera | Descripción | Predeterminado |
|---|---|---|
--rope-scaling | Método de escalado RoPE | Auto |
--rope-freq-base | Frecuencia base de RoPE | Predeterminada del modelo |
--rope-freq-scale | Escala de frecuencia de RoPE | Predeterminada del modelo |
--no-prefill-assistant | Deshabilitar el prellenado del asistente | Desactivado |
--reasoning-budget | Presupuesto de tokens para modelos de razonamiento | 0 (deshabilitado) |
Parámetros de vLLM
Cuando se utiliza el backend de vLLM, hay otros parámetros disponibles.
Usa --hf_overrides para pasar anulaciones (overrides) de configuración del modelo de HuggingFace como JSON:
$ docker model configure --hf_overrides '{"rope_scaling": {"type": "dynamic", "factor": 2.0}}' ai/model-vllm
Ajustes predeterminados de configuración
Aquí hay ejemplos completos de configuración para casos de uso comunes.
Completado de código (rápido, determinista)
models:
coder:
model: ai/qwen2.5-coder
context_size: 4096
runtime_flags:
- "--temp"
- "0.1"
- "--top-k"
- "1"
- "--batch-size"
- "1024"Asistente de chat (equilibrado)
models:
assistant:
model: ai/llama3.2
context_size: 8192
runtime_flags:
- "--temp"
- "0.7"
- "--top-p"
- "0.9"
- "--repeat-penalty"
- "1.1"Escritura creativa (temperatura alta)
models:
writer:
model: ai/llama3.2
context_size: 8192
runtime_flags:
- "--temp"
- "1.2"
- "--top-p"
- "0.95"
- "--repeat-penalty"
- "1.0"Análisis de documentos largos (contexto grande)
models:
analyzer:
model: ai/qwen2.5-coder:14B
context_size: 32768
runtime_flags:
- "--mlock"
- "--batch-size"
- "2048"Sistema con poca memoria
models:
efficient:
model: ai/smollm2:360M-Q4_K_M
context_size: 2048
runtime_flags:
- "--threads"
- "4"Configuración basada en el entorno
También puedes configurar los modelos a través de variables de entorno en los contenedores:
| Variable | Descripción |
|---|---|
LLM_URL | URL inyectada automáticamente del endpoint del modelo |
LLM_MODEL | Identificador del modelo inyectado automáticamente |
Consulta Modelos y Compose para obtener detalles sobre cómo se rellenan estas variables.
Restablecer configuración
La configuración establecida a través de docker model configure persiste hasta que se elimina el modelo. Para restablecer la configuración:
$ docker model configure --context-size -1 ai/qwen2.5-coder
El uso de -1 restablece el valor predeterminado.
Qué sigue
- Motores de inferencia - Obtén información sobre llama.cpp y vLLM
- Referencia de la API - Parámetros de la API para la configuración por solicitud
- Modelos y Compose - Configura modelos en aplicaciones de Compose