Capítulo 8: Aprendizaje Automático en la Nube y Computación en el Borde
8.1 Ejecución de Modelos de Machine Learning en la Nube (AWS, Google Cloud, Azure)
A medida que el volumen de datos continúa creciendo exponencialmente y la inteligencia artificial se vuelve cada vez más prevalente, las organizaciones están migrando rápidamente sus flujos de trabajo de machine learning hacia soluciones basadas en la nube. Las principales plataformas en la nube, como Amazon Web Services (AWS), Google Cloud Platform (GCP) y Microsoft Azure, ofrecen infraestructura y servicios integrales que simplifican significativamente los procesos de entrenamiento, implementación y escalabilidad de modelos de machine learning. Estas plataformas proporcionan una gran cantidad de recursos y herramientas que permiten a los científicos de datos y desarrolladores centrarse en el desarrollo de modelos en lugar de la gestión de infraestructura.
En este capítulo, exploraremos los siguientes temas clave:
- Aprovechando las plataformas en la nube para machine learning: Un análisis en profundidad de la ejecución de modelos de machine learning sofisticados en AWS, Google Cloud y Azure, incluidos las mejores prácticas y características específicas de cada plataforma.
- Implementación fluida de modelos de machine learning: Técnicas y estrategias para implementar modelos de machine learning como servicios escalables y listos para producción, con una configuración mínima y en poco tiempo.
- Adopción de la computación en el edge en machine learning: Una introducción exhaustiva a la computación en el edge y sus implicaciones para el machine learning, incluyendo métodos para optimizar los modelos para que funcionen de manera eficiente en dispositivos con recursos limitados, como teléfonos inteligentes, dispositivos de Internet de las Cosas (IoT) y servidores edge.
Al abordar nuestro primer tema, Ejecución de Modelos de Machine Learning en la Nube, exploraremos cómo estas poderosas plataformas en la nube pueden aprovecharse para gestionar de manera eficiente el entrenamiento y la implementación a gran escala de modelos, revolucionando la forma en que las organizaciones abordan los proyectos de machine learning.
Las plataformas en la nube han revolucionado el panorama del desarrollo e implementación de modelos de machine learning, ofreciendo una escalabilidad y accesibilidad sin precedentes para desarrolladores y científicos de datos. Estas plataformas eliminan la necesidad de inversiones iniciales significativas en hardware costoso, democratizando el acceso a potentes recursos computacionales. Al aprovechar la infraestructura en la nube, las organizaciones pueden asignar recursos de manera dinámica según sus necesidades, permitiéndoles abordar problemas complejos de machine learning que antes estaban fuera de su alcance.
La suite integral de servicios proporcionada por las plataformas en la nube va más allá del simple poder computacional. Ofrecen soluciones de extremo a extremo que cubren todo el ciclo de vida del machine learning, desde la preparación de datos y el entrenamiento de modelos hasta su implementación y monitoreo. Los entornos administrados para el entrenamiento de modelos abstraen las complejidades de la computación distribuida, permitiendo a los científicos de datos centrarse en el desarrollo de algoritmos en lugar de la gestión de infraestructura. Estas plataformas también proporcionan opciones robustas de implementación, facilitando la integración fluida de modelos de machine learning en entornos de producción.
Además, las plataformas en la nube facilitan la colaboración y el intercambio de conocimientos entre los miembros del equipo, fomentando la innovación y acelerando el ritmo de desarrollo. Ofrecen sistemas de control de versiones, seguimiento de experimentos y características de reproducibilidad que son cruciales para mantener las mejores prácticas en los proyectos de machine learning. La escalabilidad de la infraestructura en la nube también permite experimentar fácilmente con diferentes arquitecturas de modelos e hiperparámetros, permitiendo iteraciones rápidas y mejoras de los modelos de machine learning.
8.1.1 Amazon Web Services (AWS)
AWS ofrece una plataforma integral de machine learning llamada Amazon SageMaker, que revoluciona todo el flujo de trabajo de machine learning. SageMaker proporciona una solución de extremo a extremo para científicos de datos y desarrolladores, simplificando el proceso de construcción, entrenamiento e implementación de modelos de machine learning a gran escala. Este servicio potente aborda muchos de los desafíos asociados con los flujos de trabajo tradicionales de machine learning, como la gestión de infraestructura, la preparación de datos y la optimización de modelos.
El ecosistema de Amazon SageMaker incluye varios componentes clave que funcionan de manera fluida:
- SageMaker Studio: Este entorno de desarrollo integrado (IDE) completamente integrado sirve como un centro central para proyectos de machine learning. Ofrece un espacio de trabajo colaborativo donde los científicos de datos pueden escribir código, experimentar con modelos y visualizar resultados. SageMaker Studio admite cuadernos populares como Jupyter, lo que facilita que los equipos compartan conocimientos y realicen iteraciones en los modelos de manera eficiente.
- SageMaker Training: Este componente aprovecha el poder de la computación distribuida para acelerar el entrenamiento de modelos. Proporciona y gestiona automáticamente la infraestructura necesaria, permitiendo a los usuarios centrarse en el desarrollo de algoritmos en lugar de la gestión de recursos. SageMaker Training admite varios frameworks de machine learning, incluidos TensorFlow, PyTorch y scikit-learn, brindando flexibilidad en el desarrollo de modelos.
- SageMaker Inference: Una vez que un modelo ha sido entrenado, SageMaker Inference se encarga de implementarlo como un servicio escalable y listo para producción. Maneja las complejidades de configurar puntos finales, gestionar recursos de cómputo y realizar escalado automático en función del tráfico entrante. Este servicio admite inferencias tanto en tiempo real como por lotes, atendiendo a diversas necesidades de aplicación.
- SageMaker Ground Truth: Esta función simplifica el proceso, a menudo largo, de etiquetado de datos. Proporciona herramientas para crear conjuntos de datos de entrenamiento de alta calidad, incluyendo soporte para flujos de trabajo de etiquetado humano y etiquetado automatizado utilizando técnicas de aprendizaje activo.
- SageMaker Experiments: Este componente ayuda a organizar, rastrear y comparar experimentos de machine learning. Captura automáticamente parámetros de entrada, configuraciones y resultados, lo que permite a los científicos de datos reproducir experimentos y realizar iteraciones en los modelos de manera más efectiva.
Al integrar estos componentes potentes, Amazon SageMaker reduce significativamente las barreras de entrada para proyectos de machine learning, permitiendo a las organizaciones desarrollar e implementar rápidamente soluciones sofisticadas de IA en varios dominios. Ya sea que estés trabajando en visión por computadora, procesamiento del lenguaje natural o análisis predictivo, SageMaker proporciona las herramientas y la infraestructura para dar vida a tus ideas de machine learning de manera eficiente y a gran escala.
Ejemplo: Entrenamiento de un Modelo de Machine Learning en AWS SageMaker
A continuación, se muestra un ejemplo de cómo entrenar un modelo simple de machine learning (por ejemplo, un árbol de decisión) utilizando SageMaker en AWS:
import sagemaker
from sagemaker import get_execution_role
from sagemaker.sklearn.estimator import SKLearn
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
import pandas as pd
import numpy as np
# Define the AWS role and set up the SageMaker session
role = get_execution_role()
sagemaker_session = sagemaker.Session()
# Prepare the Iris dataset
iris = load_iris()
X, y = iris.data, iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Create a DataFrame and save it to S3
train_data = pd.DataFrame(np.column_stack((X_train, y_train)),
columns=['sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'target'])
train_data_s3 = sagemaker_session.upload_data(
path=train_data.to_csv(index=False),
key_prefix='sagemaker/sklearn-iris'
)
# Define the SKLearn estimator
sklearn_estimator = SKLearn(
entry_point='iris_train.py',
role=role,
instance_count=1,
instance_type='ml.m5.large',
framework_version='0.23-1',
hyperparameters={
'max_depth': 5,
'n_estimators': 100
}
)
# Train the model
sklearn_estimator.fit({'train': train_data_s3})
# Deploy the trained model
predictor = sklearn_estimator.deploy(
initial_instance_count=1,
instance_type='ml.t2.medium'
)
# Make predictions
test_data = X_test[:5].tolist()
predictions = predictor.predict(test_data)
print(f"Predictions: {predictions}")
# Clean up
predictor.delete_endpoint()
Este ejemplo de código ampliado demuestra un flujo de trabajo más completo para entrenar e implementar un modelo de machine learning utilizando Amazon SageMaker. Desglosémoslo paso a paso:
- Importar las bibliotecas necesarias:
- SDK de SageMaker para interactuar con los servicios de AWS
- Scikit-learn para manejo y preprocesamiento de conjuntos de datos
- Pandas y NumPy para la manipulación de datos
- Configurar la sesión y el rol de SageMaker:
- Recuperar el rol de ejecución para SageMaker
- Inicializar una sesión de SageMaker
- Preparar el conjunto de datos:
- Cargar el conjunto de datos Iris usando scikit-learn
- Dividir los datos en conjuntos de entrenamiento y prueba
- Subir los datos de entrenamiento a S3:
- Convertir los datos de entrenamiento a un DataFrame
- Subir los datos a un bucket de S3 usando la sesión de SageMaker
- Definir el estimador de SKLearn:
- Especificar el script de entrada (iris_train.py)
- Configurar el tipo y la cantidad de instancias
- Elegir la versión del framework
- Establecer los hiperparámetros para el modelo
- Entrenar el modelo:
- Llamar al método fit en el estimador, pasando la ubicación en S3 de los datos de entrenamiento
- Implementar el modelo entrenado:
- Implementar el modelo en un endpoint de SageMaker
- Especificar el tipo y la cantidad de instancias para el endpoint
- Hacer predicciones:
- Usar el modelo implementado para hacer predicciones en los datos de prueba
- Limpiar:
- Eliminar el endpoint para evitar cargos innecesarios
Este ejemplo muestra un escenario realista, que incluye la preparación de datos, la especificación de hiperparámetros y la gestión adecuada de recursos. También demuestra cómo manejar todo el ciclo de vida de un modelo de machine learning en SageMaker, desde el entrenamiento hasta la implementación y la predicción.
8.1.2 Google Cloud Platform (GCP)
La AI Platform de Google Cloud ofrece un ecosistema robusto para los profesionales de machine learning, brindando un conjunto de herramientas y servicios que cubren todo el ciclo de vida del ML. Esta plataforma integral está diseñada para agilizar el proceso de desarrollo, entrenamiento e implementación de modelos sofisticados de machine learning, con un énfasis particular en la integración con el poderoso framework TensorFlow de Google.
La integración fluida de AI Platform con TensorFlow permite a los desarrolladores aprovechar todo el potencial de esta biblioteca de código abierto, facilitando la creación e implementación de modelos complejos de deep learning con relativa facilidad. Esta sinergia entre Google Cloud y TensorFlow crea un entorno potente para construir soluciones de inteligencia artificial de vanguardia en diversos dominios, como la visión por computadora, el procesamiento del lenguaje natural y el análisis predictivo.
Algunas de las características destacadas de la AI Platform de Google Cloud incluyen:
- AI Platform Notebooks: Esta función proporciona un entorno de cuadernos Jupyter totalmente administrado, ofreciendo a los científicos de datos e ingenieros de ML un espacio de trabajo flexible e interactivo para el desarrollo de modelos. Estos cuadernos pueden conectarse sin problemas a GPUs (Unidades de Procesamiento Gráfico) y TPUs (Unidades de Procesamiento Tensorial) de alto rendimiento, los aceleradores de IA diseñados a medida por Google. Esta capacidad permite una rápida creación de prototipos y experimentación con modelos computacionalmente intensivos, reduciendo significativamente el tiempo desde el concepto hasta la implementación.
- AI Platform Training: Este servicio robusto está diseñado para manejar las complejidades del entrenamiento de modelos de machine learning en conjuntos de datos a gran escala. Aprovechando los recursos de computación distribuida, permite a los usuarios entrenar modelos mucho más rápido de lo que sería posible en una sola máquina. Este servicio admite una amplia gama de frameworks de ML y puede escalar automáticamente los recursos según los requisitos del trabajo de entrenamiento, facilitando desde pequeños experimentos hasta el entrenamiento de modelos de producción a gran escala.
- AI Platform Prediction: Una vez que un modelo ha sido entrenado, este servicio facilita su implementación como una API REST escalable. Admite tanto predicciones en tiempo real para aplicaciones sensibles a la latencia como predicciones por lotes para tareas de inferencia a gran escala. El servicio gestiona la infraestructura subyacente, permitiendo a los desarrolladores centrarse en el rendimiento del modelo y la integración de aplicaciones, sin preocuparse por la gestión de servidores y el escalado.
Estas características, que trabajan en conjunto, proporcionan un entorno poderoso y flexible para proyectos de machine learning de todos los tamaños. Ya sea que seas un científico de datos que trabaja solo en una prueba de concepto o parte de un gran equipo que implementa sistemas críticos de IA, la AI Platform de Google Cloud ofrece las herramientas y la escalabilidad necesarias para respaldar tus necesidades.
Ejemplo: Entrenamiento de un Modelo TensorFlow en Google Cloud AI Platform
A continuación, se muestra cómo entrenar un modelo de TensorFlow en la AI Platform de Google Cloud:
# Import necessary libraries
from google.cloud import storage
from google.cloud import aiplatform
# Set up Google Cloud project and bucket
project_id = 'my-google-cloud-project'
bucket_name = 'my-ml-bucket'
region = 'us-central1'
# Initialize clients
storage_client = storage.Client(project=project_id)
aiplatform.init(project=project_id, location=region)
# Create a bucket if it doesn't exist
bucket = storage_client.lookup_bucket(bucket_name)
if bucket is None:
bucket = storage_client.create_bucket(bucket_name)
print(f"Bucket {bucket_name} created.")
else:
print(f"Bucket {bucket_name} already exists.")
# Upload training data to Cloud Storage
blob = bucket.blob('training-data/train_data.csv')
blob.upload_from_filename('train_data.csv')
print(f"Training data uploaded to gs://{bucket_name}/training-data/train_data.csv")
# Define the AI Platform training job using Python Package Training
job_display_name = 'my-tf-job'
python_package_gcs_uri = f'gs://{bucket_name}/trainer/tensorflow-trainer.tar.gz'
python_module_name = 'trainer.task'
job = aiplatform.CustomPythonPackageTrainingJob(
display_name=job_display_name,
python_package_gcs_uri=python_package_gcs_uri,
python_module_name=python_module_name,
container_uri='us-docker.pkg.dev/vertex-ai/training/tf-cpu.2-3:latest'
)
# Define dataset
dataset = aiplatform.TabularDataset.create(
display_name='my_dataset',
gcs_source=[f'gs://{bucket_name}/training-data/train_data.csv']
)
# Define training parameters
training_fraction_split = 0.8
validation_fraction_split = 0.1
test_fraction_split = 0.1
# Start the training job
model = job.run(
dataset=dataset,
model_display_name='my-tf-model',
training_fraction_split=training_fraction_split,
validation_fraction_split=validation_fraction_split,
test_fraction_split=test_fraction_split,
sync=True
)
print(f"Model training completed. Model resource name: {model.resource_name}")
# Deploy the model to an endpoint
endpoint = aiplatform.Endpoint.create(display_name="my-tf-endpoint")
endpoint.deploy(
model=model,
machine_type='n1-standard-4',
min_replica_count=1,
max_replica_count=2,
sync=True
)
print(f"Model deployed to endpoint: {endpoint.resource_name}")
Este ejemplo de código demuestra un flujo de trabajo integral para el entrenamiento e implementación de un modelo de machine learning utilizando Google Cloud Vertex AI.
- Importar Bibliotecas Necesarias
- Importamos los módulos requeridos de Google Cloud Storage y Google Cloud AI Platform.
- El
storage.Client
se utiliza para interactuar con Cloud Storage. - El
aiplatform
SDK se utiliza para gestionar el entrenamiento e implementación de IA.
- Configurar Proyecto y Bucket de Google Cloud
- Definimos:
project_id
: El proyecto de Google Cloud donde se crearán los recursos de IA.bucket_name
: El bucket de Cloud Storage utilizado para almacenar datos de entrenamiento y artefactos del modelo.region
: La región de cómputo donde se ejecutarán los trabajos de IA.
- Inicializamos:
- Cliente de Google Cloud Storage para gestionar operaciones de almacenamiento.
- Google AI Platform (
aiplatform
) para manejar flujos de trabajo de IA.
- Definimos:
- Crear un Bucket de Cloud Storage (Si No Existe)
- Verificamos si el bucket especificado existe.
- Si el bucket no existe, creamos uno nuevo.
- Esto asegura una configuración de almacenamiento adecuada antes de proceder con la carga de datos.
- Cargar Datos de Entrenamiento a Cloud Storage
- Cargamos un archivo CSV (
train_data.csv
) que contiene el conjunto de datos de entrenamiento a Cloud Storage. - Esto permite que el trabajo de entrenamiento de AI Platform acceda a datos estructurados de entrenamiento.
- Cargamos un archivo CSV (
- Definir el Trabajo de Entrenamiento de AI Platform
- Definimos un Trabajo de Entrenamiento de Paquete Python Personalizado, que permite un entrenamiento flexible de modelos usando scripts de Python.
- Componentes clave:
- Nombre del trabajo: Un nombre amigable para rastrear el trabajo de entrenamiento.
- Ubicación del paquete Python: Especifica el script de entrenamiento (
tensorflow-trainer.tar.gz
) almacenado en Cloud Storage. - Nombre del módulo Python: Especifica el punto de entrada (
trainer.task
) para ejecutar el trabajo de entrenamiento. - URI del contenedor: Especifica el contenedor de entrenamiento de TensorFlow que ejecuta el trabajo.
- Crear y Preparar el Dataset
- Creamos un Dataset de Vertex AI a partir del archivo CSV cargado.
- El dataset se utiliza para entrenamiento, validación y pruebas.
- Definir Parámetros de Entrenamiento
- Dividimos el dataset en:
- 80% Entrenamiento
- 10% Validación
- 10% Pruebas
- Estas proporciones de división ayudan al modelo a aprender y generalizar efectivamente.
- Dividimos el dataset en:
- Ejecutar el Trabajo de Entrenamiento
- Iniciamos el trabajo de entrenamiento con:
- El dataset.
- El nombre de visualización del modelo.
- La división de entrenamiento-validación-prueba.
sync=True
asegura que el script espere hasta que el entrenamiento se complete antes de continuar.
- Iniciamos el trabajo de entrenamiento con:
- Implementar el Modelo Entrenado
- Después del entrenamiento, implementamos el modelo para servir predicciones.
- Pasos:
- Crear un endpoint para alojar el modelo.
- Implementar el modelo en el endpoint.
- Configurar la implementación:
- Tipo de máquina:
n1-standard-4
. - Auto-escalado: Mínimo 1 réplica, Máximo 2 réplicas.
- Tipo de máquina:
- Ciclo de Vida Completo de un Modelo de Machine Learning en Google CloudEste ejemplo demuestra:
- Preparación de Datos: Carga y organización de datos de entrenamiento en Cloud Storage.
- Entrenamiento del Modelo: Ejecución de un trabajo de entrenamiento usando Google Cloud Vertex AI.
- Implementación del Modelo: Implementación del modelo entrenado en un endpoint para predicciones en tiempo real.
Este flujo de trabajo de principio a fin automatiza el proceso de entrenamiento e implementación, haciéndolo escalable, eficiente y listo para producción.
8.1.3 Microsoft Azure
Azure Machine Learning de Microsoft es una plataforma integral basada en la nube que ofrece un conjunto completo de herramientas y servicios para todo el ciclo de vida del machine learning. Este poderoso ecosistema está diseñado para satisfacer las necesidades de científicos de datos, ingenieros de machine learning y desarrolladores de todos los niveles de habilidad, proporcionando un entorno fluido para construir, entrenar e implementar modelos de IA a escala. Azure Machine Learning se destaca por su flexibilidad, permitiendo a los usuarios trabajar con sus herramientas y frameworks preferidos mientras aprovechan la robusta infraestructura de la nube de Azure.
Las características clave de Azure Machine Learning incluyen:
- Preparación y gestión de datos: Azure ML ofrece herramientas avanzadas para la ingestión, limpieza y transformación de datos. Proporciona servicios automatizados de etiquetado de datos que utilizan machine learning para acelerar el proceso de anotación de grandes conjuntos de datos. Además, sus capacidades de ingeniería de características ayudan a extraer información significativa de los datos brutos, mejorando el rendimiento del modelo.
- Desarrollo y entrenamiento de modelos: La plataforma admite una amplia gama de frameworks de machine learning, incluidos TensorFlow, PyTorch y scikit-learn. Proporciona capacidades de entrenamiento distribuido, lo que permite a los usuarios escalar el entrenamiento de sus modelos en clústeres de GPUs u otro hardware especializado. Azure ML también ofrece características de machine learning automatizado (AutoML), que pueden seleccionar automáticamente los mejores algoritmos y hiperparámetros para un conjunto de datos determinado.
- Despliegue y gestión de modelos: Azure ML simplifica el proceso de despliegue de modelos en entornos de producción. Admite la implementación en varios destinos, incluidos servicios web para inferencia en tiempo real, Azure Kubernetes Service (AKS) para implementaciones escalables en contenedores, y Azure IoT Edge para escenarios de computación en el borde. La plataforma también proporciona herramientas para monitorear el rendimiento de los modelos, gestionar diferentes versiones e implementar pipelines de CI/CD para flujos de trabajo de ML.
- MLOps (Operaciones de Machine Learning): Azure ML incorpora capacidades robustas de MLOps, lo que permite a los equipos optimizar el ciclo de vida completo del machine learning. Esto incluye control de versiones para datos y modelos, reproducibilidad de experimentos y flujos de trabajo automatizados para el reentrenamiento e implementación de modelos.
- AI explicable y ML responsable: La plataforma ofrece herramientas para la interpretabilidad de los modelos y la evaluación de equidad, ayudando a las organizaciones a construir soluciones de IA transparentes y éticas. Estas características son cruciales para mantener la confianza y el cumplimiento en sistemas de IA, especialmente en industrias reguladas.
Al proporcionar este conjunto completo de herramientas y servicios, Azure Machine Learning permite a las organizaciones acelerar sus iniciativas de IA, desde la experimentación hasta la producción, manteniendo el control, la transparencia y la escalabilidad a lo largo del proceso.
Ejemplo: Entrenamiento e Implementación de un Modelo en Azure ML Studio
Azure ML Studio permite a los usuarios entrenar modelos de forma interactiva o programáticamente usando el SDK de Azure Machine Learning:
from azureml.core import Workspace, Experiment, Model
from azureml.train.sklearn import SKLearn
from azureml.train.estimator import Estimator
from azureml.core.webservice import AciWebservice
from azureml.core.model import InferenceConfig
# Connect to the Azure workspace
ws = Workspace.from_config()
# Define the experiment
experiment = Experiment(workspace=ws, name='my-sklearn-experiment')
# Define the training script and compute target
script_params = {
'--data-folder': 'data',
'--C': 1.0,
'--max_iter': 100
}
sklearn_estimator = Estimator(
source_directory='./src',
entry_script='train.py',
script_params=script_params,
compute_target='my-compute-cluster',
conda_packages=['scikit-learn', 'pandas', 'numpy']
)
# Submit the experiment
run = experiment.submit(sklearn_estimator)
print("Experiment submitted. Waiting for completion...")
run.wait_for_completion(show_output=True)
# Register the model
model = run.register_model(
model_name='sklearn-model',
model_path='outputs/model.pkl',
tags={'area': 'classification', 'type': 'sklearn-svm'},
properties={'accuracy': run.get_metrics()['accuracy']}
)
# Define inference configuration
inference_config = InferenceConfig(
entry_script="score.py",
source_directory="./src",
conda_file="environment.yml"
)
# Define deployment configuration
deployment_config = AciWebservice.deploy_configuration(
cpu_cores=1,
memory_gb=1,
tags={'area': 'classification', 'type': 'sklearn-svm'},
description='SVM classifier deployed as a web service'
)
# Deploy the model
service = Model.deploy(
workspace=ws,
name='sklearn-service',
models=[model],
inference_config=inference_config,
deployment_config=deployment_config
)
service.wait_for_deployment(show_output=True)
print(f"Service deployed. Scoring URI: {service.scoring_uri}")
Este ejemplo de código demuestra un flujo de trabajo integral para entrenar, registrar e implementar un modelo de machine learning utilizando Azure Machine Learning.
Desglosemos paso a paso:
- Importación de los módulos necesarios:
- Importamos módulos adicionales de azureml.core para el registro e implementación de modelos.
- Conexión al espacio de trabajo de Azure:
- Usamos
Workspace.from_config()
para conectarnos a nuestro espacio de trabajo de Azure ML. Esto asume que tienes un archivoconfig.json
en tu directorio de trabajo con los detalles del espacio de trabajo.
- Usamos
- Definición del experimento:
- Creamos un objeto Experiment, que es un contenedor lógico para nuestras ejecuciones de entrenamiento.
- Configuración del estimador:
- Creamos un objeto Estimator que define cómo ejecutar nuestro script de entrenamiento.
- Especificamos el directorio fuente, el script de entrada, los parámetros del script, el destino de cómputo y los paquetes requeridos.
- Este ejemplo asume que estamos utilizando scikit-learn e incluye parámetros adicionales para el clasificador SVM.
- Envió del experimento:
- Enviamos el experimento usando el estimador y esperamos a que se complete.
- El método
wait_for_completion()
nos permite ver la salida en tiempo real.
- Registro del modelo:
- Una vez que se completa el entrenamiento, registramos el modelo con metadatos adicionales (etiquetas y propiedades).
- Asumimos que el modelo está guardado como 'model.pkl' en el directorio 'outputs'.
- Definición de la configuración de inferencia:
- Creamos un objeto InferenceConfig que especifica cómo ejecutar el modelo para inferencia.
- Esto incluye el script de puntuación (score.py) y la definición del entorno (environment.yml).
- Definición de la configuración de implementación:
- Configuramos una AciWebservice.deploy_configuration() para especificar los recursos y metadatos para nuestra implementación.
- Implementación del modelo:
- Usamos Model.deploy() para implementar nuestro modelo como un servicio web.
- Este método toma como parámetros nuestro espacio de trabajo, modelo, configuración de inferencia y configuración de implementación.
- Esperar la implementación e imprimir la URI de puntuación:
- Esperamos a que se complete la implementación y luego imprimimos la URI de puntuación, que se puede utilizar para hacer predicciones.
Este ejemplo proporciona un flujo de trabajo realista y completo, que incluye el registro del modelo con metadatos, la configuración de inferencia y la implementación como un servicio web. Demuestra cómo utilizar Azure ML para gestionar el ciclo de vida completo de un modelo de machine learning, desde el entrenamiento hasta la implementación.
8.1 Ejecución de Modelos de Machine Learning en la Nube (AWS, Google Cloud, Azure)
A medida que el volumen de datos continúa creciendo exponencialmente y la inteligencia artificial se vuelve cada vez más prevalente, las organizaciones están migrando rápidamente sus flujos de trabajo de machine learning hacia soluciones basadas en la nube. Las principales plataformas en la nube, como Amazon Web Services (AWS), Google Cloud Platform (GCP) y Microsoft Azure, ofrecen infraestructura y servicios integrales que simplifican significativamente los procesos de entrenamiento, implementación y escalabilidad de modelos de machine learning. Estas plataformas proporcionan una gran cantidad de recursos y herramientas que permiten a los científicos de datos y desarrolladores centrarse en el desarrollo de modelos en lugar de la gestión de infraestructura.
En este capítulo, exploraremos los siguientes temas clave:
- Aprovechando las plataformas en la nube para machine learning: Un análisis en profundidad de la ejecución de modelos de machine learning sofisticados en AWS, Google Cloud y Azure, incluidos las mejores prácticas y características específicas de cada plataforma.
- Implementación fluida de modelos de machine learning: Técnicas y estrategias para implementar modelos de machine learning como servicios escalables y listos para producción, con una configuración mínima y en poco tiempo.
- Adopción de la computación en el edge en machine learning: Una introducción exhaustiva a la computación en el edge y sus implicaciones para el machine learning, incluyendo métodos para optimizar los modelos para que funcionen de manera eficiente en dispositivos con recursos limitados, como teléfonos inteligentes, dispositivos de Internet de las Cosas (IoT) y servidores edge.
Al abordar nuestro primer tema, Ejecución de Modelos de Machine Learning en la Nube, exploraremos cómo estas poderosas plataformas en la nube pueden aprovecharse para gestionar de manera eficiente el entrenamiento y la implementación a gran escala de modelos, revolucionando la forma en que las organizaciones abordan los proyectos de machine learning.
Las plataformas en la nube han revolucionado el panorama del desarrollo e implementación de modelos de machine learning, ofreciendo una escalabilidad y accesibilidad sin precedentes para desarrolladores y científicos de datos. Estas plataformas eliminan la necesidad de inversiones iniciales significativas en hardware costoso, democratizando el acceso a potentes recursos computacionales. Al aprovechar la infraestructura en la nube, las organizaciones pueden asignar recursos de manera dinámica según sus necesidades, permitiéndoles abordar problemas complejos de machine learning que antes estaban fuera de su alcance.
La suite integral de servicios proporcionada por las plataformas en la nube va más allá del simple poder computacional. Ofrecen soluciones de extremo a extremo que cubren todo el ciclo de vida del machine learning, desde la preparación de datos y el entrenamiento de modelos hasta su implementación y monitoreo. Los entornos administrados para el entrenamiento de modelos abstraen las complejidades de la computación distribuida, permitiendo a los científicos de datos centrarse en el desarrollo de algoritmos en lugar de la gestión de infraestructura. Estas plataformas también proporcionan opciones robustas de implementación, facilitando la integración fluida de modelos de machine learning en entornos de producción.
Además, las plataformas en la nube facilitan la colaboración y el intercambio de conocimientos entre los miembros del equipo, fomentando la innovación y acelerando el ritmo de desarrollo. Ofrecen sistemas de control de versiones, seguimiento de experimentos y características de reproducibilidad que son cruciales para mantener las mejores prácticas en los proyectos de machine learning. La escalabilidad de la infraestructura en la nube también permite experimentar fácilmente con diferentes arquitecturas de modelos e hiperparámetros, permitiendo iteraciones rápidas y mejoras de los modelos de machine learning.
8.1.1 Amazon Web Services (AWS)
AWS ofrece una plataforma integral de machine learning llamada Amazon SageMaker, que revoluciona todo el flujo de trabajo de machine learning. SageMaker proporciona una solución de extremo a extremo para científicos de datos y desarrolladores, simplificando el proceso de construcción, entrenamiento e implementación de modelos de machine learning a gran escala. Este servicio potente aborda muchos de los desafíos asociados con los flujos de trabajo tradicionales de machine learning, como la gestión de infraestructura, la preparación de datos y la optimización de modelos.
El ecosistema de Amazon SageMaker incluye varios componentes clave que funcionan de manera fluida:
- SageMaker Studio: Este entorno de desarrollo integrado (IDE) completamente integrado sirve como un centro central para proyectos de machine learning. Ofrece un espacio de trabajo colaborativo donde los científicos de datos pueden escribir código, experimentar con modelos y visualizar resultados. SageMaker Studio admite cuadernos populares como Jupyter, lo que facilita que los equipos compartan conocimientos y realicen iteraciones en los modelos de manera eficiente.
- SageMaker Training: Este componente aprovecha el poder de la computación distribuida para acelerar el entrenamiento de modelos. Proporciona y gestiona automáticamente la infraestructura necesaria, permitiendo a los usuarios centrarse en el desarrollo de algoritmos en lugar de la gestión de recursos. SageMaker Training admite varios frameworks de machine learning, incluidos TensorFlow, PyTorch y scikit-learn, brindando flexibilidad en el desarrollo de modelos.
- SageMaker Inference: Una vez que un modelo ha sido entrenado, SageMaker Inference se encarga de implementarlo como un servicio escalable y listo para producción. Maneja las complejidades de configurar puntos finales, gestionar recursos de cómputo y realizar escalado automático en función del tráfico entrante. Este servicio admite inferencias tanto en tiempo real como por lotes, atendiendo a diversas necesidades de aplicación.
- SageMaker Ground Truth: Esta función simplifica el proceso, a menudo largo, de etiquetado de datos. Proporciona herramientas para crear conjuntos de datos de entrenamiento de alta calidad, incluyendo soporte para flujos de trabajo de etiquetado humano y etiquetado automatizado utilizando técnicas de aprendizaje activo.
- SageMaker Experiments: Este componente ayuda a organizar, rastrear y comparar experimentos de machine learning. Captura automáticamente parámetros de entrada, configuraciones y resultados, lo que permite a los científicos de datos reproducir experimentos y realizar iteraciones en los modelos de manera más efectiva.
Al integrar estos componentes potentes, Amazon SageMaker reduce significativamente las barreras de entrada para proyectos de machine learning, permitiendo a las organizaciones desarrollar e implementar rápidamente soluciones sofisticadas de IA en varios dominios. Ya sea que estés trabajando en visión por computadora, procesamiento del lenguaje natural o análisis predictivo, SageMaker proporciona las herramientas y la infraestructura para dar vida a tus ideas de machine learning de manera eficiente y a gran escala.
Ejemplo: Entrenamiento de un Modelo de Machine Learning en AWS SageMaker
A continuación, se muestra un ejemplo de cómo entrenar un modelo simple de machine learning (por ejemplo, un árbol de decisión) utilizando SageMaker en AWS:
import sagemaker
from sagemaker import get_execution_role
from sagemaker.sklearn.estimator import SKLearn
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
import pandas as pd
import numpy as np
# Define the AWS role and set up the SageMaker session
role = get_execution_role()
sagemaker_session = sagemaker.Session()
# Prepare the Iris dataset
iris = load_iris()
X, y = iris.data, iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Create a DataFrame and save it to S3
train_data = pd.DataFrame(np.column_stack((X_train, y_train)),
columns=['sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'target'])
train_data_s3 = sagemaker_session.upload_data(
path=train_data.to_csv(index=False),
key_prefix='sagemaker/sklearn-iris'
)
# Define the SKLearn estimator
sklearn_estimator = SKLearn(
entry_point='iris_train.py',
role=role,
instance_count=1,
instance_type='ml.m5.large',
framework_version='0.23-1',
hyperparameters={
'max_depth': 5,
'n_estimators': 100
}
)
# Train the model
sklearn_estimator.fit({'train': train_data_s3})
# Deploy the trained model
predictor = sklearn_estimator.deploy(
initial_instance_count=1,
instance_type='ml.t2.medium'
)
# Make predictions
test_data = X_test[:5].tolist()
predictions = predictor.predict(test_data)
print(f"Predictions: {predictions}")
# Clean up
predictor.delete_endpoint()
Este ejemplo de código ampliado demuestra un flujo de trabajo más completo para entrenar e implementar un modelo de machine learning utilizando Amazon SageMaker. Desglosémoslo paso a paso:
- Importar las bibliotecas necesarias:
- SDK de SageMaker para interactuar con los servicios de AWS
- Scikit-learn para manejo y preprocesamiento de conjuntos de datos
- Pandas y NumPy para la manipulación de datos
- Configurar la sesión y el rol de SageMaker:
- Recuperar el rol de ejecución para SageMaker
- Inicializar una sesión de SageMaker
- Preparar el conjunto de datos:
- Cargar el conjunto de datos Iris usando scikit-learn
- Dividir los datos en conjuntos de entrenamiento y prueba
- Subir los datos de entrenamiento a S3:
- Convertir los datos de entrenamiento a un DataFrame
- Subir los datos a un bucket de S3 usando la sesión de SageMaker
- Definir el estimador de SKLearn:
- Especificar el script de entrada (iris_train.py)
- Configurar el tipo y la cantidad de instancias
- Elegir la versión del framework
- Establecer los hiperparámetros para el modelo
- Entrenar el modelo:
- Llamar al método fit en el estimador, pasando la ubicación en S3 de los datos de entrenamiento
- Implementar el modelo entrenado:
- Implementar el modelo en un endpoint de SageMaker
- Especificar el tipo y la cantidad de instancias para el endpoint
- Hacer predicciones:
- Usar el modelo implementado para hacer predicciones en los datos de prueba
- Limpiar:
- Eliminar el endpoint para evitar cargos innecesarios
Este ejemplo muestra un escenario realista, que incluye la preparación de datos, la especificación de hiperparámetros y la gestión adecuada de recursos. También demuestra cómo manejar todo el ciclo de vida de un modelo de machine learning en SageMaker, desde el entrenamiento hasta la implementación y la predicción.
8.1.2 Google Cloud Platform (GCP)
La AI Platform de Google Cloud ofrece un ecosistema robusto para los profesionales de machine learning, brindando un conjunto de herramientas y servicios que cubren todo el ciclo de vida del ML. Esta plataforma integral está diseñada para agilizar el proceso de desarrollo, entrenamiento e implementación de modelos sofisticados de machine learning, con un énfasis particular en la integración con el poderoso framework TensorFlow de Google.
La integración fluida de AI Platform con TensorFlow permite a los desarrolladores aprovechar todo el potencial de esta biblioteca de código abierto, facilitando la creación e implementación de modelos complejos de deep learning con relativa facilidad. Esta sinergia entre Google Cloud y TensorFlow crea un entorno potente para construir soluciones de inteligencia artificial de vanguardia en diversos dominios, como la visión por computadora, el procesamiento del lenguaje natural y el análisis predictivo.
Algunas de las características destacadas de la AI Platform de Google Cloud incluyen:
- AI Platform Notebooks: Esta función proporciona un entorno de cuadernos Jupyter totalmente administrado, ofreciendo a los científicos de datos e ingenieros de ML un espacio de trabajo flexible e interactivo para el desarrollo de modelos. Estos cuadernos pueden conectarse sin problemas a GPUs (Unidades de Procesamiento Gráfico) y TPUs (Unidades de Procesamiento Tensorial) de alto rendimiento, los aceleradores de IA diseñados a medida por Google. Esta capacidad permite una rápida creación de prototipos y experimentación con modelos computacionalmente intensivos, reduciendo significativamente el tiempo desde el concepto hasta la implementación.
- AI Platform Training: Este servicio robusto está diseñado para manejar las complejidades del entrenamiento de modelos de machine learning en conjuntos de datos a gran escala. Aprovechando los recursos de computación distribuida, permite a los usuarios entrenar modelos mucho más rápido de lo que sería posible en una sola máquina. Este servicio admite una amplia gama de frameworks de ML y puede escalar automáticamente los recursos según los requisitos del trabajo de entrenamiento, facilitando desde pequeños experimentos hasta el entrenamiento de modelos de producción a gran escala.
- AI Platform Prediction: Una vez que un modelo ha sido entrenado, este servicio facilita su implementación como una API REST escalable. Admite tanto predicciones en tiempo real para aplicaciones sensibles a la latencia como predicciones por lotes para tareas de inferencia a gran escala. El servicio gestiona la infraestructura subyacente, permitiendo a los desarrolladores centrarse en el rendimiento del modelo y la integración de aplicaciones, sin preocuparse por la gestión de servidores y el escalado.
Estas características, que trabajan en conjunto, proporcionan un entorno poderoso y flexible para proyectos de machine learning de todos los tamaños. Ya sea que seas un científico de datos que trabaja solo en una prueba de concepto o parte de un gran equipo que implementa sistemas críticos de IA, la AI Platform de Google Cloud ofrece las herramientas y la escalabilidad necesarias para respaldar tus necesidades.
Ejemplo: Entrenamiento de un Modelo TensorFlow en Google Cloud AI Platform
A continuación, se muestra cómo entrenar un modelo de TensorFlow en la AI Platform de Google Cloud:
# Import necessary libraries
from google.cloud import storage
from google.cloud import aiplatform
# Set up Google Cloud project and bucket
project_id = 'my-google-cloud-project'
bucket_name = 'my-ml-bucket'
region = 'us-central1'
# Initialize clients
storage_client = storage.Client(project=project_id)
aiplatform.init(project=project_id, location=region)
# Create a bucket if it doesn't exist
bucket = storage_client.lookup_bucket(bucket_name)
if bucket is None:
bucket = storage_client.create_bucket(bucket_name)
print(f"Bucket {bucket_name} created.")
else:
print(f"Bucket {bucket_name} already exists.")
# Upload training data to Cloud Storage
blob = bucket.blob('training-data/train_data.csv')
blob.upload_from_filename('train_data.csv')
print(f"Training data uploaded to gs://{bucket_name}/training-data/train_data.csv")
# Define the AI Platform training job using Python Package Training
job_display_name = 'my-tf-job'
python_package_gcs_uri = f'gs://{bucket_name}/trainer/tensorflow-trainer.tar.gz'
python_module_name = 'trainer.task'
job = aiplatform.CustomPythonPackageTrainingJob(
display_name=job_display_name,
python_package_gcs_uri=python_package_gcs_uri,
python_module_name=python_module_name,
container_uri='us-docker.pkg.dev/vertex-ai/training/tf-cpu.2-3:latest'
)
# Define dataset
dataset = aiplatform.TabularDataset.create(
display_name='my_dataset',
gcs_source=[f'gs://{bucket_name}/training-data/train_data.csv']
)
# Define training parameters
training_fraction_split = 0.8
validation_fraction_split = 0.1
test_fraction_split = 0.1
# Start the training job
model = job.run(
dataset=dataset,
model_display_name='my-tf-model',
training_fraction_split=training_fraction_split,
validation_fraction_split=validation_fraction_split,
test_fraction_split=test_fraction_split,
sync=True
)
print(f"Model training completed. Model resource name: {model.resource_name}")
# Deploy the model to an endpoint
endpoint = aiplatform.Endpoint.create(display_name="my-tf-endpoint")
endpoint.deploy(
model=model,
machine_type='n1-standard-4',
min_replica_count=1,
max_replica_count=2,
sync=True
)
print(f"Model deployed to endpoint: {endpoint.resource_name}")
Este ejemplo de código demuestra un flujo de trabajo integral para el entrenamiento e implementación de un modelo de machine learning utilizando Google Cloud Vertex AI.
- Importar Bibliotecas Necesarias
- Importamos los módulos requeridos de Google Cloud Storage y Google Cloud AI Platform.
- El
storage.Client
se utiliza para interactuar con Cloud Storage. - El
aiplatform
SDK se utiliza para gestionar el entrenamiento e implementación de IA.
- Configurar Proyecto y Bucket de Google Cloud
- Definimos:
project_id
: El proyecto de Google Cloud donde se crearán los recursos de IA.bucket_name
: El bucket de Cloud Storage utilizado para almacenar datos de entrenamiento y artefactos del modelo.region
: La región de cómputo donde se ejecutarán los trabajos de IA.
- Inicializamos:
- Cliente de Google Cloud Storage para gestionar operaciones de almacenamiento.
- Google AI Platform (
aiplatform
) para manejar flujos de trabajo de IA.
- Definimos:
- Crear un Bucket de Cloud Storage (Si No Existe)
- Verificamos si el bucket especificado existe.
- Si el bucket no existe, creamos uno nuevo.
- Esto asegura una configuración de almacenamiento adecuada antes de proceder con la carga de datos.
- Cargar Datos de Entrenamiento a Cloud Storage
- Cargamos un archivo CSV (
train_data.csv
) que contiene el conjunto de datos de entrenamiento a Cloud Storage. - Esto permite que el trabajo de entrenamiento de AI Platform acceda a datos estructurados de entrenamiento.
- Cargamos un archivo CSV (
- Definir el Trabajo de Entrenamiento de AI Platform
- Definimos un Trabajo de Entrenamiento de Paquete Python Personalizado, que permite un entrenamiento flexible de modelos usando scripts de Python.
- Componentes clave:
- Nombre del trabajo: Un nombre amigable para rastrear el trabajo de entrenamiento.
- Ubicación del paquete Python: Especifica el script de entrenamiento (
tensorflow-trainer.tar.gz
) almacenado en Cloud Storage. - Nombre del módulo Python: Especifica el punto de entrada (
trainer.task
) para ejecutar el trabajo de entrenamiento. - URI del contenedor: Especifica el contenedor de entrenamiento de TensorFlow que ejecuta el trabajo.
- Crear y Preparar el Dataset
- Creamos un Dataset de Vertex AI a partir del archivo CSV cargado.
- El dataset se utiliza para entrenamiento, validación y pruebas.
- Definir Parámetros de Entrenamiento
- Dividimos el dataset en:
- 80% Entrenamiento
- 10% Validación
- 10% Pruebas
- Estas proporciones de división ayudan al modelo a aprender y generalizar efectivamente.
- Dividimos el dataset en:
- Ejecutar el Trabajo de Entrenamiento
- Iniciamos el trabajo de entrenamiento con:
- El dataset.
- El nombre de visualización del modelo.
- La división de entrenamiento-validación-prueba.
sync=True
asegura que el script espere hasta que el entrenamiento se complete antes de continuar.
- Iniciamos el trabajo de entrenamiento con:
- Implementar el Modelo Entrenado
- Después del entrenamiento, implementamos el modelo para servir predicciones.
- Pasos:
- Crear un endpoint para alojar el modelo.
- Implementar el modelo en el endpoint.
- Configurar la implementación:
- Tipo de máquina:
n1-standard-4
. - Auto-escalado: Mínimo 1 réplica, Máximo 2 réplicas.
- Tipo de máquina:
- Ciclo de Vida Completo de un Modelo de Machine Learning en Google CloudEste ejemplo demuestra:
- Preparación de Datos: Carga y organización de datos de entrenamiento en Cloud Storage.
- Entrenamiento del Modelo: Ejecución de un trabajo de entrenamiento usando Google Cloud Vertex AI.
- Implementación del Modelo: Implementación del modelo entrenado en un endpoint para predicciones en tiempo real.
Este flujo de trabajo de principio a fin automatiza el proceso de entrenamiento e implementación, haciéndolo escalable, eficiente y listo para producción.
8.1.3 Microsoft Azure
Azure Machine Learning de Microsoft es una plataforma integral basada en la nube que ofrece un conjunto completo de herramientas y servicios para todo el ciclo de vida del machine learning. Este poderoso ecosistema está diseñado para satisfacer las necesidades de científicos de datos, ingenieros de machine learning y desarrolladores de todos los niveles de habilidad, proporcionando un entorno fluido para construir, entrenar e implementar modelos de IA a escala. Azure Machine Learning se destaca por su flexibilidad, permitiendo a los usuarios trabajar con sus herramientas y frameworks preferidos mientras aprovechan la robusta infraestructura de la nube de Azure.
Las características clave de Azure Machine Learning incluyen:
- Preparación y gestión de datos: Azure ML ofrece herramientas avanzadas para la ingestión, limpieza y transformación de datos. Proporciona servicios automatizados de etiquetado de datos que utilizan machine learning para acelerar el proceso de anotación de grandes conjuntos de datos. Además, sus capacidades de ingeniería de características ayudan a extraer información significativa de los datos brutos, mejorando el rendimiento del modelo.
- Desarrollo y entrenamiento de modelos: La plataforma admite una amplia gama de frameworks de machine learning, incluidos TensorFlow, PyTorch y scikit-learn. Proporciona capacidades de entrenamiento distribuido, lo que permite a los usuarios escalar el entrenamiento de sus modelos en clústeres de GPUs u otro hardware especializado. Azure ML también ofrece características de machine learning automatizado (AutoML), que pueden seleccionar automáticamente los mejores algoritmos y hiperparámetros para un conjunto de datos determinado.
- Despliegue y gestión de modelos: Azure ML simplifica el proceso de despliegue de modelos en entornos de producción. Admite la implementación en varios destinos, incluidos servicios web para inferencia en tiempo real, Azure Kubernetes Service (AKS) para implementaciones escalables en contenedores, y Azure IoT Edge para escenarios de computación en el borde. La plataforma también proporciona herramientas para monitorear el rendimiento de los modelos, gestionar diferentes versiones e implementar pipelines de CI/CD para flujos de trabajo de ML.
- MLOps (Operaciones de Machine Learning): Azure ML incorpora capacidades robustas de MLOps, lo que permite a los equipos optimizar el ciclo de vida completo del machine learning. Esto incluye control de versiones para datos y modelos, reproducibilidad de experimentos y flujos de trabajo automatizados para el reentrenamiento e implementación de modelos.
- AI explicable y ML responsable: La plataforma ofrece herramientas para la interpretabilidad de los modelos y la evaluación de equidad, ayudando a las organizaciones a construir soluciones de IA transparentes y éticas. Estas características son cruciales para mantener la confianza y el cumplimiento en sistemas de IA, especialmente en industrias reguladas.
Al proporcionar este conjunto completo de herramientas y servicios, Azure Machine Learning permite a las organizaciones acelerar sus iniciativas de IA, desde la experimentación hasta la producción, manteniendo el control, la transparencia y la escalabilidad a lo largo del proceso.
Ejemplo: Entrenamiento e Implementación de un Modelo en Azure ML Studio
Azure ML Studio permite a los usuarios entrenar modelos de forma interactiva o programáticamente usando el SDK de Azure Machine Learning:
from azureml.core import Workspace, Experiment, Model
from azureml.train.sklearn import SKLearn
from azureml.train.estimator import Estimator
from azureml.core.webservice import AciWebservice
from azureml.core.model import InferenceConfig
# Connect to the Azure workspace
ws = Workspace.from_config()
# Define the experiment
experiment = Experiment(workspace=ws, name='my-sklearn-experiment')
# Define the training script and compute target
script_params = {
'--data-folder': 'data',
'--C': 1.0,
'--max_iter': 100
}
sklearn_estimator = Estimator(
source_directory='./src',
entry_script='train.py',
script_params=script_params,
compute_target='my-compute-cluster',
conda_packages=['scikit-learn', 'pandas', 'numpy']
)
# Submit the experiment
run = experiment.submit(sklearn_estimator)
print("Experiment submitted. Waiting for completion...")
run.wait_for_completion(show_output=True)
# Register the model
model = run.register_model(
model_name='sklearn-model',
model_path='outputs/model.pkl',
tags={'area': 'classification', 'type': 'sklearn-svm'},
properties={'accuracy': run.get_metrics()['accuracy']}
)
# Define inference configuration
inference_config = InferenceConfig(
entry_script="score.py",
source_directory="./src",
conda_file="environment.yml"
)
# Define deployment configuration
deployment_config = AciWebservice.deploy_configuration(
cpu_cores=1,
memory_gb=1,
tags={'area': 'classification', 'type': 'sklearn-svm'},
description='SVM classifier deployed as a web service'
)
# Deploy the model
service = Model.deploy(
workspace=ws,
name='sklearn-service',
models=[model],
inference_config=inference_config,
deployment_config=deployment_config
)
service.wait_for_deployment(show_output=True)
print(f"Service deployed. Scoring URI: {service.scoring_uri}")
Este ejemplo de código demuestra un flujo de trabajo integral para entrenar, registrar e implementar un modelo de machine learning utilizando Azure Machine Learning.
Desglosemos paso a paso:
- Importación de los módulos necesarios:
- Importamos módulos adicionales de azureml.core para el registro e implementación de modelos.
- Conexión al espacio de trabajo de Azure:
- Usamos
Workspace.from_config()
para conectarnos a nuestro espacio de trabajo de Azure ML. Esto asume que tienes un archivoconfig.json
en tu directorio de trabajo con los detalles del espacio de trabajo.
- Usamos
- Definición del experimento:
- Creamos un objeto Experiment, que es un contenedor lógico para nuestras ejecuciones de entrenamiento.
- Configuración del estimador:
- Creamos un objeto Estimator que define cómo ejecutar nuestro script de entrenamiento.
- Especificamos el directorio fuente, el script de entrada, los parámetros del script, el destino de cómputo y los paquetes requeridos.
- Este ejemplo asume que estamos utilizando scikit-learn e incluye parámetros adicionales para el clasificador SVM.
- Envió del experimento:
- Enviamos el experimento usando el estimador y esperamos a que se complete.
- El método
wait_for_completion()
nos permite ver la salida en tiempo real.
- Registro del modelo:
- Una vez que se completa el entrenamiento, registramos el modelo con metadatos adicionales (etiquetas y propiedades).
- Asumimos que el modelo está guardado como 'model.pkl' en el directorio 'outputs'.
- Definición de la configuración de inferencia:
- Creamos un objeto InferenceConfig que especifica cómo ejecutar el modelo para inferencia.
- Esto incluye el script de puntuación (score.py) y la definición del entorno (environment.yml).
- Definición de la configuración de implementación:
- Configuramos una AciWebservice.deploy_configuration() para especificar los recursos y metadatos para nuestra implementación.
- Implementación del modelo:
- Usamos Model.deploy() para implementar nuestro modelo como un servicio web.
- Este método toma como parámetros nuestro espacio de trabajo, modelo, configuración de inferencia y configuración de implementación.
- Esperar la implementación e imprimir la URI de puntuación:
- Esperamos a que se complete la implementación y luego imprimimos la URI de puntuación, que se puede utilizar para hacer predicciones.
Este ejemplo proporciona un flujo de trabajo realista y completo, que incluye el registro del modelo con metadatos, la configuración de inferencia y la implementación como un servicio web. Demuestra cómo utilizar Azure ML para gestionar el ciclo de vida completo de un modelo de machine learning, desde el entrenamiento hasta la implementación.
8.1 Ejecución de Modelos de Machine Learning en la Nube (AWS, Google Cloud, Azure)
A medida que el volumen de datos continúa creciendo exponencialmente y la inteligencia artificial se vuelve cada vez más prevalente, las organizaciones están migrando rápidamente sus flujos de trabajo de machine learning hacia soluciones basadas en la nube. Las principales plataformas en la nube, como Amazon Web Services (AWS), Google Cloud Platform (GCP) y Microsoft Azure, ofrecen infraestructura y servicios integrales que simplifican significativamente los procesos de entrenamiento, implementación y escalabilidad de modelos de machine learning. Estas plataformas proporcionan una gran cantidad de recursos y herramientas que permiten a los científicos de datos y desarrolladores centrarse en el desarrollo de modelos en lugar de la gestión de infraestructura.
En este capítulo, exploraremos los siguientes temas clave:
- Aprovechando las plataformas en la nube para machine learning: Un análisis en profundidad de la ejecución de modelos de machine learning sofisticados en AWS, Google Cloud y Azure, incluidos las mejores prácticas y características específicas de cada plataforma.
- Implementación fluida de modelos de machine learning: Técnicas y estrategias para implementar modelos de machine learning como servicios escalables y listos para producción, con una configuración mínima y en poco tiempo.
- Adopción de la computación en el edge en machine learning: Una introducción exhaustiva a la computación en el edge y sus implicaciones para el machine learning, incluyendo métodos para optimizar los modelos para que funcionen de manera eficiente en dispositivos con recursos limitados, como teléfonos inteligentes, dispositivos de Internet de las Cosas (IoT) y servidores edge.
Al abordar nuestro primer tema, Ejecución de Modelos de Machine Learning en la Nube, exploraremos cómo estas poderosas plataformas en la nube pueden aprovecharse para gestionar de manera eficiente el entrenamiento y la implementación a gran escala de modelos, revolucionando la forma en que las organizaciones abordan los proyectos de machine learning.
Las plataformas en la nube han revolucionado el panorama del desarrollo e implementación de modelos de machine learning, ofreciendo una escalabilidad y accesibilidad sin precedentes para desarrolladores y científicos de datos. Estas plataformas eliminan la necesidad de inversiones iniciales significativas en hardware costoso, democratizando el acceso a potentes recursos computacionales. Al aprovechar la infraestructura en la nube, las organizaciones pueden asignar recursos de manera dinámica según sus necesidades, permitiéndoles abordar problemas complejos de machine learning que antes estaban fuera de su alcance.
La suite integral de servicios proporcionada por las plataformas en la nube va más allá del simple poder computacional. Ofrecen soluciones de extremo a extremo que cubren todo el ciclo de vida del machine learning, desde la preparación de datos y el entrenamiento de modelos hasta su implementación y monitoreo. Los entornos administrados para el entrenamiento de modelos abstraen las complejidades de la computación distribuida, permitiendo a los científicos de datos centrarse en el desarrollo de algoritmos en lugar de la gestión de infraestructura. Estas plataformas también proporcionan opciones robustas de implementación, facilitando la integración fluida de modelos de machine learning en entornos de producción.
Además, las plataformas en la nube facilitan la colaboración y el intercambio de conocimientos entre los miembros del equipo, fomentando la innovación y acelerando el ritmo de desarrollo. Ofrecen sistemas de control de versiones, seguimiento de experimentos y características de reproducibilidad que son cruciales para mantener las mejores prácticas en los proyectos de machine learning. La escalabilidad de la infraestructura en la nube también permite experimentar fácilmente con diferentes arquitecturas de modelos e hiperparámetros, permitiendo iteraciones rápidas y mejoras de los modelos de machine learning.
8.1.1 Amazon Web Services (AWS)
AWS ofrece una plataforma integral de machine learning llamada Amazon SageMaker, que revoluciona todo el flujo de trabajo de machine learning. SageMaker proporciona una solución de extremo a extremo para científicos de datos y desarrolladores, simplificando el proceso de construcción, entrenamiento e implementación de modelos de machine learning a gran escala. Este servicio potente aborda muchos de los desafíos asociados con los flujos de trabajo tradicionales de machine learning, como la gestión de infraestructura, la preparación de datos y la optimización de modelos.
El ecosistema de Amazon SageMaker incluye varios componentes clave que funcionan de manera fluida:
- SageMaker Studio: Este entorno de desarrollo integrado (IDE) completamente integrado sirve como un centro central para proyectos de machine learning. Ofrece un espacio de trabajo colaborativo donde los científicos de datos pueden escribir código, experimentar con modelos y visualizar resultados. SageMaker Studio admite cuadernos populares como Jupyter, lo que facilita que los equipos compartan conocimientos y realicen iteraciones en los modelos de manera eficiente.
- SageMaker Training: Este componente aprovecha el poder de la computación distribuida para acelerar el entrenamiento de modelos. Proporciona y gestiona automáticamente la infraestructura necesaria, permitiendo a los usuarios centrarse en el desarrollo de algoritmos en lugar de la gestión de recursos. SageMaker Training admite varios frameworks de machine learning, incluidos TensorFlow, PyTorch y scikit-learn, brindando flexibilidad en el desarrollo de modelos.
- SageMaker Inference: Una vez que un modelo ha sido entrenado, SageMaker Inference se encarga de implementarlo como un servicio escalable y listo para producción. Maneja las complejidades de configurar puntos finales, gestionar recursos de cómputo y realizar escalado automático en función del tráfico entrante. Este servicio admite inferencias tanto en tiempo real como por lotes, atendiendo a diversas necesidades de aplicación.
- SageMaker Ground Truth: Esta función simplifica el proceso, a menudo largo, de etiquetado de datos. Proporciona herramientas para crear conjuntos de datos de entrenamiento de alta calidad, incluyendo soporte para flujos de trabajo de etiquetado humano y etiquetado automatizado utilizando técnicas de aprendizaje activo.
- SageMaker Experiments: Este componente ayuda a organizar, rastrear y comparar experimentos de machine learning. Captura automáticamente parámetros de entrada, configuraciones y resultados, lo que permite a los científicos de datos reproducir experimentos y realizar iteraciones en los modelos de manera más efectiva.
Al integrar estos componentes potentes, Amazon SageMaker reduce significativamente las barreras de entrada para proyectos de machine learning, permitiendo a las organizaciones desarrollar e implementar rápidamente soluciones sofisticadas de IA en varios dominios. Ya sea que estés trabajando en visión por computadora, procesamiento del lenguaje natural o análisis predictivo, SageMaker proporciona las herramientas y la infraestructura para dar vida a tus ideas de machine learning de manera eficiente y a gran escala.
Ejemplo: Entrenamiento de un Modelo de Machine Learning en AWS SageMaker
A continuación, se muestra un ejemplo de cómo entrenar un modelo simple de machine learning (por ejemplo, un árbol de decisión) utilizando SageMaker en AWS:
import sagemaker
from sagemaker import get_execution_role
from sagemaker.sklearn.estimator import SKLearn
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
import pandas as pd
import numpy as np
# Define the AWS role and set up the SageMaker session
role = get_execution_role()
sagemaker_session = sagemaker.Session()
# Prepare the Iris dataset
iris = load_iris()
X, y = iris.data, iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Create a DataFrame and save it to S3
train_data = pd.DataFrame(np.column_stack((X_train, y_train)),
columns=['sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'target'])
train_data_s3 = sagemaker_session.upload_data(
path=train_data.to_csv(index=False),
key_prefix='sagemaker/sklearn-iris'
)
# Define the SKLearn estimator
sklearn_estimator = SKLearn(
entry_point='iris_train.py',
role=role,
instance_count=1,
instance_type='ml.m5.large',
framework_version='0.23-1',
hyperparameters={
'max_depth': 5,
'n_estimators': 100
}
)
# Train the model
sklearn_estimator.fit({'train': train_data_s3})
# Deploy the trained model
predictor = sklearn_estimator.deploy(
initial_instance_count=1,
instance_type='ml.t2.medium'
)
# Make predictions
test_data = X_test[:5].tolist()
predictions = predictor.predict(test_data)
print(f"Predictions: {predictions}")
# Clean up
predictor.delete_endpoint()
Este ejemplo de código ampliado demuestra un flujo de trabajo más completo para entrenar e implementar un modelo de machine learning utilizando Amazon SageMaker. Desglosémoslo paso a paso:
- Importar las bibliotecas necesarias:
- SDK de SageMaker para interactuar con los servicios de AWS
- Scikit-learn para manejo y preprocesamiento de conjuntos de datos
- Pandas y NumPy para la manipulación de datos
- Configurar la sesión y el rol de SageMaker:
- Recuperar el rol de ejecución para SageMaker
- Inicializar una sesión de SageMaker
- Preparar el conjunto de datos:
- Cargar el conjunto de datos Iris usando scikit-learn
- Dividir los datos en conjuntos de entrenamiento y prueba
- Subir los datos de entrenamiento a S3:
- Convertir los datos de entrenamiento a un DataFrame
- Subir los datos a un bucket de S3 usando la sesión de SageMaker
- Definir el estimador de SKLearn:
- Especificar el script de entrada (iris_train.py)
- Configurar el tipo y la cantidad de instancias
- Elegir la versión del framework
- Establecer los hiperparámetros para el modelo
- Entrenar el modelo:
- Llamar al método fit en el estimador, pasando la ubicación en S3 de los datos de entrenamiento
- Implementar el modelo entrenado:
- Implementar el modelo en un endpoint de SageMaker
- Especificar el tipo y la cantidad de instancias para el endpoint
- Hacer predicciones:
- Usar el modelo implementado para hacer predicciones en los datos de prueba
- Limpiar:
- Eliminar el endpoint para evitar cargos innecesarios
Este ejemplo muestra un escenario realista, que incluye la preparación de datos, la especificación de hiperparámetros y la gestión adecuada de recursos. También demuestra cómo manejar todo el ciclo de vida de un modelo de machine learning en SageMaker, desde el entrenamiento hasta la implementación y la predicción.
8.1.2 Google Cloud Platform (GCP)
La AI Platform de Google Cloud ofrece un ecosistema robusto para los profesionales de machine learning, brindando un conjunto de herramientas y servicios que cubren todo el ciclo de vida del ML. Esta plataforma integral está diseñada para agilizar el proceso de desarrollo, entrenamiento e implementación de modelos sofisticados de machine learning, con un énfasis particular en la integración con el poderoso framework TensorFlow de Google.
La integración fluida de AI Platform con TensorFlow permite a los desarrolladores aprovechar todo el potencial de esta biblioteca de código abierto, facilitando la creación e implementación de modelos complejos de deep learning con relativa facilidad. Esta sinergia entre Google Cloud y TensorFlow crea un entorno potente para construir soluciones de inteligencia artificial de vanguardia en diversos dominios, como la visión por computadora, el procesamiento del lenguaje natural y el análisis predictivo.
Algunas de las características destacadas de la AI Platform de Google Cloud incluyen:
- AI Platform Notebooks: Esta función proporciona un entorno de cuadernos Jupyter totalmente administrado, ofreciendo a los científicos de datos e ingenieros de ML un espacio de trabajo flexible e interactivo para el desarrollo de modelos. Estos cuadernos pueden conectarse sin problemas a GPUs (Unidades de Procesamiento Gráfico) y TPUs (Unidades de Procesamiento Tensorial) de alto rendimiento, los aceleradores de IA diseñados a medida por Google. Esta capacidad permite una rápida creación de prototipos y experimentación con modelos computacionalmente intensivos, reduciendo significativamente el tiempo desde el concepto hasta la implementación.
- AI Platform Training: Este servicio robusto está diseñado para manejar las complejidades del entrenamiento de modelos de machine learning en conjuntos de datos a gran escala. Aprovechando los recursos de computación distribuida, permite a los usuarios entrenar modelos mucho más rápido de lo que sería posible en una sola máquina. Este servicio admite una amplia gama de frameworks de ML y puede escalar automáticamente los recursos según los requisitos del trabajo de entrenamiento, facilitando desde pequeños experimentos hasta el entrenamiento de modelos de producción a gran escala.
- AI Platform Prediction: Una vez que un modelo ha sido entrenado, este servicio facilita su implementación como una API REST escalable. Admite tanto predicciones en tiempo real para aplicaciones sensibles a la latencia como predicciones por lotes para tareas de inferencia a gran escala. El servicio gestiona la infraestructura subyacente, permitiendo a los desarrolladores centrarse en el rendimiento del modelo y la integración de aplicaciones, sin preocuparse por la gestión de servidores y el escalado.
Estas características, que trabajan en conjunto, proporcionan un entorno poderoso y flexible para proyectos de machine learning de todos los tamaños. Ya sea que seas un científico de datos que trabaja solo en una prueba de concepto o parte de un gran equipo que implementa sistemas críticos de IA, la AI Platform de Google Cloud ofrece las herramientas y la escalabilidad necesarias para respaldar tus necesidades.
Ejemplo: Entrenamiento de un Modelo TensorFlow en Google Cloud AI Platform
A continuación, se muestra cómo entrenar un modelo de TensorFlow en la AI Platform de Google Cloud:
# Import necessary libraries
from google.cloud import storage
from google.cloud import aiplatform
# Set up Google Cloud project and bucket
project_id = 'my-google-cloud-project'
bucket_name = 'my-ml-bucket'
region = 'us-central1'
# Initialize clients
storage_client = storage.Client(project=project_id)
aiplatform.init(project=project_id, location=region)
# Create a bucket if it doesn't exist
bucket = storage_client.lookup_bucket(bucket_name)
if bucket is None:
bucket = storage_client.create_bucket(bucket_name)
print(f"Bucket {bucket_name} created.")
else:
print(f"Bucket {bucket_name} already exists.")
# Upload training data to Cloud Storage
blob = bucket.blob('training-data/train_data.csv')
blob.upload_from_filename('train_data.csv')
print(f"Training data uploaded to gs://{bucket_name}/training-data/train_data.csv")
# Define the AI Platform training job using Python Package Training
job_display_name = 'my-tf-job'
python_package_gcs_uri = f'gs://{bucket_name}/trainer/tensorflow-trainer.tar.gz'
python_module_name = 'trainer.task'
job = aiplatform.CustomPythonPackageTrainingJob(
display_name=job_display_name,
python_package_gcs_uri=python_package_gcs_uri,
python_module_name=python_module_name,
container_uri='us-docker.pkg.dev/vertex-ai/training/tf-cpu.2-3:latest'
)
# Define dataset
dataset = aiplatform.TabularDataset.create(
display_name='my_dataset',
gcs_source=[f'gs://{bucket_name}/training-data/train_data.csv']
)
# Define training parameters
training_fraction_split = 0.8
validation_fraction_split = 0.1
test_fraction_split = 0.1
# Start the training job
model = job.run(
dataset=dataset,
model_display_name='my-tf-model',
training_fraction_split=training_fraction_split,
validation_fraction_split=validation_fraction_split,
test_fraction_split=test_fraction_split,
sync=True
)
print(f"Model training completed. Model resource name: {model.resource_name}")
# Deploy the model to an endpoint
endpoint = aiplatform.Endpoint.create(display_name="my-tf-endpoint")
endpoint.deploy(
model=model,
machine_type='n1-standard-4',
min_replica_count=1,
max_replica_count=2,
sync=True
)
print(f"Model deployed to endpoint: {endpoint.resource_name}")
Este ejemplo de código demuestra un flujo de trabajo integral para el entrenamiento e implementación de un modelo de machine learning utilizando Google Cloud Vertex AI.
- Importar Bibliotecas Necesarias
- Importamos los módulos requeridos de Google Cloud Storage y Google Cloud AI Platform.
- El
storage.Client
se utiliza para interactuar con Cloud Storage. - El
aiplatform
SDK se utiliza para gestionar el entrenamiento e implementación de IA.
- Configurar Proyecto y Bucket de Google Cloud
- Definimos:
project_id
: El proyecto de Google Cloud donde se crearán los recursos de IA.bucket_name
: El bucket de Cloud Storage utilizado para almacenar datos de entrenamiento y artefactos del modelo.region
: La región de cómputo donde se ejecutarán los trabajos de IA.
- Inicializamos:
- Cliente de Google Cloud Storage para gestionar operaciones de almacenamiento.
- Google AI Platform (
aiplatform
) para manejar flujos de trabajo de IA.
- Definimos:
- Crear un Bucket de Cloud Storage (Si No Existe)
- Verificamos si el bucket especificado existe.
- Si el bucket no existe, creamos uno nuevo.
- Esto asegura una configuración de almacenamiento adecuada antes de proceder con la carga de datos.
- Cargar Datos de Entrenamiento a Cloud Storage
- Cargamos un archivo CSV (
train_data.csv
) que contiene el conjunto de datos de entrenamiento a Cloud Storage. - Esto permite que el trabajo de entrenamiento de AI Platform acceda a datos estructurados de entrenamiento.
- Cargamos un archivo CSV (
- Definir el Trabajo de Entrenamiento de AI Platform
- Definimos un Trabajo de Entrenamiento de Paquete Python Personalizado, que permite un entrenamiento flexible de modelos usando scripts de Python.
- Componentes clave:
- Nombre del trabajo: Un nombre amigable para rastrear el trabajo de entrenamiento.
- Ubicación del paquete Python: Especifica el script de entrenamiento (
tensorflow-trainer.tar.gz
) almacenado en Cloud Storage. - Nombre del módulo Python: Especifica el punto de entrada (
trainer.task
) para ejecutar el trabajo de entrenamiento. - URI del contenedor: Especifica el contenedor de entrenamiento de TensorFlow que ejecuta el trabajo.
- Crear y Preparar el Dataset
- Creamos un Dataset de Vertex AI a partir del archivo CSV cargado.
- El dataset se utiliza para entrenamiento, validación y pruebas.
- Definir Parámetros de Entrenamiento
- Dividimos el dataset en:
- 80% Entrenamiento
- 10% Validación
- 10% Pruebas
- Estas proporciones de división ayudan al modelo a aprender y generalizar efectivamente.
- Dividimos el dataset en:
- Ejecutar el Trabajo de Entrenamiento
- Iniciamos el trabajo de entrenamiento con:
- El dataset.
- El nombre de visualización del modelo.
- La división de entrenamiento-validación-prueba.
sync=True
asegura que el script espere hasta que el entrenamiento se complete antes de continuar.
- Iniciamos el trabajo de entrenamiento con:
- Implementar el Modelo Entrenado
- Después del entrenamiento, implementamos el modelo para servir predicciones.
- Pasos:
- Crear un endpoint para alojar el modelo.
- Implementar el modelo en el endpoint.
- Configurar la implementación:
- Tipo de máquina:
n1-standard-4
. - Auto-escalado: Mínimo 1 réplica, Máximo 2 réplicas.
- Tipo de máquina:
- Ciclo de Vida Completo de un Modelo de Machine Learning en Google CloudEste ejemplo demuestra:
- Preparación de Datos: Carga y organización de datos de entrenamiento en Cloud Storage.
- Entrenamiento del Modelo: Ejecución de un trabajo de entrenamiento usando Google Cloud Vertex AI.
- Implementación del Modelo: Implementación del modelo entrenado en un endpoint para predicciones en tiempo real.
Este flujo de trabajo de principio a fin automatiza el proceso de entrenamiento e implementación, haciéndolo escalable, eficiente y listo para producción.
8.1.3 Microsoft Azure
Azure Machine Learning de Microsoft es una plataforma integral basada en la nube que ofrece un conjunto completo de herramientas y servicios para todo el ciclo de vida del machine learning. Este poderoso ecosistema está diseñado para satisfacer las necesidades de científicos de datos, ingenieros de machine learning y desarrolladores de todos los niveles de habilidad, proporcionando un entorno fluido para construir, entrenar e implementar modelos de IA a escala. Azure Machine Learning se destaca por su flexibilidad, permitiendo a los usuarios trabajar con sus herramientas y frameworks preferidos mientras aprovechan la robusta infraestructura de la nube de Azure.
Las características clave de Azure Machine Learning incluyen:
- Preparación y gestión de datos: Azure ML ofrece herramientas avanzadas para la ingestión, limpieza y transformación de datos. Proporciona servicios automatizados de etiquetado de datos que utilizan machine learning para acelerar el proceso de anotación de grandes conjuntos de datos. Además, sus capacidades de ingeniería de características ayudan a extraer información significativa de los datos brutos, mejorando el rendimiento del modelo.
- Desarrollo y entrenamiento de modelos: La plataforma admite una amplia gama de frameworks de machine learning, incluidos TensorFlow, PyTorch y scikit-learn. Proporciona capacidades de entrenamiento distribuido, lo que permite a los usuarios escalar el entrenamiento de sus modelos en clústeres de GPUs u otro hardware especializado. Azure ML también ofrece características de machine learning automatizado (AutoML), que pueden seleccionar automáticamente los mejores algoritmos y hiperparámetros para un conjunto de datos determinado.
- Despliegue y gestión de modelos: Azure ML simplifica el proceso de despliegue de modelos en entornos de producción. Admite la implementación en varios destinos, incluidos servicios web para inferencia en tiempo real, Azure Kubernetes Service (AKS) para implementaciones escalables en contenedores, y Azure IoT Edge para escenarios de computación en el borde. La plataforma también proporciona herramientas para monitorear el rendimiento de los modelos, gestionar diferentes versiones e implementar pipelines de CI/CD para flujos de trabajo de ML.
- MLOps (Operaciones de Machine Learning): Azure ML incorpora capacidades robustas de MLOps, lo que permite a los equipos optimizar el ciclo de vida completo del machine learning. Esto incluye control de versiones para datos y modelos, reproducibilidad de experimentos y flujos de trabajo automatizados para el reentrenamiento e implementación de modelos.
- AI explicable y ML responsable: La plataforma ofrece herramientas para la interpretabilidad de los modelos y la evaluación de equidad, ayudando a las organizaciones a construir soluciones de IA transparentes y éticas. Estas características son cruciales para mantener la confianza y el cumplimiento en sistemas de IA, especialmente en industrias reguladas.
Al proporcionar este conjunto completo de herramientas y servicios, Azure Machine Learning permite a las organizaciones acelerar sus iniciativas de IA, desde la experimentación hasta la producción, manteniendo el control, la transparencia y la escalabilidad a lo largo del proceso.
Ejemplo: Entrenamiento e Implementación de un Modelo en Azure ML Studio
Azure ML Studio permite a los usuarios entrenar modelos de forma interactiva o programáticamente usando el SDK de Azure Machine Learning:
from azureml.core import Workspace, Experiment, Model
from azureml.train.sklearn import SKLearn
from azureml.train.estimator import Estimator
from azureml.core.webservice import AciWebservice
from azureml.core.model import InferenceConfig
# Connect to the Azure workspace
ws = Workspace.from_config()
# Define the experiment
experiment = Experiment(workspace=ws, name='my-sklearn-experiment')
# Define the training script and compute target
script_params = {
'--data-folder': 'data',
'--C': 1.0,
'--max_iter': 100
}
sklearn_estimator = Estimator(
source_directory='./src',
entry_script='train.py',
script_params=script_params,
compute_target='my-compute-cluster',
conda_packages=['scikit-learn', 'pandas', 'numpy']
)
# Submit the experiment
run = experiment.submit(sklearn_estimator)
print("Experiment submitted. Waiting for completion...")
run.wait_for_completion(show_output=True)
# Register the model
model = run.register_model(
model_name='sklearn-model',
model_path='outputs/model.pkl',
tags={'area': 'classification', 'type': 'sklearn-svm'},
properties={'accuracy': run.get_metrics()['accuracy']}
)
# Define inference configuration
inference_config = InferenceConfig(
entry_script="score.py",
source_directory="./src",
conda_file="environment.yml"
)
# Define deployment configuration
deployment_config = AciWebservice.deploy_configuration(
cpu_cores=1,
memory_gb=1,
tags={'area': 'classification', 'type': 'sklearn-svm'},
description='SVM classifier deployed as a web service'
)
# Deploy the model
service = Model.deploy(
workspace=ws,
name='sklearn-service',
models=[model],
inference_config=inference_config,
deployment_config=deployment_config
)
service.wait_for_deployment(show_output=True)
print(f"Service deployed. Scoring URI: {service.scoring_uri}")
Este ejemplo de código demuestra un flujo de trabajo integral para entrenar, registrar e implementar un modelo de machine learning utilizando Azure Machine Learning.
Desglosemos paso a paso:
- Importación de los módulos necesarios:
- Importamos módulos adicionales de azureml.core para el registro e implementación de modelos.
- Conexión al espacio de trabajo de Azure:
- Usamos
Workspace.from_config()
para conectarnos a nuestro espacio de trabajo de Azure ML. Esto asume que tienes un archivoconfig.json
en tu directorio de trabajo con los detalles del espacio de trabajo.
- Usamos
- Definición del experimento:
- Creamos un objeto Experiment, que es un contenedor lógico para nuestras ejecuciones de entrenamiento.
- Configuración del estimador:
- Creamos un objeto Estimator que define cómo ejecutar nuestro script de entrenamiento.
- Especificamos el directorio fuente, el script de entrada, los parámetros del script, el destino de cómputo y los paquetes requeridos.
- Este ejemplo asume que estamos utilizando scikit-learn e incluye parámetros adicionales para el clasificador SVM.
- Envió del experimento:
- Enviamos el experimento usando el estimador y esperamos a que se complete.
- El método
wait_for_completion()
nos permite ver la salida en tiempo real.
- Registro del modelo:
- Una vez que se completa el entrenamiento, registramos el modelo con metadatos adicionales (etiquetas y propiedades).
- Asumimos que el modelo está guardado como 'model.pkl' en el directorio 'outputs'.
- Definición de la configuración de inferencia:
- Creamos un objeto InferenceConfig que especifica cómo ejecutar el modelo para inferencia.
- Esto incluye el script de puntuación (score.py) y la definición del entorno (environment.yml).
- Definición de la configuración de implementación:
- Configuramos una AciWebservice.deploy_configuration() para especificar los recursos y metadatos para nuestra implementación.
- Implementación del modelo:
- Usamos Model.deploy() para implementar nuestro modelo como un servicio web.
- Este método toma como parámetros nuestro espacio de trabajo, modelo, configuración de inferencia y configuración de implementación.
- Esperar la implementación e imprimir la URI de puntuación:
- Esperamos a que se complete la implementación y luego imprimimos la URI de puntuación, que se puede utilizar para hacer predicciones.
Este ejemplo proporciona un flujo de trabajo realista y completo, que incluye el registro del modelo con metadatos, la configuración de inferencia y la implementación como un servicio web. Demuestra cómo utilizar Azure ML para gestionar el ciclo de vida completo de un modelo de machine learning, desde el entrenamiento hasta la implementación.
8.1 Ejecución de Modelos de Machine Learning en la Nube (AWS, Google Cloud, Azure)
A medida que el volumen de datos continúa creciendo exponencialmente y la inteligencia artificial se vuelve cada vez más prevalente, las organizaciones están migrando rápidamente sus flujos de trabajo de machine learning hacia soluciones basadas en la nube. Las principales plataformas en la nube, como Amazon Web Services (AWS), Google Cloud Platform (GCP) y Microsoft Azure, ofrecen infraestructura y servicios integrales que simplifican significativamente los procesos de entrenamiento, implementación y escalabilidad de modelos de machine learning. Estas plataformas proporcionan una gran cantidad de recursos y herramientas que permiten a los científicos de datos y desarrolladores centrarse en el desarrollo de modelos en lugar de la gestión de infraestructura.
En este capítulo, exploraremos los siguientes temas clave:
- Aprovechando las plataformas en la nube para machine learning: Un análisis en profundidad de la ejecución de modelos de machine learning sofisticados en AWS, Google Cloud y Azure, incluidos las mejores prácticas y características específicas de cada plataforma.
- Implementación fluida de modelos de machine learning: Técnicas y estrategias para implementar modelos de machine learning como servicios escalables y listos para producción, con una configuración mínima y en poco tiempo.
- Adopción de la computación en el edge en machine learning: Una introducción exhaustiva a la computación en el edge y sus implicaciones para el machine learning, incluyendo métodos para optimizar los modelos para que funcionen de manera eficiente en dispositivos con recursos limitados, como teléfonos inteligentes, dispositivos de Internet de las Cosas (IoT) y servidores edge.
Al abordar nuestro primer tema, Ejecución de Modelos de Machine Learning en la Nube, exploraremos cómo estas poderosas plataformas en la nube pueden aprovecharse para gestionar de manera eficiente el entrenamiento y la implementación a gran escala de modelos, revolucionando la forma en que las organizaciones abordan los proyectos de machine learning.
Las plataformas en la nube han revolucionado el panorama del desarrollo e implementación de modelos de machine learning, ofreciendo una escalabilidad y accesibilidad sin precedentes para desarrolladores y científicos de datos. Estas plataformas eliminan la necesidad de inversiones iniciales significativas en hardware costoso, democratizando el acceso a potentes recursos computacionales. Al aprovechar la infraestructura en la nube, las organizaciones pueden asignar recursos de manera dinámica según sus necesidades, permitiéndoles abordar problemas complejos de machine learning que antes estaban fuera de su alcance.
La suite integral de servicios proporcionada por las plataformas en la nube va más allá del simple poder computacional. Ofrecen soluciones de extremo a extremo que cubren todo el ciclo de vida del machine learning, desde la preparación de datos y el entrenamiento de modelos hasta su implementación y monitoreo. Los entornos administrados para el entrenamiento de modelos abstraen las complejidades de la computación distribuida, permitiendo a los científicos de datos centrarse en el desarrollo de algoritmos en lugar de la gestión de infraestructura. Estas plataformas también proporcionan opciones robustas de implementación, facilitando la integración fluida de modelos de machine learning en entornos de producción.
Además, las plataformas en la nube facilitan la colaboración y el intercambio de conocimientos entre los miembros del equipo, fomentando la innovación y acelerando el ritmo de desarrollo. Ofrecen sistemas de control de versiones, seguimiento de experimentos y características de reproducibilidad que son cruciales para mantener las mejores prácticas en los proyectos de machine learning. La escalabilidad de la infraestructura en la nube también permite experimentar fácilmente con diferentes arquitecturas de modelos e hiperparámetros, permitiendo iteraciones rápidas y mejoras de los modelos de machine learning.
8.1.1 Amazon Web Services (AWS)
AWS ofrece una plataforma integral de machine learning llamada Amazon SageMaker, que revoluciona todo el flujo de trabajo de machine learning. SageMaker proporciona una solución de extremo a extremo para científicos de datos y desarrolladores, simplificando el proceso de construcción, entrenamiento e implementación de modelos de machine learning a gran escala. Este servicio potente aborda muchos de los desafíos asociados con los flujos de trabajo tradicionales de machine learning, como la gestión de infraestructura, la preparación de datos y la optimización de modelos.
El ecosistema de Amazon SageMaker incluye varios componentes clave que funcionan de manera fluida:
- SageMaker Studio: Este entorno de desarrollo integrado (IDE) completamente integrado sirve como un centro central para proyectos de machine learning. Ofrece un espacio de trabajo colaborativo donde los científicos de datos pueden escribir código, experimentar con modelos y visualizar resultados. SageMaker Studio admite cuadernos populares como Jupyter, lo que facilita que los equipos compartan conocimientos y realicen iteraciones en los modelos de manera eficiente.
- SageMaker Training: Este componente aprovecha el poder de la computación distribuida para acelerar el entrenamiento de modelos. Proporciona y gestiona automáticamente la infraestructura necesaria, permitiendo a los usuarios centrarse en el desarrollo de algoritmos en lugar de la gestión de recursos. SageMaker Training admite varios frameworks de machine learning, incluidos TensorFlow, PyTorch y scikit-learn, brindando flexibilidad en el desarrollo de modelos.
- SageMaker Inference: Una vez que un modelo ha sido entrenado, SageMaker Inference se encarga de implementarlo como un servicio escalable y listo para producción. Maneja las complejidades de configurar puntos finales, gestionar recursos de cómputo y realizar escalado automático en función del tráfico entrante. Este servicio admite inferencias tanto en tiempo real como por lotes, atendiendo a diversas necesidades de aplicación.
- SageMaker Ground Truth: Esta función simplifica el proceso, a menudo largo, de etiquetado de datos. Proporciona herramientas para crear conjuntos de datos de entrenamiento de alta calidad, incluyendo soporte para flujos de trabajo de etiquetado humano y etiquetado automatizado utilizando técnicas de aprendizaje activo.
- SageMaker Experiments: Este componente ayuda a organizar, rastrear y comparar experimentos de machine learning. Captura automáticamente parámetros de entrada, configuraciones y resultados, lo que permite a los científicos de datos reproducir experimentos y realizar iteraciones en los modelos de manera más efectiva.
Al integrar estos componentes potentes, Amazon SageMaker reduce significativamente las barreras de entrada para proyectos de machine learning, permitiendo a las organizaciones desarrollar e implementar rápidamente soluciones sofisticadas de IA en varios dominios. Ya sea que estés trabajando en visión por computadora, procesamiento del lenguaje natural o análisis predictivo, SageMaker proporciona las herramientas y la infraestructura para dar vida a tus ideas de machine learning de manera eficiente y a gran escala.
Ejemplo: Entrenamiento de un Modelo de Machine Learning en AWS SageMaker
A continuación, se muestra un ejemplo de cómo entrenar un modelo simple de machine learning (por ejemplo, un árbol de decisión) utilizando SageMaker en AWS:
import sagemaker
from sagemaker import get_execution_role
from sagemaker.sklearn.estimator import SKLearn
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
import pandas as pd
import numpy as np
# Define the AWS role and set up the SageMaker session
role = get_execution_role()
sagemaker_session = sagemaker.Session()
# Prepare the Iris dataset
iris = load_iris()
X, y = iris.data, iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Create a DataFrame and save it to S3
train_data = pd.DataFrame(np.column_stack((X_train, y_train)),
columns=['sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'target'])
train_data_s3 = sagemaker_session.upload_data(
path=train_data.to_csv(index=False),
key_prefix='sagemaker/sklearn-iris'
)
# Define the SKLearn estimator
sklearn_estimator = SKLearn(
entry_point='iris_train.py',
role=role,
instance_count=1,
instance_type='ml.m5.large',
framework_version='0.23-1',
hyperparameters={
'max_depth': 5,
'n_estimators': 100
}
)
# Train the model
sklearn_estimator.fit({'train': train_data_s3})
# Deploy the trained model
predictor = sklearn_estimator.deploy(
initial_instance_count=1,
instance_type='ml.t2.medium'
)
# Make predictions
test_data = X_test[:5].tolist()
predictions = predictor.predict(test_data)
print(f"Predictions: {predictions}")
# Clean up
predictor.delete_endpoint()
Este ejemplo de código ampliado demuestra un flujo de trabajo más completo para entrenar e implementar un modelo de machine learning utilizando Amazon SageMaker. Desglosémoslo paso a paso:
- Importar las bibliotecas necesarias:
- SDK de SageMaker para interactuar con los servicios de AWS
- Scikit-learn para manejo y preprocesamiento de conjuntos de datos
- Pandas y NumPy para la manipulación de datos
- Configurar la sesión y el rol de SageMaker:
- Recuperar el rol de ejecución para SageMaker
- Inicializar una sesión de SageMaker
- Preparar el conjunto de datos:
- Cargar el conjunto de datos Iris usando scikit-learn
- Dividir los datos en conjuntos de entrenamiento y prueba
- Subir los datos de entrenamiento a S3:
- Convertir los datos de entrenamiento a un DataFrame
- Subir los datos a un bucket de S3 usando la sesión de SageMaker
- Definir el estimador de SKLearn:
- Especificar el script de entrada (iris_train.py)
- Configurar el tipo y la cantidad de instancias
- Elegir la versión del framework
- Establecer los hiperparámetros para el modelo
- Entrenar el modelo:
- Llamar al método fit en el estimador, pasando la ubicación en S3 de los datos de entrenamiento
- Implementar el modelo entrenado:
- Implementar el modelo en un endpoint de SageMaker
- Especificar el tipo y la cantidad de instancias para el endpoint
- Hacer predicciones:
- Usar el modelo implementado para hacer predicciones en los datos de prueba
- Limpiar:
- Eliminar el endpoint para evitar cargos innecesarios
Este ejemplo muestra un escenario realista, que incluye la preparación de datos, la especificación de hiperparámetros y la gestión adecuada de recursos. También demuestra cómo manejar todo el ciclo de vida de un modelo de machine learning en SageMaker, desde el entrenamiento hasta la implementación y la predicción.
8.1.2 Google Cloud Platform (GCP)
La AI Platform de Google Cloud ofrece un ecosistema robusto para los profesionales de machine learning, brindando un conjunto de herramientas y servicios que cubren todo el ciclo de vida del ML. Esta plataforma integral está diseñada para agilizar el proceso de desarrollo, entrenamiento e implementación de modelos sofisticados de machine learning, con un énfasis particular en la integración con el poderoso framework TensorFlow de Google.
La integración fluida de AI Platform con TensorFlow permite a los desarrolladores aprovechar todo el potencial de esta biblioteca de código abierto, facilitando la creación e implementación de modelos complejos de deep learning con relativa facilidad. Esta sinergia entre Google Cloud y TensorFlow crea un entorno potente para construir soluciones de inteligencia artificial de vanguardia en diversos dominios, como la visión por computadora, el procesamiento del lenguaje natural y el análisis predictivo.
Algunas de las características destacadas de la AI Platform de Google Cloud incluyen:
- AI Platform Notebooks: Esta función proporciona un entorno de cuadernos Jupyter totalmente administrado, ofreciendo a los científicos de datos e ingenieros de ML un espacio de trabajo flexible e interactivo para el desarrollo de modelos. Estos cuadernos pueden conectarse sin problemas a GPUs (Unidades de Procesamiento Gráfico) y TPUs (Unidades de Procesamiento Tensorial) de alto rendimiento, los aceleradores de IA diseñados a medida por Google. Esta capacidad permite una rápida creación de prototipos y experimentación con modelos computacionalmente intensivos, reduciendo significativamente el tiempo desde el concepto hasta la implementación.
- AI Platform Training: Este servicio robusto está diseñado para manejar las complejidades del entrenamiento de modelos de machine learning en conjuntos de datos a gran escala. Aprovechando los recursos de computación distribuida, permite a los usuarios entrenar modelos mucho más rápido de lo que sería posible en una sola máquina. Este servicio admite una amplia gama de frameworks de ML y puede escalar automáticamente los recursos según los requisitos del trabajo de entrenamiento, facilitando desde pequeños experimentos hasta el entrenamiento de modelos de producción a gran escala.
- AI Platform Prediction: Una vez que un modelo ha sido entrenado, este servicio facilita su implementación como una API REST escalable. Admite tanto predicciones en tiempo real para aplicaciones sensibles a la latencia como predicciones por lotes para tareas de inferencia a gran escala. El servicio gestiona la infraestructura subyacente, permitiendo a los desarrolladores centrarse en el rendimiento del modelo y la integración de aplicaciones, sin preocuparse por la gestión de servidores y el escalado.
Estas características, que trabajan en conjunto, proporcionan un entorno poderoso y flexible para proyectos de machine learning de todos los tamaños. Ya sea que seas un científico de datos que trabaja solo en una prueba de concepto o parte de un gran equipo que implementa sistemas críticos de IA, la AI Platform de Google Cloud ofrece las herramientas y la escalabilidad necesarias para respaldar tus necesidades.
Ejemplo: Entrenamiento de un Modelo TensorFlow en Google Cloud AI Platform
A continuación, se muestra cómo entrenar un modelo de TensorFlow en la AI Platform de Google Cloud:
# Import necessary libraries
from google.cloud import storage
from google.cloud import aiplatform
# Set up Google Cloud project and bucket
project_id = 'my-google-cloud-project'
bucket_name = 'my-ml-bucket'
region = 'us-central1'
# Initialize clients
storage_client = storage.Client(project=project_id)
aiplatform.init(project=project_id, location=region)
# Create a bucket if it doesn't exist
bucket = storage_client.lookup_bucket(bucket_name)
if bucket is None:
bucket = storage_client.create_bucket(bucket_name)
print(f"Bucket {bucket_name} created.")
else:
print(f"Bucket {bucket_name} already exists.")
# Upload training data to Cloud Storage
blob = bucket.blob('training-data/train_data.csv')
blob.upload_from_filename('train_data.csv')
print(f"Training data uploaded to gs://{bucket_name}/training-data/train_data.csv")
# Define the AI Platform training job using Python Package Training
job_display_name = 'my-tf-job'
python_package_gcs_uri = f'gs://{bucket_name}/trainer/tensorflow-trainer.tar.gz'
python_module_name = 'trainer.task'
job = aiplatform.CustomPythonPackageTrainingJob(
display_name=job_display_name,
python_package_gcs_uri=python_package_gcs_uri,
python_module_name=python_module_name,
container_uri='us-docker.pkg.dev/vertex-ai/training/tf-cpu.2-3:latest'
)
# Define dataset
dataset = aiplatform.TabularDataset.create(
display_name='my_dataset',
gcs_source=[f'gs://{bucket_name}/training-data/train_data.csv']
)
# Define training parameters
training_fraction_split = 0.8
validation_fraction_split = 0.1
test_fraction_split = 0.1
# Start the training job
model = job.run(
dataset=dataset,
model_display_name='my-tf-model',
training_fraction_split=training_fraction_split,
validation_fraction_split=validation_fraction_split,
test_fraction_split=test_fraction_split,
sync=True
)
print(f"Model training completed. Model resource name: {model.resource_name}")
# Deploy the model to an endpoint
endpoint = aiplatform.Endpoint.create(display_name="my-tf-endpoint")
endpoint.deploy(
model=model,
machine_type='n1-standard-4',
min_replica_count=1,
max_replica_count=2,
sync=True
)
print(f"Model deployed to endpoint: {endpoint.resource_name}")
Este ejemplo de código demuestra un flujo de trabajo integral para el entrenamiento e implementación de un modelo de machine learning utilizando Google Cloud Vertex AI.
- Importar Bibliotecas Necesarias
- Importamos los módulos requeridos de Google Cloud Storage y Google Cloud AI Platform.
- El
storage.Client
se utiliza para interactuar con Cloud Storage. - El
aiplatform
SDK se utiliza para gestionar el entrenamiento e implementación de IA.
- Configurar Proyecto y Bucket de Google Cloud
- Definimos:
project_id
: El proyecto de Google Cloud donde se crearán los recursos de IA.bucket_name
: El bucket de Cloud Storage utilizado para almacenar datos de entrenamiento y artefactos del modelo.region
: La región de cómputo donde se ejecutarán los trabajos de IA.
- Inicializamos:
- Cliente de Google Cloud Storage para gestionar operaciones de almacenamiento.
- Google AI Platform (
aiplatform
) para manejar flujos de trabajo de IA.
- Definimos:
- Crear un Bucket de Cloud Storage (Si No Existe)
- Verificamos si el bucket especificado existe.
- Si el bucket no existe, creamos uno nuevo.
- Esto asegura una configuración de almacenamiento adecuada antes de proceder con la carga de datos.
- Cargar Datos de Entrenamiento a Cloud Storage
- Cargamos un archivo CSV (
train_data.csv
) que contiene el conjunto de datos de entrenamiento a Cloud Storage. - Esto permite que el trabajo de entrenamiento de AI Platform acceda a datos estructurados de entrenamiento.
- Cargamos un archivo CSV (
- Definir el Trabajo de Entrenamiento de AI Platform
- Definimos un Trabajo de Entrenamiento de Paquete Python Personalizado, que permite un entrenamiento flexible de modelos usando scripts de Python.
- Componentes clave:
- Nombre del trabajo: Un nombre amigable para rastrear el trabajo de entrenamiento.
- Ubicación del paquete Python: Especifica el script de entrenamiento (
tensorflow-trainer.tar.gz
) almacenado en Cloud Storage. - Nombre del módulo Python: Especifica el punto de entrada (
trainer.task
) para ejecutar el trabajo de entrenamiento. - URI del contenedor: Especifica el contenedor de entrenamiento de TensorFlow que ejecuta el trabajo.
- Crear y Preparar el Dataset
- Creamos un Dataset de Vertex AI a partir del archivo CSV cargado.
- El dataset se utiliza para entrenamiento, validación y pruebas.
- Definir Parámetros de Entrenamiento
- Dividimos el dataset en:
- 80% Entrenamiento
- 10% Validación
- 10% Pruebas
- Estas proporciones de división ayudan al modelo a aprender y generalizar efectivamente.
- Dividimos el dataset en:
- Ejecutar el Trabajo de Entrenamiento
- Iniciamos el trabajo de entrenamiento con:
- El dataset.
- El nombre de visualización del modelo.
- La división de entrenamiento-validación-prueba.
sync=True
asegura que el script espere hasta que el entrenamiento se complete antes de continuar.
- Iniciamos el trabajo de entrenamiento con:
- Implementar el Modelo Entrenado
- Después del entrenamiento, implementamos el modelo para servir predicciones.
- Pasos:
- Crear un endpoint para alojar el modelo.
- Implementar el modelo en el endpoint.
- Configurar la implementación:
- Tipo de máquina:
n1-standard-4
. - Auto-escalado: Mínimo 1 réplica, Máximo 2 réplicas.
- Tipo de máquina:
- Ciclo de Vida Completo de un Modelo de Machine Learning en Google CloudEste ejemplo demuestra:
- Preparación de Datos: Carga y organización de datos de entrenamiento en Cloud Storage.
- Entrenamiento del Modelo: Ejecución de un trabajo de entrenamiento usando Google Cloud Vertex AI.
- Implementación del Modelo: Implementación del modelo entrenado en un endpoint para predicciones en tiempo real.
Este flujo de trabajo de principio a fin automatiza el proceso de entrenamiento e implementación, haciéndolo escalable, eficiente y listo para producción.
8.1.3 Microsoft Azure
Azure Machine Learning de Microsoft es una plataforma integral basada en la nube que ofrece un conjunto completo de herramientas y servicios para todo el ciclo de vida del machine learning. Este poderoso ecosistema está diseñado para satisfacer las necesidades de científicos de datos, ingenieros de machine learning y desarrolladores de todos los niveles de habilidad, proporcionando un entorno fluido para construir, entrenar e implementar modelos de IA a escala. Azure Machine Learning se destaca por su flexibilidad, permitiendo a los usuarios trabajar con sus herramientas y frameworks preferidos mientras aprovechan la robusta infraestructura de la nube de Azure.
Las características clave de Azure Machine Learning incluyen:
- Preparación y gestión de datos: Azure ML ofrece herramientas avanzadas para la ingestión, limpieza y transformación de datos. Proporciona servicios automatizados de etiquetado de datos que utilizan machine learning para acelerar el proceso de anotación de grandes conjuntos de datos. Además, sus capacidades de ingeniería de características ayudan a extraer información significativa de los datos brutos, mejorando el rendimiento del modelo.
- Desarrollo y entrenamiento de modelos: La plataforma admite una amplia gama de frameworks de machine learning, incluidos TensorFlow, PyTorch y scikit-learn. Proporciona capacidades de entrenamiento distribuido, lo que permite a los usuarios escalar el entrenamiento de sus modelos en clústeres de GPUs u otro hardware especializado. Azure ML también ofrece características de machine learning automatizado (AutoML), que pueden seleccionar automáticamente los mejores algoritmos y hiperparámetros para un conjunto de datos determinado.
- Despliegue y gestión de modelos: Azure ML simplifica el proceso de despliegue de modelos en entornos de producción. Admite la implementación en varios destinos, incluidos servicios web para inferencia en tiempo real, Azure Kubernetes Service (AKS) para implementaciones escalables en contenedores, y Azure IoT Edge para escenarios de computación en el borde. La plataforma también proporciona herramientas para monitorear el rendimiento de los modelos, gestionar diferentes versiones e implementar pipelines de CI/CD para flujos de trabajo de ML.
- MLOps (Operaciones de Machine Learning): Azure ML incorpora capacidades robustas de MLOps, lo que permite a los equipos optimizar el ciclo de vida completo del machine learning. Esto incluye control de versiones para datos y modelos, reproducibilidad de experimentos y flujos de trabajo automatizados para el reentrenamiento e implementación de modelos.
- AI explicable y ML responsable: La plataforma ofrece herramientas para la interpretabilidad de los modelos y la evaluación de equidad, ayudando a las organizaciones a construir soluciones de IA transparentes y éticas. Estas características son cruciales para mantener la confianza y el cumplimiento en sistemas de IA, especialmente en industrias reguladas.
Al proporcionar este conjunto completo de herramientas y servicios, Azure Machine Learning permite a las organizaciones acelerar sus iniciativas de IA, desde la experimentación hasta la producción, manteniendo el control, la transparencia y la escalabilidad a lo largo del proceso.
Ejemplo: Entrenamiento e Implementación de un Modelo en Azure ML Studio
Azure ML Studio permite a los usuarios entrenar modelos de forma interactiva o programáticamente usando el SDK de Azure Machine Learning:
from azureml.core import Workspace, Experiment, Model
from azureml.train.sklearn import SKLearn
from azureml.train.estimator import Estimator
from azureml.core.webservice import AciWebservice
from azureml.core.model import InferenceConfig
# Connect to the Azure workspace
ws = Workspace.from_config()
# Define the experiment
experiment = Experiment(workspace=ws, name='my-sklearn-experiment')
# Define the training script and compute target
script_params = {
'--data-folder': 'data',
'--C': 1.0,
'--max_iter': 100
}
sklearn_estimator = Estimator(
source_directory='./src',
entry_script='train.py',
script_params=script_params,
compute_target='my-compute-cluster',
conda_packages=['scikit-learn', 'pandas', 'numpy']
)
# Submit the experiment
run = experiment.submit(sklearn_estimator)
print("Experiment submitted. Waiting for completion...")
run.wait_for_completion(show_output=True)
# Register the model
model = run.register_model(
model_name='sklearn-model',
model_path='outputs/model.pkl',
tags={'area': 'classification', 'type': 'sklearn-svm'},
properties={'accuracy': run.get_metrics()['accuracy']}
)
# Define inference configuration
inference_config = InferenceConfig(
entry_script="score.py",
source_directory="./src",
conda_file="environment.yml"
)
# Define deployment configuration
deployment_config = AciWebservice.deploy_configuration(
cpu_cores=1,
memory_gb=1,
tags={'area': 'classification', 'type': 'sklearn-svm'},
description='SVM classifier deployed as a web service'
)
# Deploy the model
service = Model.deploy(
workspace=ws,
name='sklearn-service',
models=[model],
inference_config=inference_config,
deployment_config=deployment_config
)
service.wait_for_deployment(show_output=True)
print(f"Service deployed. Scoring URI: {service.scoring_uri}")
Este ejemplo de código demuestra un flujo de trabajo integral para entrenar, registrar e implementar un modelo de machine learning utilizando Azure Machine Learning.
Desglosemos paso a paso:
- Importación de los módulos necesarios:
- Importamos módulos adicionales de azureml.core para el registro e implementación de modelos.
- Conexión al espacio de trabajo de Azure:
- Usamos
Workspace.from_config()
para conectarnos a nuestro espacio de trabajo de Azure ML. Esto asume que tienes un archivoconfig.json
en tu directorio de trabajo con los detalles del espacio de trabajo.
- Usamos
- Definición del experimento:
- Creamos un objeto Experiment, que es un contenedor lógico para nuestras ejecuciones de entrenamiento.
- Configuración del estimador:
- Creamos un objeto Estimator que define cómo ejecutar nuestro script de entrenamiento.
- Especificamos el directorio fuente, el script de entrada, los parámetros del script, el destino de cómputo y los paquetes requeridos.
- Este ejemplo asume que estamos utilizando scikit-learn e incluye parámetros adicionales para el clasificador SVM.
- Envió del experimento:
- Enviamos el experimento usando el estimador y esperamos a que se complete.
- El método
wait_for_completion()
nos permite ver la salida en tiempo real.
- Registro del modelo:
- Una vez que se completa el entrenamiento, registramos el modelo con metadatos adicionales (etiquetas y propiedades).
- Asumimos que el modelo está guardado como 'model.pkl' en el directorio 'outputs'.
- Definición de la configuración de inferencia:
- Creamos un objeto InferenceConfig que especifica cómo ejecutar el modelo para inferencia.
- Esto incluye el script de puntuación (score.py) y la definición del entorno (environment.yml).
- Definición de la configuración de implementación:
- Configuramos una AciWebservice.deploy_configuration() para especificar los recursos y metadatos para nuestra implementación.
- Implementación del modelo:
- Usamos Model.deploy() para implementar nuestro modelo como un servicio web.
- Este método toma como parámetros nuestro espacio de trabajo, modelo, configuración de inferencia y configuración de implementación.
- Esperar la implementación e imprimir la URI de puntuación:
- Esperamos a que se complete la implementación y luego imprimimos la URI de puntuación, que se puede utilizar para hacer predicciones.
Este ejemplo proporciona un flujo de trabajo realista y completo, que incluye el registro del modelo con metadatos, la configuración de inferencia y la implementación como un servicio web. Demuestra cómo utilizar Azure ML para gestionar el ciclo de vida completo de un modelo de machine learning, desde el entrenamiento hasta la implementación.