Desplegando aplicaciones GenAI en Kubernetes Una guía paso a paso

Desplegando aplicaciones GenAI en Kubernetes Una guía detallada

En el panorama tecnológico de hoy en día, desplegar aplicaciones de IA/ML de manera eficiente y efectiva es fundamental. Kubernetes, una potente plataforma de código abierto, ha surgido como una solución líder para gestionar y escalar aplicaciones contenerizadas, asegurando que se ejecuten sin problemas en diferentes entornos.

En esta guía completa, te guiaremos paso a paso en el proceso de despliegue de cualquier aplicación de IA/ML en Kubernetes. Desde la contenerización de tu aplicación hasta la configuración de tu clúster de Kubernetes y el despliegue de tus aplicaciones de IA/ML, esta guía lo abarca todo.

¡Embárcate en esta aventura de aprendizaje juntos!

¿Por qué desplegar aplicaciones GenAI en Kubernetes?

Desplegar aplicaciones de IA/ML en Kubernetes proporciona una solución robusta para gestionar cargas de trabajo complejas de IA/ML. Uno de los principales beneficios es la escalabilidad. Kubernetes puede escalar automáticamente la infraestructura, adaptándose a diferentes cargas de trabajo de manera eficiente y asegurando que los recursos se asignen de manera efectiva según la demanda. Esta función de escalado automático es crucial para manejar los grandes cálculos involucrados en las tareas de IA/ML.

Además, Kubernetes admite entornos multi-nube e híbridos, ofreciendo flexibilidad y evitando el bloqueo del proveedor. Proporciona un entorno consistente y unificado para el desarrollo, pruebas y despliegue, mejorando la colaboración entre los científicos de datos e ingenieros.

Kubernetes también garantiza alta disponibilidad y tolerancia a fallos, reemplazando o reprogramando automáticamente los contenedores que fallan, asegurando la confiabilidad y robustez de las aplicaciones de IA/ML. Además, simplifica muchos aspectos operativos, incluyendo actualizaciones y rollbacks, permitiendo que los equipos se enfoquen más en construir modelos de IA/ML en lugar de gestionar la infraestructura.

Prerequisitos

  • Tener Docker Desktop instalado para contenerizar nuestra aplicación.
  • Tener Minikube instalado. Utilizaremos Minikube para crear un clúster de un solo nodo.
  • Descargar e instalar Node.js ya que la aplicación de ejemplo es una aplicación de Node.js.
  • Registrarse en una cuenta gratuita de la nube de la base de datos SingleStore para integrar nuestra aplicación con una base de datos.

Tutorial

Espero que tengas una cuenta de GitHub.

Primero, clonaremos el repositorio disponible en openai-quickstart-node en nuestra máquina local.

git clone https://github.com/pavanbelagatti/openai-quickstart-node.git

Naveguemos hasta el directorio del proyecto.

cd openai-quickstart-node

Instalemos los requisitos y dependencias del proyecto.

npm install

Crea un archivo .env y agrega tu Clave de API de OpenAI.

touch .env

En tu archivo .env, agrega la Clave de API de OpenAI como una variable de entorno, como se muestra a continuación.

OPENAI_API_KEY=<Agrega tu Clave de API de OpenAI>

Ejecutemos la aplicación utilizando el siguiente comando.

npm run dev

Deberías ver la aplicación en el Puerto Local 3000.

Escribamos un Dockerfile para Contenerizar Nuestra Aplicación

Agreguemos las siguientes instrucciones de Dockerfile en él.

Compilaremos, etiquetaremos y enviaremos esto a nuestro DockerHub.

docker build -t <nombre de la imagen> .

Nota: Estoy nombrando mi imagen como generativeai-node-app

Despleguemos nuestro contenedor.

¡La imagen está creada! Es hora de lanzar el contenedor de Docker con los puertos asignados utilizando el siguiente comando:

docker run -p 3002:3002 generativeai-node-app

Compilémoslo nuevamente con nuestras credenciales de DockerHub.

docker build -t <nombre de usuario de DockerHub>/<nombre de la imagen> .

Vamos a enviar la imagen a DockerHub.

docker push <tu nombre de usuario de DockerHub>/<nombre de la imagen>

Puedes confirmar si la imagen ha sido enviada yendo a tu DockerHub.

Implementar y Exponer Nuestra Aplicación en Kubernetes

Para implementar y exponer la aplicación, necesitamos dos archivos yaml: deployment.yaml y service.yaml.

Un archivo contiene las instrucciones para la implementación y el otro para la exposición del servicio.

Veamos primero nuestro archivo deployment.yaml.

A continuación se muestra nuestro archivo service.yaml.

Estamos utilizando Minikube para crear un clúster de Kubernetes de un solo nodo y lo usaremos para implementar nuestra aplicación.

Inicia Minikube utilizando el siguiente comando.

minikube start

Deberías ver la siguiente salida.

