Compartir comentarios
Las respuestas se generan en base a la documentación.

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:

MotorComportamiento predeterminado
llama.cpp4096 tokens
vLLMUtiliza el tamaño de contexto máximo entrenado del modelo
Note

El 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: 8192

Directrices para el tamaño del contexto

Tamaño del contextoCaso de uso típicoImpacto en memoria
2,048Consultas sencillas, fragmentos de código cortosBajo
4,096Conversaciones estándar, archivos de código medianosModerado
8,192Conversaciones largas, archivos de código más grandesMayor
16,384+Documentos extensos, contexto de múltiples archivosAlto
Important

Los 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
Note

El comando docker model inspect muestra 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 con docker model configure --context-size y 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

BanderaDescripciónPredeterminadoRango
--tempTemperatura para el muestreo. Menor = más determinista, mayor = más creativo0.80.0-2.0
--top-kLimita el muestreo a los mejores K tokens. Menor = más enfocado401-100
--top-pUmbral de muestreo nucleus. Menor = más enfocado0.90.0-1.0
--min-pUmbral de probabilidad mínima0.050.0-1.0
--repeat-penaltyPenalización por repetición de tokens1.11.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

BanderaDescripciónPredeterminadoNotas
--threadsHilos de CPU para la generaciónAutoEstablecer en el número de núcleos de rendimiento
--threads-batchHilos de CPU para el procesamiento por lotesAutoGeneralmente el mismo que --threads
--batch-sizeTamaño del lote para el procesamiento del prompt512Mayor = procesamiento de prompts más rápido
--mlockBloquear el modelo en memoriaDesactivadoEvita el intercambio (swapping), requiere RAM suficiente
--no-mmapDeshabilitar el mapeo de memoriaDesactivadoPuede mejorar el rendimiento en algunos sistemas

Ejemplo: Optimizado para CPU multinúcleo

runtime_flags:
  - "--threads"
  - "8"
  - "--batch-size"
  - "1024"

Parámetros de GPU

BanderaDescripciónPredeterminadoNotas
--n-gpu-layersCapas a descargar en la GPUTodas (si hay GPU disponible)Reducir si te quedas sin VRAM
--main-gpuGPU a utilizar para el cálculo0Para sistemas con varias GPU
--split-modeCómo dividir el trabajo entre las GPUlayerOpciones: none, layer, row

Ejemplo: Descarga parcial en GPU (VRAM limitada)

runtime_flags:
  - "--n-gpu-layers"
  - "20"

Parámetros avanzados

BanderaDescripciónPredeterminado
--rope-scalingMétodo de escalado RoPEAuto
--rope-freq-baseFrecuencia base de RoPEPredeterminada del modelo
--rope-freq-scaleEscala de frecuencia de RoPEPredeterminada del modelo
--no-prefill-assistantDeshabilitar el prellenado del asistenteDesactivado
--reasoning-budgetPresupuesto de tokens para modelos de razonamiento0 (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:

VariableDescripción
LLM_URLURL inyectada automáticamente del endpoint del modelo
LLM_MODELIdentificador 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