paint-brush
Cómo escalar la infraestructura de IA con Kubernetes y Dockerpor@dataengonline
Nueva Historia

Cómo escalar la infraestructura de IA con Kubernetes y Docker

por Natapong Sornprom6m2025/02/15
Read on Terminal Reader

Demasiado Largo; Para Leer

Las empresas utilizan cada vez más infraestructuras de inteligencia artificial (IA) para alojar y gestionar cargas de trabajo autónomas. La escalabilidad garantiza que los sistemas de IA puedan gestionar cargas de trabajo cada vez mayores sin ninguna pérdida de rendimiento. Las organizaciones utilizan Docker y Kubernetes para satisfacer estas necesidades.
featured image - Cómo escalar la infraestructura de IA con Kubernetes y Docker
Natapong Sornprom HackerNoon profile picture
0-item
1-item

Las empresas utilizan cada vez más infraestructuras de inteligencia artificial (IA) para alojar y gestionar cargas de trabajo autónomas. Ha habido una demanda significativa de escalabilidad así como infraestructuras resilientes que puedan satisfacer requisitos heterogéneos de aplicaciones o de la nube. Las organizaciones utilizan Kubernetes y Estibador para satisfacer tales necesidades porque las empresas se dan cuenta de que ambos son casos de uso altamente efectivos que brindan infraestructuras de IA escalables.


La implementación de una infraestructura de IA suele proporcionar la potencia de cálculo adecuada para ejecutar y procesar grandes conjuntos de datos. Estas exigencias pueden traducirse en la necesidad de métodos escalables que permitan que los modelos de IA se ejecuten en grandes cargas de trabajo sin perjudicar el rendimiento.

Por qué las empresas necesitan ampliar su infraestructura de IA

Sistemas de IA Sin embargo, también consumen muchos recursos y normalmente exigen una gran capacidad de procesamiento y la capacidad de procesar grandes cantidades de datos. A medida que se requieren aplicaciones de IA más avanzadas y de mayor escala, la escalabilidad se vuelve más crítica. La escalabilidad garantiza que los sistemas de IA puedan manejar cargas de trabajo cada vez mayores sin ninguna pérdida de rendimiento.

Expansión de volúmenes de datos

La creciente cantidad de datos es una preocupación para los sistemas de IA en muchas facetas. La mayoría de los modelos de IA, especialmente los basados en el aprendizaje profundo, dependen en gran medida de grandes cantidades de datos durante el entrenamiento y la inferencia. Sin embargo, sin una infraestructura escalable adecuada, el procesamiento y la interpretación de dichos datos Las enormes cantidades de datos son un obstáculo .

Rendimiento optimizado

El hardware de IA escalable permite un rendimiento confiable y estable a pesar de cargas computacionales abrumadoras. Con Kubernetes, el escalamiento horizontal de trabajos de IA es muy sencillo y el cambio de tamaño dinámico de los números de réplicas se puede realizar en función de la necesidad. Por el contrario, los contenedores Docker admiten entornos aislados y esbeltos para ejecutar modelos de IA donde el conflicto de recursos no es un cuello de botella en el rendimiento.

Gestión eficaz de los recursos

El uso eficiente de los recursos es la clave para una implementación de IA rentable y sostenible. Las solicitudes y los límites de recursos de Kubernetes permiten una gestión detallada de los recursos de CPU y memoria al evitar el aprovisionamiento insuficiente y excesivo. La gestión de recursos de Docker llena el vacío al aislar los recursos de los contenedores.

Escalado de la infraestructura de IA con Kubernetes y Docker

La contenerización es uno de los hitos en la evolución de la infraestructura de inteligencia artificial escalable. La contenerización de la aplicación de IA y sus dependencias en un contenedor Docker garantiza la coherencia en los entornos de desarrollo, prueba e implementación.


Primero, debes definir un Dockerfile para instalar el entorno. El Dockerfile es una serie de instrucciones sobre cómo crear una imagen de Docker. Declara una imagen base, las dependencias requeridas y los comandos de configuración inicial que se aplican a tu aplicación. El siguiente es un Dockerfile básico para un modelo de aprendizaje automático de Python:


 # Use an official Python runtime as a parent image FROM python:3.9-slim # Set the working directory in the container WORKDIR /usr/src/app # Copy the current directory contents into the container COPY . . # Install any needed packages specified in requirements.txt RUN pip install --no-cache-dir -r requirements.txt # Expose the port the app runs on EXPOSE 5000 # Define environment variable ENV NAME World # Run the app CMD ["python", "./app.py"]


Si el Dockerfile está listo, puedes crear la imagen de Docker y ejecutar el contenedor. Ejecuta los siguientes comandos:

 # Build the Docker image docker build -t ml-model:latest . # Run the container docker run -p 5000:5000 ml-model:latest


