Skip to main content
Las configuraciones personalizadas pueden causar mal funcionamiento del sistema. Realiza pruebas exhaustivas antes del despliegue.

Cuándo Usar Configuraciones Personalizadas

Considera la personalización avanzada cuando:
  • Tienes modelos fine-tuned optimizados para dominios o tareas específicas
  • Necesitas parámetros de muestreo diferentes a los valores por defecto del preset
  • Quieres ejecutar múltiples modelos especializados simultáneamente (ej., uno para visión, uno para texto, uno para razonamiento)
  • Requieres modelos de familias de modelos alternativas no incluidas en los presets estándar
Antes de proceder, asegúrate de:
  • Entender los principios de gestión de memoria GPU
  • Tener acceso a repositorios de modelos HuggingFace compatibles
  • Conocer las limitaciones de tu hardware
  • Tener un entorno de prueba para validación

Familias de Modelos Soportadas

Zylon admite estas familias de modelos para configuraciones personalizadas:
Solo los modelos de estas familias están oficialmente soportados. Usar familias no soportadas puede resultar en inestabilidad del sistema.

Entendiendo la Estructura de Configuración

Todas las configuraciones personalizadas siguen este patrón:
Principios clave:
  • Cada configuración debe incluir modelos llm y embed
  • Cada modelo necesita un id único
  • La memoria GPU debe gestionarse manualmente al agregar/eliminar modelos

Caso de Uso 1: Personalizar Modelos Existentes

Objetivo: Modificar los modelos por defecto del preset sin agregar nuevos. Esto es útil para usar versiones fine-tuned de modelos existentes o ajustar parámetros de inferencia.

Cuándo Usar Este Enfoque

  • Intercambiar el modelo por defecto por una versión fine-tuned (ej., Qwen3-14B-Medical en lugar de Qwen3-14B)
  • Cambiar parámetros de muestreo (temperature, max tokens, etc.) para un comportamiento diferente
  • Usar un modelo de embeddings diferente para búsqueda semántica mejorada
  • Ajustar el tamaño de la ventana de contexto según tu caso de uso

Cómo Funciona

Como no estás agregando modelos, no necesitas preocuparte por la reasignación de memoria. Simplemente especifica los cambios del modelo en la sección config, y el preset maneja la asignación de memoria automáticamente.

Esquema de Configuración

Ejemplos

Ejemplo 1: Usar un Modelo Fine-Tuned

Reemplaza el modelo por defecto con tu versión fine-tuned específica del dominio:

Ejemplo 2: Ajustar Parámetros de Muestreo

Modifica el comportamiento de inferencia sin cambiar el modelo:

Ejemplo 3: Usar Familia de Modelo Alternativa

Cambia a una familia de modelo diferente manteniendo la misma huella de memoria:

Ejemplo 4: Modelo de Embeddings Personalizado

Usa embeddings especializados para búsqueda semántica específica del dominio:

Caso de Uso 2: Agregar Nuevos Modelos

Objetivo: Ejecutar múltiples modelos especializados simultáneamente. Esto es más complejo porque debes gestionar manualmente la asignación de memoria GPU en todos los modelos.

Cuándo Usar Este Enfoque

  • Ejecutar un modelo de visión junto con tu modelo de texto principal
  • Usar modelos diferentes para diferentes tareas (ej., modelo de razonamiento + modelo de respuesta rápida)
  • Crear pipelines especializados que requieren múltiples tipos de modelos
  • Construir sistemas multi-modales que procesan texto, imágenes, audio y otros tipos de datos

Entendiendo la Gestión de Memoria GPU

El concepto crítico: La memoria GPU es un recurso fijo que debe dividirse manualmente entre todos los modelos. Cada modelo usa una fracción de la memoria GPU total, controlada por gpuMemoryUtilization (un valor entre 0.0 y 1.0). La suma de todas las asignaciones de memoria de los modelos no puede exceder 0.95 (reservando 5% para sobrecarga del sistema). Asignación por defecto para baseline-48g:
Para agregar un nuevo modelo, debes:
  1. Reducir las asignaciones de los modelos existentes para liberar memoria
  2. Asignar la memoria liberada al nuevo modelo
  3. Ajustar las ventanas de contexto si la memoria se reduce significativamente

Entendiendo KV Cache

Para entender por qué la asignación de memoria afecta las ventanas de contexto, necesitas saber sobre KV Cache. ¿Qué es KV Cache? Durante la inferencia, los modelos de lenguaje almacenan cálculos intermedios (Keys y Values) para cada token que procesan. Esto se llama KV Cache, y es lo que permite a los modelos mantener el contexto a través de una conversación o documento sin recalcular todo desde cero. El KV Cache crece con:
  • Longitud del contexto: Más tokens en contexto = más almacenamiento de caché necesario
  • Tamaño del modelo: Modelos más grandes requieren más caché por token
  • Tamaño del lote: Procesar múltiples solicitudes simultáneamente multiplica los requisitos de caché
Desglose de asignación de memoria: Cuando asignas memoria GPU a un modelo, esa memoria se divide entre:
  1. Pesos del modelo: Los parámetros del modelo (tamaño fijo, ~2 bytes por parámetro para FP16)
  2. KV Cache: Almacenamiento para tokens de contexto (crece con la longitud del contexto)
  3. Memoria de activación: Espacio de cálculo temporal durante la inferencia
