Saltar al contenido principal
Utiliza un servicio de Compute cuando necesites GPUs para una carga de trabajo persistente, como servir modelos. Un servicio es la misma ejecución genérica de contenedor que un trabajo, más puertos con nombre, una sonda de preparación (readiness) opcional y un endpoint público — Compute no tiene un esquema de despliegue ni de modelo, así que esta guía sirve con vLLM puramente como carga útil de la carga de trabajo. Los servicios con GPU se ejecutan en proveedores externos de GPU, y los servicios con CPU, en el clúster de MKA1. El ejemplo de esta guía solicita una GPU, así que se ejecuta en un proveedor externo de GPU. Las dos ubicaciones protegen los endpoints de forma distinta; consulta Acceso al endpoint. Un servicio se ejecuta hasta que lo terminas, y tú eres dueño del ciclo de vida de principio a fin: Compute nunca reinicia, reescala ni cambia revisiones a tus espaldas, así que lo que desplegaste es exactamente lo que está en ejecución. Esa previsibilidad viene con dos reglas: mantén el proceso del servidor en primer plano durante toda la vida del servicio — una carga de trabajo que sale, incluso con código 0, termina el servicio como failed — y reemplaza un servicio fallido u obsoleto creando uno nuevo.

Antes de comenzar

Necesitas: Los servicios pasan por requested → allocating → provisioning → ready, y permanecen ahí hasta que algo termina la ejecución:
  • Un fallo en cualquier fase, incluida la salida de la carga de trabajo después de ready, desmonta el servicio a través de terminating hasta failed.
  • Una terminación explícita, un límite alcanzado o un presupuesto de organización agotado terminan en terminated en su lugar.
Con una sonda de preparación, ready significa que la sonda pasó. Sin una, solo significa que la carga de trabajo se lanzó; no hace ninguna afirmación de salud a nivel de aplicación, así que declara una sonda siempre que la imagen ofrezca una ruta de salud.
La facturación comienza en la asignación, no en la disponibilidad.El gasto se acumula desde la asignación hasta que el servicio alcanza un estado terminal, incluyendo todo el tiempo de aprovisionamiento y de carga del modelo. Un servicio nunca se completa por sí solo — termínalo cuando acabes y establece limits como salvaguarda.

Acceso al endpoint

La ubicación de un servicio determina quién autentica las solicitudes a sus endpoints. Los endpoints del clúster de MKA1 siempre los autentica el gateway de API de MKA1. Envía una clave de API de MKA1 de la organización propietaria del servicio que tenga el scope read:compute, exclusivo de administradores. Una solicitud sin una clave válida recibe 401. Una clave sin read:compute, o de otra organización, recibe 403. El gateway de API elimina el encabezado Authorization y las cookies antes de reenviar la solicitud, así que tu contenedor nunca recibe la credencial de quien llama. No configures el servidor de modelos para que exija una clave propia. Los endpoints de proveedores externos de GPU son accesibles en la URL del proveedor, sin autenticación de MKA1 delante. Protégelos con la clave propia del servidor de modelos, como hace esta guía con VLLM_API_KEY.

Paso 1 - Guarda la clave del endpoint como un secreto

Pasa la clave de API de la carga de trabajo mediante secret_env, no en línea en el comando, para que nunca aparezca en las especificaciones de pod del proveedor. Omite este paso para un servicio con CPU: el gateway de API de MKA1 autentica su endpoint.
Los valores de los secretos son de solo escritura. Guarda el id sec_... devuelto para el cuerpo de creación, y el valor de la clave en sí para tus clientes.

Paso 2 - Crea el servicio

Crea el servicio con el encabezado obligatorio Idempotency-Key, exactamente igual que con los trabajos. Este ejemplo sirve Qwen2.5-0.5B-Instruct con el servidor compatible con OpenAI de vLLM, replicando la prueba de humo de la plataforma:
Notas sobre los campos: Como con los trabajos, 201 significa que la solicitud fue aceptada; los problemas de capacidad y aprovisionamiento aparecen después a través de state, reason, los registros y los eventos.

Paso 3 - Espera a que esté listo

