1. Introducción
Descripción general
El objetivo de este lab es brindarte experiencia práctica en la implementación de un modelo abierto en Google Cloud, desde una configuración local simple hasta una implementación de nivel de producción en Google Kubernetes Engine (GKE). Aprenderás a usar diferentes herramientas adecuadas para cada etapa del ciclo de vida del desarrollo.
El lab sigue la siguiente ruta:
- Prototipado rápido: Primero, ejecutarás un modelo con Ollama de forma local para ver lo fácil que es comenzar.
- Implementación de producción: Por último, implementarás el modelo en GKE Autopilot con Ollama como un motor de entrega escalable.
Información sobre los modelos abiertos
Hoy en día, las personas suelen referirse a un "modelo abierto" como un modelo de aprendizaje automático generativo que está disponible públicamente para que todos lo descarguen y usen. Esto significa que la arquitectura del modelo y, lo que es más importante, sus parámetros o "pesos" entrenados se publican.
Esta transparencia ofrece varias ventajas sobre los modelos cerrados, a los que, por lo general, solo se accede a través de una API restrictiva:
- Información: Los desarrolladores y los investigadores pueden "mirar debajo del capó" para comprender el funcionamiento interno del modelo.
- Personalización: Los usuarios pueden adaptar el modelo para tareas específicas a través de un proceso llamado ajuste.
- Innovación: Permite a la comunidad compilar aplicaciones nuevas e innovadoras sobre modelos existentes potentes.
La contribución de Google y la familia Gemma
Google ha sido un colaborador fundamental del movimiento de IA de código abierto durante muchos años. La revolucionaria arquitectura de Transformer, presentada en el artículo de 2017 "Attention Is All You Need", es la base de casi todos los modelos de lenguaje grandes modernos. A esto le siguieron modelos abiertos históricos como BERT, T5 y Flan-T5 ajustado por instrucciones, cada uno de los cuales superó los límites de lo que era posible y fomentó la investigación y el desarrollo en todo el mundo.
Sobre la base de esta rica historia de innovación abierta, Google presentó la familia de modelos Gemma. Los modelos de Gemma se crean a partir de la misma investigación y tecnología que se usan para los potentes modelos de Gemini de código cerrado, pero están disponibles con pesos abiertos. Para los clientes de Google Cloud, esto proporciona una potente combinación de tecnología de vanguardia y la flexibilidad del código abierto, lo que les permite controlar el ciclo de vida del modelo, integrarse con un ecosistema diverso y seguir una estrategia de múltiples nubes.
Fotos destacadas de Gemma 3
En este lab, nos enfocaremos en Gemma 3, la generación más reciente y capaz de esta familia. Los modelos de Gemma 3 son livianos, pero de última generación, diseñados para ejecutarse de manera eficiente en una sola GPU o incluso en una CPU.
- Rendimiento y tamaño: Los modelos de Gemma 3 son livianos, pero de última generación, diseñados para ejecutarse de manera eficiente en una sola GPU o incluso en una CPU. Proporcionan una calidad superior y un rendimiento de última generación (SOTA) para su tamaño.
- Modalidad: Son multimodales y capaces de controlar la entrada de texto y de imágenes para generar texto como resultado.
- Funciones clave: Gemma 3 tiene una gran ventana de contexto de 128K y admite más de 140 idiomas.
- Casos de uso: Estos modelos son adecuados para una variedad de tareas, lo que incluye la búsqueda de respuestas, el resumen y el razonamiento.
Terminología clave
A medida que trabajes con modelos abiertos, encontrarás algunos términos comunes:
- El entrenamiento previo implica entrenar un modelo en un conjunto de datos masivo y diverso para aprender patrones generales del lenguaje. Estos modelos son esencialmente potentes máquinas de autocompletado.
- El ajuste de instrucciones ajusta un modelo previamente entrenado para que siga mejor las instrucciones y los mensajes específicos. Estos son los modelos que "saben cómo chatear".
- Variantes de modelos: Por lo general, los modelos abiertos se lanzan en varios tamaños (p.ej., Gemma 3 tiene versiones de parámetros de 1B, 4B, 12B y 27B) y variantes, como el ajuste de instrucciones (-it), el entrenamiento previo o la cuantización para lograr eficiencia.
- Necesidades de recursos: Los modelos de lenguaje grandes son grandes y requieren recursos de procesamiento significativos para alojarlos. Si bien se pueden ejecutar de forma local, implementarlos en la nube proporciona un valor significativo, en especial cuando se optimizan para el rendimiento y la escalabilidad con herramientas como Ollama.
¿Por qué GKE para entregar modelos abiertos?
Este lab te guía desde la ejecución de modelos locales simples hasta una implementación de producción a gran escala en Google Kubernetes Engine (GKE). Si bien las herramientas como Ollama son excelentes para el prototipado rápido, los entornos de producción tienen un conjunto exigente de requisitos que GKE está en una posición única para satisfacer.
Para las aplicaciones de IA a gran escala, necesitas más que un modelo en ejecución; necesitas una infraestructura de entrega resistente, escalable y eficiente. GKE proporciona esta base. Aquí se explica cuándo y por qué elegirías GKE:
- Administración simplificada con Autopilot: GKE Autopilot administra la infraestructura subyacente por ti. Te enfocas en la configuración de tu aplicación, y Autopilot aprovisiona y escala los nodos automáticamente.
- Alto rendimiento y escalabilidad: Controla el tráfico exigente y variable con el escalamiento automático de GKE. Esto garantiza que tu aplicación pueda ofrecer una alta capacidad de procesamiento con baja latencia, y que se escale verticalmente según sea necesario.
- Rentabilidad a gran escala: Administra los recursos de manera eficiente. GKE puede reducir las cargas de trabajo a cero para evitar pagar por los recursos inactivos, y puedes aprovechar las VMs Spot para reducir significativamente los costos de las cargas de trabajo de inferencia sin estado.
- Portabilidad y ecosistema enriquecido: Evita la dependencia de un proveedor con una implementación portátil basada en Kubernetes. GKE también proporciona acceso al vasto ecosistema de Cloud Native (CNCF) para obtener las mejores herramientas de supervisión, registro y seguridad de su clase.
En resumen, debes pasar a GKE cuando tu aplicación de IA esté lista para la producción y requiera una plataforma diseñada para una escala, un rendimiento y una madurez operativa serios.
Qué aprenderás
En este lab, aprenderás a realizar las siguientes tareas:
- Ejecutar un modelo abierto de forma local con Ollama
- Implementar un modelo abierto en Autopilot de Google Kubernetes Engine (GKE) con Ollama para la entrega
- Comprender la progresión de los frameworks de desarrollo local a una arquitectura de entrega de nivel de producción en GKE
2. Configura el proyecto
Cuenta de Google
Si aún no tienes una Cuenta de Google personal, debes crear una Cuenta de Google.
Usa una cuenta personal en lugar de una cuenta de trabajo o de institución educativa.
Accede a la consola de Google Cloud
Accede a la consola de Google Cloud con una cuenta personal de Google.
Habilitar facturación
Configura una cuenta de facturación personal
Si configuraste la facturación con créditos de Google Cloud, puedes omitir este paso.
Para configurar una cuenta de facturación personal, ve aquí para habilitar la facturación en la consola de Cloud.
Algunas notas:
- Completar este lab debería costar menos de USD 1 en recursos de Cloud.
- Puedes seguir los pasos al final de este lab para borrar los recursos y evitar cargos adicionales.
- Los usuarios nuevos son aptos para la prueba gratuita de USD 300.
Crear un proyecto (opcional)
Si no tienes un proyecto actual que quieras usar para este lab, crea uno nuevo aquí.
3. Abre el editor de Cloud Shell
- Haz clic en este vínculo para navegar directamente al editor de Cloud Shell.
- Si se te solicita autorización en algún momento hoy, haz clic en Autorizar para continuar.