Nota: Mantén Docker Desktop en ejecución y habilita Kubernetes en él. La siguiente imagen es solo de referencia.

Aplica nuestro archivo de implementación utilizando el siguiente comando.

kubectl apply -f deployment.yaml

De forma similar, aplica nuestro archivo yaml de servicio.

kubectl apply -f service.yaml

Verifiquemos primero el estado de nuestros pods utilizando el siguiente comando.

kubectl get pods

Deberías ver la salida deseada como se muestra a continuación.

Comprobemos el estado de implementación de nuestra aplicación para ver si los pods deseados se están ejecutando como se espera.

kubectl get deployment

Comprobemos el estado del servicio de nuestra aplicación.

kubectl get service

Veamos si podemos exponer nuestra aplicación y acceder a ella.

minikube service <añade el nombre de tu servicio de aplicación> --url

Deberías ver la siguiente salida y podrás acceder a tu aplicación.

Puedes ver el enlace URL para ir y acceder a nuestra aplicación.

¡Felicitaciones! Hemos contenerizado nuestra aplicación, la hemos implementado y expuesto utilizando Kubernetes.

Integración de una Base de Datos para Nuestra Aplicación

Después de implementar y exponer con éxito tu aplicación de IA/ML en Kubernetes, es posible que necesites una base de datos sólida y escalable para manejar los datos de tu aplicación. SingleStore es una base de datos SQL de alto rendimiento y escalable que es adecuada para aplicaciones de IA/ML. En esta sección, te guiaremos a través del proceso de integrar SingleStore en tu aplicación implementada en Kubernetes.

Necesitarás una cuenta gratuita de SingleStore Cloud.

  • Crea un espacio de trabajo y luego crea una base de datos y una tabla adecuada para tu aplicación.

Ve al editor de SQL como se muestra en la siguiente imagen.

Crear una Nueva Base de Datos Usando la Siguiente Instrucción SQL

-- crear una basede datosCREATE DATABASE <nombre de la base de datos>;

A continuación, cambia a la nueva base de datos utilizando el comando USE.

USE <nombre de la base de datos>;

Luego, crea una tabla en la nueva base de datos con el esquema deseado.

-- crear una tablaCREATE TABLE <nombre de la tabla> ();

Puedes pegar estos comandos SQL en el Editor de SQL, resaltarlos y luego hacer clic en el botón Ejecutar

Puedes encontrar todo el proceso de creación de una base de datos, tablas y alimentación de información en las tablas en este tutorial.

Actualizar la Configuración de Implementación de Kubernetes

Si tu base de datos SingleStore se está ejecutando fuera del clúster de Kubernetes, actualiza la configuración de implementación de Kubernetes de tu aplicación para permitir conexiones a la base de datos SingleStore.

Volver a Implementar Tu Aplicación

Aplica la configuración de implementación de Kubernetes actualizada para volver a implementar tu aplicación con la integración de SingleStore.

kubectl apply -f deployment.yaml

Verificar la Integración

Después de la reasignación, verifica que tu aplicación esté conectada de manera exitosa a la base de datos de SingleStore y esté realizando operaciones en la base de datos según lo esperado.

Al seguir estos pasos, has integrado exitosamente la base de datos de SingleStore en tu aplicación de IA/ML desplegada en Kubernetes, proporcionando una solución robusta y escalable para gestionar los datos de tu aplicación.

Conclusión

¡Felicitaciones por navegar exitosamente a través de los completos pasos para desplegar una aplicación de IA/ML en Kubernetes! Esta guía te ha guiado a través de cada fase esencial, desde la contenerización de tu aplicación hasta el despliegue y exposición en Kubernetes.

A medida que continúas explorando y mejorando tus despliegues de IA/ML, considera integrar una base de datos de alto rendimiento como SingleStore para gestionar los datos de tu aplicación de manera perfecta. SingleStore ofrece escalabilidad, velocidad y eficiencia, asegurando que tus aplicaciones de IA/ML se ejecuten de manera óptima con una base de datos sólida.

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

Superconductor LK-99 Tal vez un avance, tal vez solo una nueva esperanza

Expertos se oponen a afirmaciones extraordinarias sobre un superconductor a temperatura ambiente. Pero incluso un fra...

Inteligencia Artificial

La Carrera para Regular la Inteligencia Artificial

Por qué Europa tiene ventaja sobre América y China.

Inteligencia Artificial

Anunciando nuevas herramientas para ayudar a cada negocio a aprovechar la IA generativa

Desde startups hasta empresas, organizaciones de todos los tamaños están comenzando a utilizar la IA generativa. Quie...

Inteligencia Artificial

El Ejército de los Estados Unidos pone a prueba la Inteligencia Artificial Generativa

El Departamento de Defensa de los Estados Unidos está probando cinco modelos de lenguaje grandes como parte de un esf...

Inteligencia Artificial

IA en movimiento

Si 2023 fue el año de los LLM (modelos de lenguaje grandes), entonces 2024 será el año de los LMM (modelos multimodal...