La descarga y la carga del modelo ocurren dentro de la carga de trabajo, así que espera minutos de provisioning antes de que la sonda de preparación pase. Un servicio listo incluye sus endpoints públicos:
Si en cambio el servicio aterriza en failed, lee reason, y luego GET .../logs?source=user para la salida del propio servidor y source=system para problemas de asignación y arranque — la misma superficie de registros y eventos que los trabajos.

Paso 4 - Llama a tu endpoint

El endpoint es vLLM puro: una API compatible con OpenAI. Este ejemplo se ejecuta en un proveedor externo de GPU, así que se autentica con la clave que guardaste en el Paso 1.
Bash
En un proveedor externo de GPU, el propio vLLM rechaza una solicitud sin la clave: MKA1 no se interpone delante de ese endpoint. Para un endpoint del clúster de MKA1, envía en su lugar una clave de API de MKA1 con read:compute.
Comprueba el esquema de la url del endpoint antes de enviar cualquier cosa sensible. Los endpoints del clúster de MKA1 siempre usan https, pero un proveedor externo de GPU puede servir un endpoint sobre http plano, en cuyo caso los tokens bearer y las cargas útiles cruzan internet sin cifrar.

Paso 5 - Regístralo en el gateway LLM

Opcionalmente, registra el endpoint como un modelo propio (bring-your-own) en el gateway LLM de MKA1, para que se pueda llamar a través de la API /responses de la plataforma con claves normales de la plataforma. Agrega el endpoint a tu catálogo de modelos con una clave de un administrador o propietario de la organización. El id del catálogo nombra tu modelo de MKA1; modelId debe coincidir con el nombre del modelo que sirve vLLM. auth.value es la credencial que el gateway LLM envía a tu endpoint, así que depende de la ubicación:
  • Proveedor externo de GPU: la clave propia del servidor de modelos. El ejemplo siguiente registra el endpoint de esta guía con la clave del Paso 1.
  • Clúster de MKA1: una clave de API de MKA1 de la organización propietaria del servicio que tenga read:compute. Es preferible una clave dedicada que solo tenga ese scope. El gateway de API de MKA1 rechaza la clave propia del servidor con 401.
Bash
Luego activa el modelo del catálogo con su model_id (el id que indicaste arriba):
Bash
Los modelos con formato completions se aceptan en /responses; el gateway maneja por ti el upstream de chat-completions. Por eso el cuerpo de creación del Paso 2 pasó los flags de tool-choice a vLLM.

Paso 6 - Termina el servicio

Un servicio se ejecuta, y factura, hasta que lo detienes.
La terminación es idempotente, libera el recurso del proveedor y detiene el gasto; el registro sigue siendo legible para auditoría y uso. Terminar el servicio no elimina la entrada de catálogo que agregaste en el Paso 5. El modelo sigue activo y las solicitudes a él devuelven 404; elimínalo en el Paso 7.

Paso 7 - Elimina el modelo del gateway LLM

Si registraste el endpoint en el Paso 5, desactiva el modelo y elimina su entrada de catálogo con la misma clave de administrador o propietario de la organización:
Desactivar libera el nombre del modelo, así que las solicitudes a qwen-compute-demo dejan de resolverse; eliminarlo retira su definición del catálogo.

Servir un modelo desde mka1-repos

Para servir pesos desde mka1-repos — como la salida fusionada de un trabajo de ajuste fino, o pesos que subiste por git — cambia solo el identificador del modelo y las credenciales. Compute siempre inyecta HF_ENDPOINT en cada carga de trabajo, apuntando al endpoint de artefactos configurado para tu clúster, y vLLM resuelve los identificadores de modelo contra él. mka1-repos autentica con tu clave de API de MKA1, inyectada como HF_TOKEN mediante secret_env:
El servicio descarga los pesos desde el repositorio de tu organización al arrancar y los sirve bajo el mismo identificador, cerrando el ciclo: ajusta finamente como trabajo, publica en mka1-repos y sirve como servicio.

Supervisar el gasto

El gasto de los servicios se acumula por minuto completo desde la asignación y aparece junto a los trabajos en el endpoint de uso:
El gasto de Compute se descuenta de los mismos presupuestos de organización que cualquier otro servicio de MKA1, y un servicio que alcanza un presupuesto de la organización o sus propios limits se termina sin periodo de gracia.

Referencia de API

Para ver el esquema completo de solicitud y respuesta, abre los grupos de Compute en la Referencia de API.

Ver también