Implementación del modelo de IA Dockerizado en Kubernetes

Kubernetes proporciona una amplia gama de funciones de orquestación que permiten una gestión eficiente de las aplicaciones en la infraestructura en contenedores. La implementación de la imagen de Docker en Kubernetes garantiza que siempre se esté ejecutando una cantidad específica de réplicas de aplicaciones. El siguiente es un ejemplo de archivo deployment.yaml que puede usar para Implemente su modelo de aprendizaje automático Dockerizado :


 apiVersion: apps/v1 kind: Deployment metadata: name: ml-model-deployment spec: replicas: 3 selector: matchLabels: app: ml-model template: metadata: labels: app: ml-model spec: containers: - name: ml-model-container image: ml-model:latest ports: - containerPort: 5000


El fragmento de código anterior muestra cómo implementar el modelo de IA, pero también es necesario hacer que el modelo sea accesible externamente. Deberá exponerlo definiendo un servicio de Kubernetes. El service.yaml que aparece a continuación ilustra un ejemplo:


 apiVersion: v1 kind: Service metadata: name: ml-model-service spec: selector: app: ml-model ports: - protocol: TCP port: 80 targetPort: 5000 type: LoadBalancer


Utilice la herramienta de línea de comandos kubectl para aplicar las configuraciones de implementación y servicio:


 # Deploy the application kubectl apply -f deployment.yaml # Expose the service kubectl apply -f service.yaml


Escalado con Kubernetes

Kubernetes ofrece excelentes capacidades de escalado para entornos de IA, lo que maximiza el uso y el rendimiento de los recursos. El escalado horizontal se realiza agregando contenedores adicionales, y el escalado vertical implica agregar recursos adicionales, como CPU o memoria, a un contenedor.

Escalamiento horizontal

El escalamiento horizontal se utiliza para aumentar la cantidad de réplicas (pods) de un sistema de IA para manejar una mayor carga de trabajo. El proceso requiere habilitar el escalamiento dinámico según la cantidad de réplicas. El comando que se utiliza para habilitar dicho proceso es `kubectl scale`. El comando en particular se utiliza para configurar la implementación para que funcione hasta un máximo de cinco réplicas:


`kubectl scale --replicas=5 implementación/ml-model-deployment`


El comando amplía ml-model-deployment para utilizar cinco réplicas del contenedor del modelo de aprendizaje automático. El sistema aprovisiona dinámicamente más pods para alcanzar la cantidad requerida posteriormente.

Escalado automático mediante el escalador automático de pod horizontal (HPA)

Kubernetes facilita el escalado automático mediante el escalador automático de pods horizontal (HPA). El HPA ajusta dinámicamente la cantidad de réplicas en función del uso de recursos, es decir, CPU o memoria, en relación con los límites establecidos. La configuración de YAML que se muestra a continuación es un ejemplo relevante de un HPA que se escala dinámicamente para ml-model-deployment en respuesta al uso de CPU:


 apiVersion: autoscaling/v1 kind: HorizontalPodAutoscaler metadata: name: ml-model-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: ml-model-deployment minReplicas: 2 maxReplicas: 10 targetCPUUtilizationPercentage: 50


En esta configuración, scaleTargetRef se utiliza para definir la implementación que se va a escalar, es decir, ml-model-deployment. El recuento mínimo de réplicas se establece mediante MinReplicas, mientras que el recuento máximo de réplicas se controla mediante maxReplicas. Además, el porcentaje de utilización de la CPU se establece mediante targetCPUUtilizationPercentage, es decir, al 50 %.


Si el uso de la CPU supera el 50 % en todos los pods, el recuento de réplicas se amplía automáticamente a un máximo de 10. En cuanto el uso de la CPU cae por debajo del porcentaje establecido, Kubernetes reduce automáticamente el recuento de réplicas para liberar recursos.

Escalamiento vertical

El escalado horizontal se realiza principalmente para hacer frente a un mayor tráfico, mientras que el escalado vertical proporciona más recursos (como CPU o memoria) a los contenedores existentes. El proceso consiste en aumentar o reducir las solicitudes y los límites de recursos en la implementación de Kubernetes. Para aumentar los límites de CPU y memoria de ml-model-deployment, se debe abrir el archivo deployment.yaml:


 apiVersion: apps/v1 kind: Deployment metadata: name: ml-model-deployment spec: replicas: 3 selector: matchLabels: app: ml-model template: metadata: labels: app: ml-model spec: containers: - name: ml-model-container image: ml-model:latest ports: - containerPort: 5000 resources: requests: cpu: "1" memory: "2Gi" limits: cpu: "2" memory: "4Gi"


En esta configuración actualizada:

  • Las solicitudes especifican los recursos mínimos necesarios para el contenedor.
  • Los límites definen los recursos máximos que puede utilizar el contenedor.