Esta guía toma como ejemplo la implementación de un modelo Llama 3.1 8B para presentar cómo crear un Endpoint sin servidor desde cero.
Paso 1: Preparar la imagen del contenedor
Debes empaquetar el entorno de ejecución en una imagen de Docker y subirla previamente a un repositorio de imágenes. Actualmente, Novita AI admite especificar “repositorio de imágenes público” y “repositorio de imágenes privado” (incluidas las credenciales de acceso al repositorio de imágenes).
Usamos el repositorio oficial de imágenes de vLLM para servir el modelo Llama 3.1 8B: vllm/vllm-openai:latest. Puedes usar esta dirección de imagen directamente.
Paso 2: Ir a la consola
Ve a la Consola Serverless, selecciona la especificación de instancia de contenedor GPU adecuada y haz clic en “Crear Endpoint”.
Actualmente, solo se admiten especificaciones de instancia RTX 4090 24GB. Habrá más opciones disponibles gradualmente; permanece atento a las actualizaciones oficiales.
Paso 3: Configurar el Endpoint sin servidor
Aquí usamos la imagen pública vllm/vllm-openai:latest como ejemplo de configuración:
- Nombre del Endpoint: Se usa para identificar de forma única tu Endpoint. El sistema generará un nombre por defecto, pero también puedes especificar uno tú mismo.
- Nombre de la aplicación: El nombre de la aplicación forma parte de la URL del Endpoint. Es opcional y admite personalización; solo se permiten letras minúsculas, números y guiones. Si no se especifica, el sistema generará uno automáticamente.
- Configuración de Worker
- Workers Min: El número mínimo de Workers que se deben conservar. Puede establecerse en 0, por lo que no se conservarán Workers cuando tu servicio no tenga solicitudes. Ten en cuenta que establecerlo en 0 puede hacer que no responda rápidamente a solicitudes posteriores. Ten cuidado si tu caso de uso requiere un tiempo de respuesta rápido.
- Workers Max: El número máximo de Workers que se deben conservar. Cuando aumenta el volumen de solicitudes de tu servicio y se activa el mecanismo de escalado automático, aumentará el número de Workers. Esta configuración limita el número máximo de Workers para ayudar a controlar los costos.
- Tiempo de inactividad (segundos): Cuando el mecanismo de escalado automático activa la desconexión de un Worker, la plataforma conservará el Worker durante el tiempo especificado para gestionar rápidamente posibles aumentos posteriores de solicitudes. Ten en cuenta que la plataforma te cobrará por este tiempo.
- Concurrencia máxima: El número máximo de solicitudes concurrentes que cada Worker puede gestionar. Cuando la concurrencia supera el valor máximo, las solicitudes se enviarán a otros Workers. Si todos los Workers están completamente ocupados, las solicitudes se pondrán en cola para su ejecución.
- GPUs/Worker: El número de GPU que ocupa cada Worker.
- Versión de CUDA: Admite especificar la versión de CUDA.
- Política de escalado:
- Retraso de cola: Ajusta el número de Workers según el tiempo de espera de las solicitudes en la cola. Debes configurar el “Tiempo de retraso de cola (segundos)”. Cuando el tiempo de espera de las solicitudes en la cola supera este valor, se activará el escalado automático. Cuando sea inferior a este valor, se activará el escalado automático para reducir la escala (combinado con el “Tiempo de inactividad (segundos)” establecido anteriormente para determinar el momento específico en que el Worker pasará a estar fuera de línea).
- Recuento de solicitudes: Ajusta el número de Workers según el número de solicitudes en la cola. Debes configurar el “Recuento máximo de solicitudes en cola”. Cuando el número de solicitudes en la cola supera este valor, se activará el escalado automático. Cuando sea inferior a este valor, se activará el escalado automático para reducir la escala (combinado con el “Tiempo de inactividad (segundos)” establecido anteriormente para determinar el momento específico en que el Worker pasará a estar fuera de línea).
- Configuración de imagen:
- Imagen del contenedor: La dirección del repositorio de imágenes, como
vllm/vllm-openai:latest.
- Credenciales del registro de contenedores: Cuando especificas un repositorio de imágenes privado, debes establecer las credenciales de acceso. Configúralo mediante Configuración - Autenticación del registro de contenedores.
- Puerto HTTP: El puerto HTTP expuesto por los Workers. El balanceador de carga reenviará las solicitudes a este puerto de los Workers; por ejemplo,
8080 en este caso.
- Comando de inicio del contenedor: El comando que se ejecuta cuando se inicia el contenedor. Por ejemplo:
--model meta-llama/Llama-3.1-8B-Instruct --max-model-len 4096.
- Configuración de almacenamiento: Aquí puedes configurar el disco del contenedor, el disco de volumen y el volumen de red. Actualmente, los tamaños del disco del contenedor y del disco de volumen son fijos. Habrá más opciones disponibles gradualmente; permanece atento a las actualizaciones oficiales.
- Otros:
- Ruta de verificación de estado: El balanceador de carga integrado realizará verificaciones de estado a través de esta ruta. Determinará si debe reenviar solicitudes al Worker en función de si el código de estado devuelto es
200, como /health.
- Variables de entorno: Aquí puedes configurar las variables de entorno de las que depende el servicio. Por ejemplo:
HUGGING_FACE_HUB_TOKEN={Your Hugging Face Access Token (with read permission)}.
Después de confirmar que la configuración es correcta, haz clic en “Implementar” para completar el proceso de creación.
Paso 4: Acceder al servicio del modelo Llama 3 8B implementado
Puedes encontrar el Endpoint sin servidor que acabas de crear en la Consola Serverless. Cuando el estado del Endpoint cambie a “Serving” y al menos un Worker esté en estado “Running”, haz clic en el botón “Copiar” para copiar la URL de acceso al servicio del modelo.
Y puedes usar el comando curl para acceder al servicio como se muestra a continuación:
Siguiente paso
A continuación, consulta el documento Administrar Endpoint sin servidor para aprender cómo consultar y modificar el endpoint sin servidor que acabas de crear.