Ejemplo para un modelo de 14B parámetros:
Por qué esto importa: Si reduces la asignación total de memoria de 0.85 a 0.50, los pesos del modelo aún necesitan el mismo espacio, pero tienes significativamente menos espacio para KV Cache. Esto significa que debes reducir el parámetro contextWindow proporcionalmente para evitar errores de falta de memoria durante la inferencia. Asignaciones de KV Cache por defecto de baseline:
Establecer contextWindow demasiado alto para la memoria asignada causará errores de falta de memoria durante la inferencia, especialmente durante conversaciones largas o al procesar documentos grandes. Los errores típicamente aparecen como “CUDA out of memory” en los logs de Triton.

Proceso Paso a Paso

Paso 1: Conoce tu Memoria GPU

Primero, identifica tu memoria GPU total disponible:
Configuraciones comunes:
  • 24GB: RTX 4090, L4
  • 48GB: RTX A6000, L40, L40s
  • 80-96GB: A100, H100
Reserva 5% para sobrecarga del sistema, dejando 95% para modelos:
  • 24GB → 22.8GB utilizables
  • 48GB → 45.6GB utilizables
  • 96GB → 91.2GB utilizables

Paso 2: Calcula los Requisitos de Memoria del Modelo

La memoria del modelo depende del conteo de parámetros y la cuantización. Usa esta tabla para estimar: Notas sobre cuantización:
  • FP16: Precisión completa, mejor calidad, mayor memoria
  • FP8: Reducción de memoria del 50%, pérdida mínima de calidad
  • FP4/AWQ: Reducción de memoria del 70-75%, ligera degradación de calidad
  • La mayoría de los modelos de HuggingFace usan FP16 por defecto a menos que se especifique (ej., sufijo -AWQ, -GPTQ)
Ejemplos de cálculos para GPU de 24GB (22.8GB utilizables):

Paso 3: Convierte GB a Porcentajes de Utilización de Memoria

Una vez que conoces los requisitos en GB, convierte a gpuMemoryUtilization: Fórmula: gpuMemoryUtilization = (Model GB / Total GPU GB) Ejemplo para GPU de 24GB: Ejemplo para GPU de 48GB:
Siempre redondea ligeramente hacia abajo para dejar margen. Si el cálculo da 0.417, usa 0.40 o 0.42.

Paso 4: Ajusta las Ventanas de Contexto Basado en la Memoria

Cuando reduces la asignación de memoria de un modelo, también debes reducir su contextWindow porque hay menos espacio disponible para KV Cache. Regla general: La ventana de contexto escala aproximadamente linealmente con la huella de memoria. Ejemplos:

Paso 5: Escribe la Configuración Completa

Ahora combina todos los modelos con sus asignaciones calculadas:
Modelos cuantizados en HuggingFace: Busca sufijos como -AWQ o -GPTQ en el nombre del modelo. Si no hay sufijo, asume FP16.Ejemplos:
  • Qwen/Qwen3-14B-Instruct → FP16 (28-32GB)
  • Qwen/Qwen3-14B-Instruct-AWQ → FP4 (8-10GB)
  • mistralai/Mistral-Small-24B-Instruct-2501 → FP16 (44-48GB)

Esquema de Configuración

Reglas Críticas:
  • La suma de todos los gpuMemoryUtilization no debe exceder 1.00
  • Cada id debe ser único
  • llm y embed son obligatorios y no se pueden eliminar
  • Reducir la asignación de memoria requiere reducir contextWindow proporcionalmente

Ejemplo Completo: Configuración Multi-Modelo

Este ejemplo demuestra agregar modelos de visión y razonamiento para manejar diferentes tipos de cargas de trabajo: Escenario: Quieres tres modelos:
  1. LLM Principal para tareas de texto generales
  2. LLM de Visión para comprensión de imágenes
  3. Modelo de Audio Rápido para tareas de transcripción
Estrategia de asignación de memoria:
Configuración completa:

Mejores Prácticas para Configuraciones Multi-Modelo

  1. Comienza mínimo: Empieza con asignaciones viables más pequeñas, aumenta basado en el uso real
  2. Monitorea continuamente: Usa nvidia-smi para rastrear el consumo real de memoria
  3. Prueba individualmente: Valida que cada modelo funciona antes de combinar. Es mejor aislar problemas en lugar de depurar múltiples modelos a la vez
  4. Planifica margen: No asignes toda la memoria. Deja algo de buffer para picos de memoria
  5. Prueba de estrés: Simula cargas de trabajo pico para asegurar estabilidad bajo carga

Referencia de Parámetros de Configuración

Referencia completa de todos los parámetros disponibles.

Parámetros Principales (Todos los Modelos)

Parámetros Específicos de LLM

Parámetros Específicos de Embedding

Parámetros de Muestreo

Parámetros Multimodales (LLMs)


Lista de Verificación de Validación

Antes de desplegar configuraciones personalizadas:
  • Todos los valores de id son únicos
  • Los modelos llm y embed están presentes
  • Suma de gpuMemoryUtilization ≤ 0.95
  • promptStyle coincide con la familia del modelo
  • contextWindow apropiado para la asignación de memoria
  • tokenizer coincide o es compatible con el modelo
  • Configuración probada en entorno de staging
  • Monitoreo en su lugar para uso de memoria

Errores Comunes

  1. Exceder asignación de memoria de 1.0: Siempre verifica tus cálculos
  2. No reducir ventanas de contexto: Los contextos grandes necesitan más memoria, ajusta en consecuencia
  3. Tokenizers incompatibles: Usa tokenizers compatibles para cada modelo
  4. Estilo de prompt incorrecto: Cada familia de modelo requiere formato específico
  5. Sin pruebas: Siempre valida en no-producción primero