Recursos/Entrenamiento de modelos/Prueba y despliegue de un modelo

Concepto

Inferencia y despliegue

La inferencia consiste en utilizar un modelo para generar respuestas. Un modelo entrenado debe desplegarse primero —cargando sus pesos en el hardware detrás de un endpoint—, lo cual puede tardar minutos, y luego cuesta dinero por token o por hora.

Capítulo 94 min de lectura4 referencias

Qué es

La inferencia es todo lo que ocurre después del entrenamiento: se introduce un prompt y el modelo produce una respuesta. No se aprende nada; los pesos se mantienen fijos. Cada chat de prueba, cada respuesta de evaluación, cada veredicto de juez y cada respuesta en producción es inferencia.

Cómo funciona

Un modelo genera texto un token a la vez. Primero lee todo el prompt en una sola pasada (llamado prellenado), lo cual es rápido porque todos los tokens se pueden procesar en paralelo. Luego decodifica: predice el siguiente token, lo añade y repite el proceso hasta que produce un token de finalización o alcanza un límite de longitud. Cada nuevo token necesita otra pasada por el modelo, razón por la cual las respuestas largas tardan más que las preguntas largas.

  • El tiempo hasta el primer token es principalmente prellenado: a prompts más largos, mayor es la espera antes de que aparezca algo.
  • Los tokens por segundo representan la velocidad de decodificación: determinan la rapidez con la que se transmite la respuesta.
  • La configuración de muestreo, como la temperatura, decide cómo se elige el siguiente token a partir de las probabilidades del modelo. Los valores bajos hacen que las respuestas sean más predecibles; los valores altos, más variadas.
  • Procesamiento por lotes: un servidor responde a muchas solicitudes a la vez para mantener ocupada la GPU. Los sistemas de servicio como vLLM gestionan la memoria tan bien que aumentaron el rendimiento entre 2 y 4 veces en comparación con los sistemas anteriores con la misma latencia.

Despliegue

El entrenamiento produce un conjunto de pesos almacenados en el proveedor. Para responder, esos pesos deben ser desplegados: cargados en la memoria de una o más GPU, detrás de un endpoint que acepta solicitudes. La memoria necesaria es aproximadamente el número de parámetros multiplicado por los bytes utilizados por parámetro:

por qué los modelos grandes necesitan hardware grande
memory for weights ≈ parameters × bytes per parameter

7B model  × 2 bytes (16-bit)  ≈ 14 GB
70B model × 2 bytes (16-bit)  ≈ 140 GB  → several GPUs

Asignar ese hardware, descargar los pesos y cargarlos en la memoria de la GPU es el inicio en frío. Para los modelos gestionados suele ser rápido o invisible; para los modelos abiertos en GPU dedicadas suele tardar de 10 a 40 minutos. Una vez cargado, el despliegue se mantiene en caliente y responde en segundos, durante todo el tiempo que exista.

  1. 01Elegir duracióncoste por hora mostrado por adelantado
  2. 02Desplegandocarga de pesos · arranque en frío
  3. 03Activochat · el contador avanza
  4. 04Eliminandose detiene la facturación
Un despliegue dedicado se factura por cada hora que existe, se utilice o no. El ciclo de vida finaliza al eliminarlo.
Ejemplo práctico: prueba de un modelo abierto ajustado
  1. Ha finalizado una ejecución supervisada en un modelo abierto de 8000 millones de parámetros. En precisión de 16 bits, sus pesos ocupan unos 16 GB, por lo que necesita una GPU con más memoria que esa, además de espacio para las solicitudes que se están procesando.
  2. Usted inicia un chat de prueba durante dos horas. El precio por hora se muestra antes de crear nada.
  3. Despliegue: se asigna la GPU y se cargan los pesos. Esto tarda unos 15 minutos; la facturación del despliegue ha comenzado.
  4. En vivo: cada pregunta se responde en uno o dos segundos. Usted prueba diez preguntas reales de la semana pasada.
  5. Usted termina antes y finaliza la sesión. Eliminando elimina el despliegue y la facturación se detiene. Costo: el tiempo que existió el despliegue × el precio por hora, independientemente de las pocas preguntas que haya hecho.

Errores comunes

  • Dejar un despliegue dedicado en ejecución durante la noche «por si acaso»: se factura por hora, se use o no.
  • Juzgar un modelo por su primera respuesta tras un inicio en frío, o por el tiempo de respuesta mientras aún se está cargando.
  • Probar con una configuración de muestreo diferente o un prompt del sistema distinto a los utilizados en la evaluación.
  • Esperar que un modelo ajustado sepa cosas que ocurrieron después del entrenamiento: la inferencia no aprende.

Referencias y lecturas adicionales

Las fuentes externas se abren en una pestaña nueva.

  1. 01Efficient Memory Management for Large Language Model Serving with PagedAttentionKwon et al., 2023 · arXiv · arxiv.orgEl artículo sobre vLLM: cómo los sistemas de servicio procesan solicitudes por lotes y gestionan la memoria de la GPU.
  2. 02Text Generation InferenceHugging Face docs · huggingface.coUn stack de servicio en producción para modelos abiertos, con sus características explicadas.
  3. 03Inference EndpointsHugging Face docs · huggingface.coLo que implica desplegar un modelo detrás de un endpoint gestionado.
  4. 04Cold start (computing)Wikipedia · en.wikipedia.orgLa idea general de un inicio en frío.

Convierta semanas de trabajo experto en minutos

Vea cómo Scalata se adapta a su equipo, a sus datos y a sus Controles.

Contactar con ventas