- Si la terminal no aparece en la parte inferior de la pantalla, ábrela:
- Haz clic en Ver.
- Haz clic en Terminal

- En la terminal, configura tu proyecto con este comando:
gcloud config set project [PROJECT_ID]- Ejemplo:
gcloud config set project lab-project-id-example - Si no recuerdas el ID del proyecto, puedes enumerar todos los IDs del proyecto con:
gcloud projects list
- Ejemplo:
- Deberías ver el siguiente mensaje:
Updated property [core/project].
4. Ejecuta Gemma con Ollama
Tu primer objetivo es que Gemma 3 se ejecute lo más rápido posible en un entorno de desarrollo. Usarás Ollama, una herramienta que simplifica de manera drástica la ejecución de modelos de lenguaje grandes de forma local. En esta tarea, se muestra la forma más sencilla de comenzar a experimentar con un modelo abierto.
Ollama es una herramienta gratuita de código abierto que permite a los usuarios ejecutar modelos generativos (modelos de lenguaje grandes, modelos de lenguaje visual y mucho más) de forma local en su propia computadora. Simplifica el proceso de acceso e interacción con estos modelos, lo que los hace más accesibles y permite a los usuarios trabajar con ellos de forma privada.
Instala y ejecuta Ollama
Ahora, estás listo para instalar Ollama, descargar el modelo Gemma 3 y interactuar con él desde la línea de comandos.
- En la terminal de Cloud Shell, descarga e instala Ollama:
Este comando descarga Ollama, lo instala y, luego, inicia el servicio de Ollama.curl -fsSL https://ollama.com/install.sh | sh - Inicia el servicio de Ollama en segundo plano:
ollama serve & - Extrae (descarga) el modelo Gemma 3 1B con Ollama:
ollama pull gemma3:1b - Ejecuta el modelo de forma local:
El comandoollama run gemma3:1bollama runpresenta un mensaje (>>>) para que le hagas preguntas al modelo. - Prueba el modelo con una pregunta. Por ejemplo, escribe
Why is the sky blue?y presiona INTRO. Deberías ver una respuesta similar a la siguiente:>>> Why is the sky blue? Okay, let's break down why the sky is blue – it's a fascinating phenomenon related to how light interacts with the Earth's atmosphere. Here's the explanation: **1. Sunlight and Colors:** * Sunlight appears white, but it's actually made up of all the colors of the rainbow (red, orange, yellow, green, blue, indigo, and violet). Think of a prism splitting sunlight. **2. Rayleigh Scattering:** * As sunlight enters the Earth's atmosphere... ...
- Para salir del mensaje de Ollama en la terminal, escribe
/byey presiona INTRO.
Usa el SDK de OpenAI con Ollama
Ahora que el servicio de Ollama está en ejecución, puedes interactuar con él de forma programática. Usarás el SDK de OpenAI para Python, que es compatible con la API que expone Ollama.
- En la terminal de Cloud Shell, crea y activa un entorno virtual con uv. Esto garantiza que las dependencias de tu proyecto no entren en conflicto con el Python del sistema.
uv venv --python 3.14 source .venv/bin/activate - En la terminal, instala el SDK de OpenAI:
uv pip install openai - Para crear un archivo nuevo llamado
ollama_chat.py, ingresa lo siguiente en la terminal:cloudshell edit ollama_chat.py - Pega el siguiente código de Python en
ollama_chat.py. Este código envía una solicitud al servidor local de Ollama.from openai import OpenAI client = OpenAI( base_url = 'http://localhost:11434/v1', api_key='ollama', # required by OpenAI SDK, but not used by Ollama ) response = client.chat.completions.create( model="gemma3:1b", messages=[ { "role": "user", "content": "Why is the sky blue?" }, ], ) print(response.choices[0].message.content) - Ejecuta la secuencia de comandos en tu terminal:
Después de unos segundos, verás una respuesta similar a la que recibiste desde la línea de comandos.python3 ollama_chat.py - Para probar el modo de transmisión, crea otro archivo llamado
ollama_stream.pyejecutando lo siguiente en la terminal:cloudshell edit ollama_stream.py - Pega el siguiente contenido en el archivo
ollama_stream.py. Observa el parámetrostream=Trueen la solicitud. Esto permite que el modelo muestre tokens en cuanto se generan.from openai import OpenAI client = OpenAI( base_url = 'http://localhost:11434/v1', api_key='ollama', ) stream = client.chat.completions.create( model="gemma3:1b", messages=[ { "role": "user", "content": "Why is the sky blue?" }, ], stream=True ) for chunk in stream: if chunk.choices[0].delta.content is not None: print(chunk.choices[0].delta.content, end="", flush=True) print() - Ejecuta la secuencia de comandos de transmisión en la terminal:
La respuesta ahora aparecerá token por token.python3 ollama_stream.py
La transmisión es una función útil para crear una buena experiencia del usuario en aplicaciones interactivas como chatbots. En lugar de hacer que el usuario espere a que se genere la respuesta completa, la transmisión muestra la respuesta token por token a medida que se crea. Esto proporciona comentarios inmediatos y hace que la aplicación se sienta mucho más responsiva.
Qué aprendiste: Ejecutar modelos abiertos con Ollama
Ejecutaste correctamente un modelo abierto con Ollama. Viste lo sencillo que puede ser descargar un modelo potente como Gemma 3 e interactuar con él, tanto a través de una interfaz de línea de comandos como de forma programática con Python. Este flujo de trabajo es ideal para el prototipado rápido y el desarrollo local. Ahora tienes una base sólida para explorar opciones de implementación más avanzadas.
5. Implementa Gemma con Ollama en GKE Autopilot
Para las cargas de trabajo de producción que exigen operaciones y escalabilidad simplificadas, Google Kubernetes Engine (GKE) es la plataforma de elección. En esta tarea, implementarás Gemma con Ollama en un clúster de GKE Autopilot.
Autopilot de GKE es un modo de operación en GKE en el que Google administra la configuración de tu clúster, incluidos los nodos, el escalamiento, la seguridad y otros parámetros de configuración ya establecidos. Crea una experiencia de Kubernetes verdaderamente "sin servidores", perfecta para ejecutar cargas de trabajo de inferencia sin administrar la infraestructura de procesamiento subyacente.
Prepara el entorno de GKE
Para la tarea final de implementación en Kubernetes, aprovisionarás un clúster de GKE Autopilot.
- En la terminal de Cloud Shell, configura las variables de entorno para tu proyecto y la región deseada.
export PROJECT_ID=$(gcloud config get-value project) export REGION=europe-west1 gcloud config set compute/region $REGION - Para habilitar la API de GKE para tu proyecto, ejecuta lo siguiente en la terminal:
gcloud services enable container.googleapis.com - Para crear un clúster de GKE Autopilot, ejecuta lo siguiente en la terminal:
gcloud container clusters create-auto gemma-cluster \ --region $REGION \ --release-channel rapid - Para obtener credenciales para tu clúster nuevo, ejecuta lo siguiente en la terminal:
gcloud container clusters get-credentials gemma-cluster \ --region $REGION
Implementa Ollama y Gemma
Ahora que tienes un clúster de GKE Autopilot, puedes implementar el servidor de Ollama. Autopilot aprovisionará automáticamente los recursos de procesamiento (CPU y memoria) según los requisitos que definas en tu manifiesto de implementación.
- Para crear un archivo nuevo llamado
gemma-deployment.yaml, ejecuta lo siguiente en la terminal:cloudshell edit gemma-deployment.yaml - Pega la siguiente configuración de YAML en
gemma-deployment.yaml. Esta configuración define una implementación que usa la imagen oficial de Ollama para ejecutarse en la CPU. A continuación, se explica la configuración de Autopilot:apiVersion: apps/v1 kind: Deployment metadata: name: ollama-gemma spec: replicas: 1 selector: matchLabels: app: ollama-gemma template: metadata: labels: app: ollama-gemma spec: containers: - name: ollama-gemma-container image: ollama/ollama:0.12.10 resources: requests: cpu: "8" memory: "8Gi" ephemeral-storage: "10Gi" limits: cpu: "8" memory: "8Gi" ephemeral-storage: "10Gi" # We use a script to start the server and pull the model command: ["/bin/bash", "-c"] args: - | ollama serve & OLLAMA_PID=$! echo "Waiting for Ollama server to start..." sleep 5 echo "Pulling Gemma model..." ollama pull gemma3:1b echo "Model pulled. Ready to serve." wait $OLLAMA_PID ports: - containerPort: 11434 env: - name: OLLAMA_HOST value: "0.0.0.0" --- apiVersion: v1 kind: Service metadata: name: llm-service spec: selector: app: ollama-gemma type: ClusterIP ports: - protocol: TCP port: 8000 targetPort: 11434image: ollama/ollama:latest: Especifica la imagen oficial de Docker de Ollama.resources: Solicitamos explícitamente 8 CPU virtuales y 8Gi de memoria. GKE Autopilot usa estos valores para aprovisionar el procesamiento subyacente. Como no usamos GPUs, el modelo se ejecutará en la CPU. Los 8Gi de memoria son suficientes para contener el modelo Gemma 1B y su contexto.command/args: Anulamos el comando de inicio para garantizar que el modelo se extraiga cuando se inicia el pod. La secuencia de comandos inicia el servidor en segundo plano, espera a que esté listo, extrae el modelogemma3:1by, luego, mantiene el servidor en ejecución.OLLAMA_HOST: Si se establece en0.0.0.0, se garantiza que Ollama escuche en todas las interfaces de red dentro del contenedor, lo que lo hace accesible al servicio de Kubernetes.
- En la terminal, aplica el manifiesto de implementación a tu clúster:
Autopilot tardará unos minutos en aprovisionar los recursos y en iniciar el pod. Puedes supervisarlo con:kubectl apply -f gemma-deployment.yaml Espera hasta que el estado del pod seakubectl get pods --watchRunningyREADYsea1/1antes de continuar.
Prueba el extremo de GKE
Tu servicio de Ollama ahora se ejecuta en tu clúster de GKE Autopilot. Para probarlo desde tu terminal de Cloud Shell, usarás kubectl port-forward.
- Abre una pestaña nueva de la terminal de Cloud Shell (haz clic en el ícono + en la ventana de la terminal). El comando
port-forwardes un proceso de bloqueo, por lo que necesita su propia sesión de terminal. - En la terminal nueva, ejecuta el siguiente comando para reenviar un puerto local (p.ej.,
8000) al puerto del servicio (8000): Verás un resultado que indica que se inició el reenvío. Deja esta terminal en ejecución.kubectl port-forward service/llm-service 8000:8000 - Regresa a tu terminal original.
- Envía una solicitud a tu puerto local
8000. El servidor de Ollama expone una API compatible con OpenAI y, debido al reenvío de puertos, ahora puedes acceder a ella enhttp://127.0.0.1:8000. El servicio mostrará una respuesta JSON con la finalización del modelo.curl http://127.0.0.1:8000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "gemma3:1b", "messages": [ {"role": "user", "content": "Explain why the sky is blue."} ] }'
6. Corrección
Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que usaste en este lab, sigue estos pasos para borrar el clúster de GKE.
- En la terminal de Cloud Shell, borra el clúster de GKE Autopilot:
Este comando quitará el clúster y todos los recursos asociados.gcloud container clusters delete gemma-cluster \ --region $REGION --quiet
7. Conclusión
¡Bien hecho! En este lab, recorriste varios métodos clave para implementar modelos abiertos en Google Cloud. Comenzaste con la simplicidad y la velocidad del desarrollo local con Ollama. Por último, implementaste Gemma en un entorno escalable de nivel de producción con Autopilot de Google Kubernetes Engine y el framework de Ollama.
Ahora tienes el conocimiento necesario para implementar modelos abiertos en Google Kubernetes Engine para cargas de trabajo exigentes y escalables sin administrar la infraestructura subyacente.
Resumen
En este lab, aprendiste lo siguiente:
- Qué son los modelos abiertos y por qué son importantes
- Cómo ejecutar un modelo abierto de forma local con Ollama
- Cómo implementar un modelo abierto en Google Kubernetes Engine (GKE) Autopilot con Ollama para la inferencia
Más información
- Obtén más información sobre los modelos de Gemma en la documentación oficial.
- Explora más ejemplos en el repositorio de IA generativa de Google Cloud en GitHub.
- Obtén más información sobre Autopilot de GKE.
- Explora el Vertex AI Model Garden para obtener otros modelos abiertos y propietarios disponibles.