En este instructivo, se muestra cómo implementar y entregar un gpt-oss-120b,
modelo de lenguaje con el framework de vLLM.
Implementarás este modelo en un clúster de Google Kubernetes Engine (GKE) Autopilot y
consumirás una sola máquina virtual (VM) A4 que tiene 8 GPU B200.
Este instructivo está dirigido a ingenieros de aprendizaje automático (AA), administradores y operadores de plataformas, y especialistas en datos y AA que estén interesados en usar las capacidades de organización de contenedores de Kubernetes para controlar las cargas de trabajo de inferencia.
Objetivos
- Acceder a
gpt-oss-120bcon Hugging Face - Preparar el entorno
- Crear un clúster de GKE en modo Autopilot
- Crear un secreto de Kubernetes para las credenciales de Hugging Face
- Implementar un contenedor de vLLM en tu clúster de GKE
- Interactuar con el gpt-oss modelo de lenguaje con curl.
- Realizar una limpieza
Costos
En este instructivo, se usan componentes facturables de Google Cloud, que incluyen lo siguiente:
Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios.
Antes de comenzar
- Accede a tu Google Cloud cuenta de. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
Instala Google Cloud CLI.
-
Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init -
Crea o selecciona un Google Cloud proyecto.
Roles necesarios para seleccionar o crear un proyecto
- Seleccionar un proyecto: Para seleccionar un proyecto, no se requiere un rol de IAM específico. Puedes seleccionar cualquier proyecto en el que se te haya otorgado un rol.
-
Crear un proyecto: Para crear un proyecto, necesitas el rol de creador de proyectos
(
roles/resourcemanager.projectCreator), que contiene elresourcemanager.projects.createpermiso. Obtén información para otorgar roles.
-
Crea un proyecto de: Google Cloud
gcloud projects create PROJECT_ID
Reemplaza
PROJECT_IDpor un nombre para el Google Cloud proyecto de que estás creando. -
Selecciona el Google Cloud proyecto de que creaste:
gcloud config set project PROJECT_ID
Reemplaza
PROJECT_IDpor el nombre del proyecto de Google Cloud .
-
Verifica que la facturación esté habilitada para tu Google Cloud proyecto.
Habilita la API necesaria:
Roles necesarios para habilitar las APIs
Para habilitar las APIs, necesitas el rol de IAM de administrador de Service Usage (
roles/serviceusage.serviceUsageAdmin), que contiene elserviceusage.services.enablepermiso. Obtén información para otorgar roles.gcloud services enable container.googleapis.com
-
Instala Google Cloud CLI.
-
Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init -
Crea o selecciona un Google Cloud proyecto.
Roles necesarios para seleccionar o crear un proyecto
- Seleccionar un proyecto: Para seleccionar un proyecto, no se requiere un rol de IAM específico. Puedes seleccionar cualquier proyecto en el que se te haya otorgado un rol.
-
Crear un proyecto: Para crear un proyecto, necesitas el rol de creador de proyectos
(
roles/resourcemanager.projectCreator), que contiene elresourcemanager.projects.createpermiso. Obtén información para otorgar roles.
-
Crea un proyecto de: Google Cloud
gcloud projects create PROJECT_ID
Reemplaza
PROJECT_IDpor un nombre para el Google Cloud proyecto de que estás creando. -
Selecciona el Google Cloud proyecto de que creaste:
gcloud config set project PROJECT_ID
Reemplaza
PROJECT_IDpor el nombre del proyecto de Google Cloud .
-
Verifica que la facturación esté habilitada para tu Google Cloud proyecto.
Habilita la API necesaria:
Roles necesarios para habilitar las APIs
Para habilitar las APIs, necesitas el rol de IAM de administrador de Service Usage (
roles/serviceusage.serviceUsageAdmin), que contiene elserviceusage.services.enablepermiso. Obtén información para otorgar roles.gcloud services enable container.googleapis.com
-
Otorga roles a tu cuenta de usuario. Ejecuta el siguiente comando una vez para cada uno de los siguientes roles de IAM:
roles/container.admingcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
Reemplaza lo siguiente:
PROJECT_ID: ID del proyectoUSER_IDENTIFIER: El identificador de tu cuenta de usuario Por ejemplo,myemail@example.com.ROLE: El rol de IAM que otorgas a tu cuenta de usuario
- Accede a una cuenta de Hugging Face o crea una.
Accede a gpt-oss con Hugging Face
Para usar Hugging Face para acceder a gpt-oss, haz lo siguiente:
- Accede a Hugging Face y explora el modelo gpt-oss.
- Crea un token de acceso
readde Hugging Face. - Copia y guarda el valor del token de
read access. Lo usarás más adelante en este instructivo.
Prepara el entorno
Para preparar tu entorno, establece las variables de entorno predeterminadas:
gcloud config set project PROJECT_ID
gcloud config set billing/quota_project PROJECT_ID
export PROJECT_ID=$(gcloud config get project)
export RESERVATION_URL=RESERVATION_URL
export REGION=REGION
export CLUSTER_NAME=CLUSTER_NAME
export HUGGING_FACE_TOKEN=HUGGING_FACE_TOKEN
export NETWORK=NETWORK_NAME
export SUBNETWORK=SUBNETWORK_NAME
Reemplaza lo siguiente:
PROJECT_ID: Es el ID del Google Cloud proyecto de en el que deseas crear el clúster de GKE.RESERVATION_URL: Es la URL de la reserva que deseas usar para crear tu clúster de GKE. Según el proyecto en el que existe la reserva, especifica uno de los siguientes valores:La reserva existe en tu proyecto:
RESERVATION_NAMELa reserva existe en un proyecto diferente y tu proyecto puede usar la reserva:
projects/RESERVATION_PROJECT_ID/reservations/RESERVATION_NAME
REGION: Es la región en la que deseas crear tu clúster de GKE. Solo puedes crear el clúster en la región en la que existe tu reserva.CLUSTER_NAME: Es el nombre del clúster de GKE que se creará.HUGGING_FACE_TOKEN: Es el token de acceso de Hugging Face que creaste en la sección anterior.NETWORK_NAME: Es la red que usa el clúster de GKE. Especifica uno de los siguientes valores:Si creaste una red personalizada, especifica el nombre de tu red.
De lo contrario, especifica
default.
SUBNETWORK_NAME: Es la subred que usa el clúster de GKE. Especifica uno de los siguientes valores:Si creaste una subred personalizada, especifica el nombre de tu subred. Solo puedes especificar una subred que exista en la misma región que la reserva.
De lo contrario, especifica
default.
Crea un clúster de GKE en modo Autopilot
Para crear un clúster de GKE en modo Autopilot, ejecuta el siguiente comando:
gcloud container clusters create-auto $CLUSTER_NAME \
--project=$PROJECT_ID \
--region=$REGION \
--release-channel=rapid \
--network=$NETWORK \
--subnetwork=$SUBNETWORK
La creación del clúster de GKE puede tardar un tiempo en completarse. Para verificar que Google Cloud haya terminado de crear tu clúster, ve a Clústeres de Kubernetes en la Google Cloud consola de.
Crea un secreto de Kubernetes para las credenciales de Hugging Face
Para crear un secreto de Kubernetes para las credenciales de Hugging Face, haz lo siguiente:
Configura
kubectlpara comunicarse con tu clúster de GKE:gcloud container clusters get-credentials $CLUSTER_NAME \ --location=$REGIONCrea un secreto de Kubernetes para almacenar tu token de Hugging Face:
kubectl create secret generic hf-secret \ --from-literal=hf_token=${HUGGING_FACE_TOKEN} \ --dry-run=client -o yaml | kubectl apply -f -
Implementa un contenedor de vLLM en tu clúster de GKE
Crea un archivo
vllm-gpt-oss-120b.yamlcon la implementación de vLLM que elegiste:apiVersion: apps/v1 kind: Deployment metadata: name: vllm-gpt-oss-deployment spec: replicas: 1 selector: matchLabels: app: gpt-oss template: metadata: labels: app: gpt-oss ai.gke.io/model: gpt-oss-120b ai.gke.io/inference-server: vllm examples.ai.gke.io/source: user-guide spec: containers: - name: vllm-inference image: us-docker.pkg.dev/vertex-ai/vertex-vision-model-garden-dockers/pytorch-vllm-serve:20250822_0916_RC01 resources: requests: cpu: "10" memory: "128Gi" ephemeral-storage: "240Gi" nvidia.com/gpu: "8" limits: cpu: "10" memory: "128Gi" ephemeral-storage: "240Gi" nvidia.com/gpu: "8" command: ["python3", "-m", "vllm.entrypoints.openai.api_server"] args: - --model=$(MODEL_ID) - --tensor-parallel-size=2 - --host=0.0.0.0 - --port=8000 - --max-model-len=8192 - --max-num-seqs=4 env: - name: MODEL_ID value: openai/gpt-oss-120b - name: HUGGING_FACE_HUB_TOKEN valueFrom: secretKeyRef: name: hf-secret key: hf_token volumeMounts: - mountPath: /dev/shm name: dshm livenessProbe: httpGet: path: /health port: 8000 initialDelaySeconds: 1200 periodSeconds: 10 readinessProbe: httpGet: path: /health port: 8000 initialDelaySeconds: 1200 periodSeconds: 5 volumes: - name: dshm emptyDir: medium: Memory nodeSelector: cloud.google.com/gke-accelerator: nvidia-b200 cloud.google.com/reservation-name: $RESERVATION_URL cloud.google.com/reservation-affinity: "specific" cloud.google.com/gke-gpu-driver-version: latest --- apiVersion: v1 kind: Service metadata: name: oss-service spec: selector: app: gpt-oss type: ClusterIP ports: - protocol: TCP port: 8000 targetPort: 8000 --- apiVersion: monitoring.googleapis.com/v1 kind: PodMonitoring metadata: name: vllm-gpt-oss-monitoring spec: selector: matchLabels: app: gpt-oss endpoints: - port: 8000 path: /metrics interval: 30sAplica el archivo
vllm-gpt-oss-120b.yamla tu clúster de GKE:envsubst < vllm-gpt-oss-120b.yaml | kubectl apply -f -Durante el proceso de implementación, el contenedor debe descargar el modelo
gpt-oss-120bde Hugging Face. Por este motivo, la implementación del contenedor puede tardar hasta 20 minutos en completarse.Para ver el estado de finalización, ejecuta el siguiente comando:
kubectl wait \ --for=condition=Available \ --timeout=1200s deployment/vllm-gpt-oss-deploymentLa marca
--timeout=1200spermite que el comando supervise la implementación durante un máximo de 20 minutos.
Interactúa con el modelo gpt-oss con curl
Para verificar el modelo gpt-oss que implementaste, haz lo siguiente:
Configura la redirección de puertos al modelo
gpt-oss:kubectl port-forward service/oss-service 8000:8000Abre una nueva ventana de terminal. Luego, puedes chatear con tu modelo con
curl:curl http://127.0.0.1:8000/v1/chat/completions \ -X POST \ -H "Content-Type: application/json" \ -d '{ "model": "openai/gpt-oss-120b", "messages": [ { "role": "user", "content": "Describe a sailboat in one short sentence?" } ] }'El resultado que ves es similar al siguiente:
{ "id": "chatcmpl-2235c39759c040daae23ce2addc40c0a", "object": "chat.completion", "created": 1756831629, "model": "openai/gpt-oss-120b", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "A sleek vessel gliding on water, its cloth sails billowing like captured wind.", "refusal": null, "annotations": null, "audio": null, "function_call": null, "tool_calls": [], "reasoning_content": "User asks: \"Describe a sailboat in one short sentence?\" We need to produce a short sentence description. Should comply with policy. It's fine. Provide a short sentence." }, "logprobs": null, "finish_reason": "stop", "stop_reason": null } ], "service_tier": null, "system_fingerprint": null, "usage": { "prompt_tokens": 80, "total_tokens": 142, "completion_tokens": 62, "prompt_tokens_details": null }, "prompt_logprobs": null, "kv_transfer_params": null }Observa el rendimiento del modelo
Para observar el rendimiento de tu modelo, puedes usar la integración del panel de vLLM en Cloud Monitoring. Este panel te ayuda a ver métricas de rendimiento críticas para tu modelo, como el rendimiento de tokens, la latencia de la red y las tasas de error. Para obtener información, consulta vLLM en la documentación de Monitoring.
Realizar una limpieza
Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.
Borra tu proyecto
Borra un Google Cloud proyecto de:
gcloud projects delete PROJECT_ID
Borra recursos
Para borrar la implementación y el servicio en el archivo
vllm-gpt-oss-120b.yamly el secreto de Kubernetes del clúster de GKE, ejecuta lo siguiente:kubectl delete -f vllm-gpt-oss-120b.yaml kubectl delete secret hf-secretPara borrar el clúster de GKE, haz lo siguiente:
gcloud container clusters delete $CLUSTER_NAME \ --region=$REGION