Capítulo 1. Introducción a la Ciencia de Datos en AWS
Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com
En este capítulo, hablamos de las ventajas de construir proyectos de ciencia de datos en la nube. Comenzamos hablando de las ventajas de la computación en nube. A continuación, describimos un flujo de trabajo típico de aprendizaje automático y los retos habituales para trasladar nuestros modelos y aplicaciones de la fase de creación de prototipos a la de producción. Mencionamos las ventajas generales de desarrollar proyectos de ciencia de datos en Amazon Web Services (AWS) e introducimos los servicios de AWS relevantes para cada paso del flujo de trabajo de desarrollo de modelos. También compartimos las buenas prácticas de arquitectura, concretamente en torno a la excelencia operativa, la seguridad, la fiabilidad, el rendimiento y la optimización de costes.
Ventajas de la computación en nube
Nube La informática permite la entrega bajo demanda de recursos informáticos a través de Internet con precios de pago por uso. Así, en lugar de comprar, poseer y mantener nuestros propios centros de datos y servidores, podemos adquirir tecnología como potencia de cálculo, almacenamiento, bases de datos y otros servicios cuando los necesitemos. Al igual que una compañía eléctrica envía electricidad instantáneamente cuando accionamos un interruptor de la luz en nuestra casa, la nube suministra recursos informáticos a la carta con sólo pulsar un botón o invocar una API.
"No hay algoritmo de compresión para la experiencia" es una famosa cita de Andy Jassy, director general de Amazon Web Services. La cita expresa la larga experiencia de la empresa en la creación de servicios fiables, seguros y eficaces desde 2006.
AWS ha ido ampliando continuamente su cartera de servicios para dar soporte a prácticamente cualquier carga de trabajo en la nube, incluidos muchos servicios y características en el área de la inteligencia artificial y el aprendizaje automático. Muchos de estos servicios de IA y aprendizaje automático se derivan del trabajo pionero de Amazon en sistemas de recomendación, visión por ordenador, voz/texto y redes neuronales durante los últimos 20 años. Un artículo de de 2003 titulado "Amazon.com Recommendations: Filtrado Colaborativo Artículo a Artículo" ganó recientemente el premio del Instituto de Ingenieros Eléctricos y Electrónicos como artículo que resistió la "prueba del tiempo". Repasemos las ventajas de la computación en nube en el contexto de los proyectos de ciencia de datos en AWS.
Agilidad
La computación en nube nos permite activar recursos a medida que los necesitamos. Esto nos permite experimentar con rapidez y frecuencia. Tal vez queramos probar una nueva biblioteca para ejecutar comprobaciones de calidad de datos en nuestro conjunto de datos, o acelerar el entrenamiento de modelos aprovechando la última generación de recursos de computación GPU. Podemos poner en marcha decenas, cientos o incluso miles de servidores en cuestión de minutos para realizar esas tareas. Si un experimento fracasa, siempre podemos desaprovisionar esos recursos sin ningún riesgo.
Ahorro de costes
La computación en nube nos permite cambiar gastos de capital por gastos variables. Sólo pagamos por lo que utilizamos, sin necesidad de invertir por adelantado en hardware que puede quedar obsoleto en unos meses. Si activamos recursos informáticos para realizar nuestras comprobaciones de calidad de datos, transformaciones de datos o entrenamiento de modelos, sólo pagamos por el tiempo que esos recursos informáticos están en uso. Podemos ahorrar aún más aprovechando las instancias de subasta de Amazon EC2 para el entrenamiento de nuestros modelos. Las instancias puntuales nos permiten aprovechar la capacidad no utilizada de EC2 en la nube de AWS y ofrecen hasta un 90% de descuento en comparación con las instancias bajo demanda. Las instancias reservadas y los planes de ahorro nos permiten ahorrar dinero pagando por adelantado durante un tiempo determinado.
Elasticidad
La computación en nube nos permite ampliar o reducir automáticamente nuestros recursos para adaptarlos a las necesidades de nuestra aplicación. Digamos que hemos desplegado nuestra aplicación de ciencia de datos en producción y nuestro modelo está sirviendo predicciones en tiempo real. Ahora podemos aumentar automáticamente los recursos de alojamiento del modelo en caso de que observemos un pico en las solicitudes del modelo. Del mismo modo, podemos reducir automáticamente los recursos cuando disminuya el número de solicitudes del modelo. No hay necesidad de sobreaprovisionar recursos para manejar picos de carga.
Innovar más rápido
La computación en nube nos permite innovar más rápidamente, ya que podemos centrarnos en desarrollar aplicaciones que diferencien nuestro negocio, en lugar de dedicar tiempo al pesado e indiferenciado trabajo de gestionar la infraestructura. La nube nos ayuda a experimentar con nuevos algoritmos, marcos de trabajo y hardware en cuestión de segundos, en lugar de meses.
Implementación global en minutos
La computación en nube nos permite implementar nuestras aplicaciones de ciencia de datos en todo el mundo en cuestión de minutos. En nuestra economía global, es importante estar cerca de nuestros clientes. AWS tiene el concepto de Región, que es una ubicación física en todo el mundo donde AWS agrupa centros de datos. Cada grupo de centros de datos lógicos se denomina Zona de Disponibilidad (AZ). Cada Región de AWS consiste en múltiples AZs aisladas y físicamente separadas dentro de un área geográfica. El número de Regiones y AZ de AWS crece continuamente.
Podemos aprovechar la huella global de las Regiones y AZ de AWS para implementar nuestras aplicaciones de ciencia de datos cerca de nuestros clientes, mejorar el rendimiento de las aplicaciones con tiempos de respuesta ultrarrápidos y cumplir las restricciones de privacidad de datos de cada Región.
Transición fluida del prototipo a la producción
Una de las ventajas de desarrollar proyectos de ciencia de datos en la nube es la transición fluida del prototipo a la producción. Podemos pasar de ejecutar código de prototipado de modelos en nuestro cuaderno a ejecutar comprobaciones de calidad de datos o entrenamiento de modelos distribuidos en petabytes de datos en cuestión de minutos. Y una vez que hayamos terminado, podemos implementar nuestros modelos entrenados para realizar predicciones en tiempo real o por lotes para millones de usuarios de todo el mundo.
La creación de prototipos suele tener lugar en entornos de desarrollo de una sola máquina utilizando Jupyter Notebook, NumPy y pandas. Este enfoque funciona bien para conjuntos de datos pequeños. Cuando se amplía para trabajar con grandes conjuntos de datos, superaremos rápidamente los recursos de CPU y RAM de una sola máquina. Además, es posible que queramos utilizar GPUs -o varias máquinas- para acelerar el entrenamiento de nuestro modelo. Esto no suele ser posible con una sola máquina.
El siguiente reto surge cuando queremos implementar nuestro modelo (o aplicación) en producción. También tenemos que asegurarnos de que nuestra aplicación puede manejar miles o millones de usuarios simultáneos a escala global.
La implementación en producción suele requerir una estrecha colaboración entre varios equipos, como los de ciencia de datos, ingeniería de datos, desarrollo de aplicaciones y DevOps. Y una vez que nuestra aplicación se ha implementado con éxito, tenemos que monitorizar continuamente y reaccionar ante los problemas de rendimiento del modelo y de calidad de los datos que puedan surgir después de que el modelo se pase a producción.
Desarrollar proyectos de ciencia de datos en la nube nos permite pasar nuestros modelos sin problemas de la creación de prototipos a la producción, eliminando al mismo tiempo la necesidad de construir nuestra propia infraestructura física. Los servicios gestionados en la nube nos proporcionan las herramientas para automatizar nuestros flujos de trabajo e implementar modelos en un entorno de producción escalable y de alto rendimiento .
Pipelines y flujos de trabajo de la ciencia de datos
Datos Los procesos y flujos de trabajo científicos implican muchos pasos complejos, multidisciplinares e iterativos. Tomemos como ejemplo un flujo de trabajo típico de desarrollo de modelos de aprendizaje automático. Empezamos con la preparación de los datos, luego pasamos al entrenamiento y ajuste del modelo. Finalmente, implementamos nuestro modelo (o aplicación) en un entorno de producción. Cada uno de esos pasos consta de varias subtareas, como se muestra en la Figura 1-1.
Si utilizamos AWS, es probable que nuestros datos brutos ya estén en Amazon Simple Storage Service (Amazon S3) y almacenados como CSV, Apache Parquet o equivalente. Podemos empezar a entrenar modelos rápidamente utilizando los servicios de IA de Amazon o de aprendizaje automático de máquinas (AutoML) para establecer el rendimiento de referencia del modelo, apuntando directamente a nuestro conjunto de datos y pulsando un solo botón de "entrenar". Profundizaremos en los Servicios de IA y AutoML en los Capítulos 2 y 3.
Para modelos de aprendizaje automático más personalizados -el objetivo principal de este libro- podemos iniciar las fases manuales de ingesta y exploración de datos, incluidos el análisis de datos, las comprobaciones de la calidad de los datos, los estadísticos de resumen, los valores perdidos, los cálculos de cuantiles, el análisis sesgado de datos, el análisis de correlaciones, etc. En los Capítulos 4 y 5 profundizamos en la ingesta y exploración de datos.
A continuación, debe definir el tipo de problema de aprendizaje automático: regresión, clasificación, agrupación, etc. Una vez identificado el tipo de problema, podemos seleccionar el algoritmo de aprendizaje automático más adecuado para resolverlo. Dependiendo del algoritmo que elijamos, tendremos que seleccionar un subconjunto de nuestros datos para entrenar, validar y probar nuestro modelo. Nuestros datos brutos suelen necesitar ser transformados en vectores matemáticos para permitir la optimización numérica y el entrenamiento del modelo. Por ejemplo, podríamos decidir transformar las columnas categóricas en vectores codificados en un punto o convertir las columnas basadas en texto en vectores codificados en palabras. Una vez que hayamos transformado un subconjunto de los datos brutos en características, debemos dividir las características en conjuntos de características de entrenamiento, validación y prueba para preparar el entrenamiento, el ajuste y la prueba del modelo. Profundizaremos en la selección y transformación de características en los Capítulos 5 y 6.
En la fase de entrenamiento del modelo, elegimos un algoritmo y entrenamos nuestro modelo con nuestro conjunto de características de entrenamiento para verificar que el código y el algoritmo de nuestro modelo son adecuados para resolver el problema dado. Profundizaremos en el entrenamiento del modelo en el Capítulo 7.
En la fase de ajuste del modelo, ajustamos los hiperparámetros del algoritmo y evaluamos el rendimiento del modelo con el conjunto de características de validación. Repetimos estos pasos -añadiendo más datos o cambiando los hiperparámetros según sea necesario- hasta que el modelo alcance los resultados esperados en el conjunto de características de prueba. Estos resultados deben estar en consonancia con nuestro objetivo empresarial antes de pasar el modelo a producción. Profundizaremos en el ajuste de hiperparámetros en el Capítulo 8.
La etapa final -pasar del prototipo a la producción- suele presentar el mayor desafío para los científicos de datos y los profesionales del aprendizaje automático. En el Capítulo 9 profundizamos en la implementación de modelos.
En el Capítulo 10, lo unimos todo en una canalización automatizada. En el Capítulo 11, realizamos análisis de datos y aprendizaje automático sobre datos en streaming. El Capítulo 12 resume las buenas prácticas para asegurar la ciencia de datos en la nube.
Una vez que hayamos construido cada paso individual de nuestro flujo de trabajo de aprendizaje automático, podemos empezar a automatizar los pasos en una única canalización de aprendizaje automático repetible. Cuando llegan nuevos datos a S3, nuestra canalización se vuelve a ejecutar con los datos más recientes y envía el último modelo a producción para que sirva a nuestras aplicaciones. Hay varias herramientas de orquestación de flujos de trabajo y servicios de AWS disponibles para ayudarnos a crear canalizaciones automatizadas de aprendizaje automático.
Canalizaciones de Amazon SageMaker
Amazon SageMaker Pipelines es la forma estándar, con todas las funciones y más completa de implementar pipelines de IA y aprendizaje automático en Amazon SageMaker. Los SageMaker Pipelines se integran con SageMaker Feature Store, SageMaker Data Wrangler, SageMaker Processing Jobs, SageMaker Training Jobs, SageMaker Hyper-Parameter Tuning Jobs, SageMaker Model Registry, SageMaker Batch Transform y SageMaker Model Endpoints, de los que hablaremos a lo largo del libro. Nos sumergiremos en profundidad en SageMaker Pipelines gestionados en el Capítulo 10, junto con discusiones sobre cómo construir pipelines con AWS Step Functions, Kubeflow Pipelines, Apache Airflow, MLflow, TFX, y flujos de trabajo human-in-the-loop.
SDK de Ciencia de Datos de AWS Step Functions
Step Functions, un servicio gestionado de AWS, es una gran opción para construir flujos de trabajo complejos sin tener que construir y mantener nuestra propia infraestructura. Podemos utilizar el SDK de Ciencia de Datos de Step Functions para construir pipelines de aprendizaje automático desde entornos Python, como Jupyter Notebook. Profundizaremos en las Funciones por Pasos gestionadas para el aprendizaje automático en el Capítulo 10.
Tuberías Kubeflow
Kubeflow es un ecosistema relativamente nuevo construido sobre Kubernetes que incluye un subsistema de orquestación llamado Kubeflow Pipelines. Con Kubeflow, podemos reiniciar pipelines fallidos, programar ejecuciones de pipelines, analizar métricas de entrenamiento y realizar un seguimiento del linaje de pipelines. En el capítulo 10 profundizaremos en la gestión de un clúster de Kubeflow en Amazon Elastic Kubernetes Service (Amazon EKS).
Flujos de trabajo administrados para Apache Airflow en AWS
Apache Airflow es una opción muy madura y popular, creada principalmente para orquestar la ingeniería de datos y las canalizaciones de extracción-transformación-carga (ETL). Podemos utilizar Airflow para crear flujos de trabajo como grafos acíclicos dirigidos de tareas. El programador de Airflow ejecuta nuestras tareas en un conjunto de trabajadores siguiendo las dependencias especificadas. A través de la interfaz de usuario de Airflow, podemos visualizar las canalizaciones que se ejecutan en producción, monitorizar el progreso y solucionar problemas cuando sea necesario. En el Capítulo 10 profundizaremos en Amazon Managed Workflows para Apache Airflow (Amazon MWAA).
MLflow
MLflow es un proyecto de código abierto que inicialmente se centraba en el seguimiento de experimentos, pero que ahora admite pipelines denominados flujos de trabajo MLflow. También podemos utilizar MLflow para rastrear experimentos con flujos de trabajo Kubeflow y Apache Airflow. Sin embargo, MLflow requiere que construyamos y mantengamos nuestros propios clusters de Amazon EC2 o Amazon EKS. Hablaremos de MLflow con más detalle en el Capítulo 10.
TensorFlow ampliado
TensorFlow Extended (TFX) es una colección de código abierto de bibliotecas de Python utilizadas dentro de un orquestador de canalizaciones como AWS Step Functions, Kubeflow Pipelines, Apache Airflow o MLflow. TFX es específico de TensorFlow y depende de otro proyecto de código abierto, Apache Beam, para escalar más allá de un único nodo de procesamiento. Hablaremos de TFX con más detalle en el Capítulo 10.
Flujos de trabajo humanos
Aunque los servicios de IA y aprendizaje automático de nos facilitan la vida, los humanos están lejos de quedar obsoletos. De hecho, el concepto de "humano en el bucle" ha surgido como una piedra angular importante en muchos flujos de trabajo de IA/ML. Los humanos proporcionan una importante garantía de calidad para los modelos sensibles y regulados en producción.
Amazon Augmented AI (Amazon A2I) es un servicio totalmente administrado para desarrollar flujos de trabajo humanos que incluyen una interfaz de usuario limpia, control de acceso basado en roles con AWS Identity and Access Management (IAM) y almacenamiento de datos escalable con S3. Amazon A2I está integrado con muchos servicios de Amazon, como Amazon Rekognition para la moderación de contenido y Amazon Textract para la extracción de datos de formularios. También podemos utilizar Amazon A2I con Amazon SageMaker y cualquiera de nuestros modelos ML personalizados. En profundizaremos en los flujos de trabajo humanos en el bucle en el Capítulo 10.
Buenas prácticas de MLOps
El campo de las operaciones de aprendizaje automático (MLOps) ha surgido en la última década para describir los desafíos únicos de operar sistemas de "software más datos" como la IA y el aprendizaje automático. Con MLOps, estamos desarrollando la arquitectura integral para la formación automatizada de modelos, el alojamiento de modelos y el monitoreo de canalizaciones. Utilizando una estrategia completa de MLOps desde el principio, estamos acumulando experiencia, reduciendo el error humano, disminuyendo el riesgo de nuestro proyecto y liberando tiempo para centrarnos en los retos difíciles de la ciencia de datos.
Hemos visto evolucionar a los MLOP a través de tres etapas diferentes de madurez:
- MLOps v1.0
- Construye, entrena, ajusta e implementa modelos manualmente
- MLOps v2.0
- Construye y orquesta manualmente canalizaciones de modelos
- MLOps v3.0
- Ejecuta automáticamente pipelines cuando lleguen nuevos datos o cambie el código a partir de desencadenantes deterministas como GitOps o cuando los modelos empiecen a degradar su rendimiento a partir de desencadenantes estadísticos como la deriva, el sesgo y la divergencia de explicabilidad.
AWS y Amazon SageMaker Pipelines admiten la estrategia completa de MLOps, incluido el reentrenamiento automatizado de pipelines tanto con activadores deterministas de GitOps como con activadores estadísticos, como la deriva de datos, el sesgo del modelo y la divergencia de explicabilidad. Profundizaremos en la deriva estadística, el sesgo y la explicabilidad en los capítulos 5, 6, 7 y 9. E implementaremos canalizaciones continuas y automatizadas en el Capítulo 10 con varias opciones de orquestación y automatización de canalizaciones, incluyendo SageMaker Pipelines, AWS Step Functions, Apache Airflow, Kubeflow, y otras opciones incluyendo flujos de trabajo humanos en bucle. Por ahora, repasemos algunas buenas prácticas para la excelencia operativa, la seguridad, la fiabilidad, la eficiencia del rendimiento y la optimización de costes de los MLOps.
Excelencia operativa
Aquí hay algunas buenas prácticas específicas del aprendizaje automático que nos ayudan a construir con éxito proyectos de ciencia de datos en la nube:
- Comprobación de la calidad de los datos
- Puesto que todos nuestros proyectos de ML empiezan con datos, asegúrate de tener acceso a conjuntos de datos de alta calidad y aplica comprobaciones repetibles de la calidad de los datos. La mala calidad de los datos conduce al fracaso de muchos proyectos. Adelántate a estos problemas en las primeras fases del proyecto.
- Empieza por lo sencillo y reutiliza las soluciones existentes
- Empieza por la solución más sencilla, ya que no hay necesidad de reinventar la rueda si no hace falta. Es probable que haya un servicio de IA disponible para resolver nuestra tarea. Aprovecha los servicios gestionados como Amazon SageMaker, que vienen con un montón de algoritmos incorporados y modelos preentrenados.
- Definir las métricas de rendimiento del modelo
- Asigna las métricas de rendimiento del modelo a los objetivos empresariales, y monitorea continuamente estas métricas. Deberíamos desarrollar una estrategia para activar las invalidaciones de modelos y volver a entrenar a los modelos cuando se degrade el rendimiento.
- Sigue y versiona todo
- Seguir el desarrollo del modelo mediante experimentos y el seguimiento del linaje. También debemos versionar nuestros conjuntos de datos, el código de transformación de rasgos, los hiperparámetros y los modelos entrenados.
- Selecciona el hardware adecuado tanto para el entrenamiento como para el servicio del modelo
- En muchos casos, el entrenamiento del modelo tiene unos requisitos de infraestructura diferentes a los del servicio de predicción del modelo. Selecciona los recursos adecuados para cada fase.
- Monitoreo continuo de los modelos implementados
- Detecta la desviación de los datos y del modelo, y toma las medidas adecuadas, como el reentrenamiento del modelo.
- Automatizar los flujos de trabajo del aprendizaje automático
- Construye canalizaciones automatizadas y coherentes para reducir los errores humanos y liberar tiempo para centrarte en los problemas difíciles. Los procesos pueden incluir pasos de aprobación humana para aprobar los modelos antes de enviarlos a producción.
Seguridad
Seguridad y conformidad es una responsabilidad compartida entre AWS y el cliente. AWS garantiza la seguridad "de" la nube, mientras que el cliente es responsable de la seguridad "en" la nube.
Las consideraciones de seguridad más comunes para construir proyectos de ciencia de datos seguros en la nube tocan las áreas de gestión de acceso, aislamiento de computación y red, encriptación, gobernanza y auditabilidad.
Necesitamos profundas capacidades de seguridad y control de acceso en torno a nuestros datos. Debemos restringir el acceso a los trabajos de etiquetado de datos, a los scripts de procesamiento de datos, a los modelos, a los puntos finales de inferencia y a los trabajos de predicción por lotes.
También debemos aplicar una estrategia de gobernanza de datos que garantice la integridad, seguridad y disponibilidad de nuestros conjuntos de datos. Implementar y hacer cumplir el linaje de datos, que monitorea y rastrea las transformaciones de datos aplicadas a nuestros datos de entrenamiento. Garantizar que los datos estén encriptados en reposo y en movimiento. Además, debemos hacer cumplir la normativa cuando sea necesario.
En el capítulo 12 trataremos con más detalle las buenas prácticas para crear aplicaciones seguras de ciencia de datos y aprendizaje automático en AWS.
Fiabilidad
Fiabilidad se refiere a la capacidad de un sistema para recuperarse de las interrupciones de la infraestructura o del servicio, adquirir recursos informáticos de forma dinámica para satisfacer la demanda y mitigar interrupciones como las desconfiguraciones o los problemas transitorios de la red.
Deberíamos automatizar el seguimiento de cambios y el control de versiones de nuestros datos de entrenamiento. De este modo, podremos volver a crear la versión exacta de un modelo en caso de fallo. Construiremos una vez y utilizaremos los artefactos del modelo para implementarlo en varias cuentas y entornos de AWS.
Rendimiento Eficiencia
Eficiencia del rendimiento se refiere al uso eficiente de los recursos informáticos para satisfacer los requisitos y a cómo mantener esa eficiencia a medida que cambia la demanda y evolucionan las tecnologías.
Debemos elegir la computación adecuada para nuestra carga de trabajo de aprendizaje automático. Por ejemplo, podemos aprovechar las instancias basadas en la GPU para entrenar de forma más eficiente los modelos de aprendizaje profundo utilizando una mayor profundidad de cola, unidades aritméticas lógicas más altas y un mayor número de registros.
Conoce los requisitos de rendimiento de latencia y ancho de banda de red de los modelos, y despliega cada modelo más cerca de los clientes, si es necesario. Hay situaciones en las que podemos querer desplegar nuestros modelos "en el perímetro" para mejorar el rendimiento o cumplir la normativa sobre privacidad de datos. "Implementación en el perímetro" se refiere a ejecutar el modelo en el propio dispositivo para ejecutar las predicciones localmente. También queremos monitorizar continuamente las métricas clave de rendimiento de nuestro modelo para detectar a tiempo las desviaciones de rendimiento.
Optimización de costes
Nosotros podemos optimizar los costes aprovechando las distintas opciones de precios de las instancias de Amazon EC2. Por ejemplo, los Planes de Ahorro ofrecen ahorros significativos respecto a los precios de las instancias bajo demanda, a cambio de un compromiso de utilizar una cantidad específica de potencia informática durante un periodo de tiempo determinado. Los Planes de Ahorro son una gran opción para cargas de trabajo de estado conocido/estable, como las cargas de trabajo de inferencia estable.
Con las instancias bajo demanda, pagamos por la capacidad de cálculo por horas o segundos, dependiendo de las instancias que ejecutemos. Las instancias bajo demanda son las mejores para cargas de trabajo nuevas o con picos de estado, como los trabajos de entrenamiento de modelos a corto plazo.
Por último, las instancias puntuales de Amazon EC2 nos permiten solicitar capacidad informática sobrante de Amazon EC2 por hasta un 90% menos del precio bajo demanda. Las Instancias Puntuales pueden cubrir cargas de trabajo flexibles y tolerantes a fallos, como los trabajos de entrenamiento de modelos que no son sensibles al tiempo. La Figura 1-2 muestra la combinación resultante de planes de ahorro, instancias bajo demanda e instancias puntuales.
Con muchos de los servicios gestionados, podemos beneficiarnos del modelo "paga sólo por lo que utilizas". Por ejemplo, con Amazon SageMaker, sólo pagamos por el tiempo que nuestro modelo se entrena, o ejecutamos el ajuste automático del modelo. Empezar a desarrollar modelos con conjuntos de datos más pequeños para iterar de forma más rápida y frugal. Una vez que tengamos un modelo que funcione bien, podemos ampliarlo para entrenarlo con el conjunto de datos completo. Otro aspecto importante es dimensionar correctamente las instancias de entrenamiento y alojamiento del modelo.
Muchas veces, el entrenamiento del modelo se beneficia de la aceleración de la GPU, pero la inferencia del modelo puede no necesitar la misma aceleración. De hecho, la mayoría de las cargas de trabajo de aprendizaje automático son en realidad predicciones. Mientras que el modelo puede tardar varias horas o días en entrenarse, el modelo implementado probablemente se ejecuta 24 horas al día, 7 días a la semana en miles de servidores de predicción que dan soporte a millones de clientes. Debemos decidir si nuestro caso de uso requiere un punto final en tiempo real 24 × 7 o una transformación por lotes en Spot Instances por las tardes.
Servicios de IA de Amazon y AutoML con Amazon SageMaker
En sabemos que los proyectos de ciencia de datos implican muchos pasos complejos, multidisciplinares e iterativos. Necesitamos acceso a un entorno de desarrollo de aprendizaje automático que respalde la fase de creación de prototipos de modelos y, al mismo tiempo, proporcione una transición fluida para preparar nuestro modelo para la producción. Es probable que queramos experimentar con varios marcos y algoritmos de aprendizaje automático y desarrollar código personalizado de entrenamiento e inferencia de modelos.
Otras veces, puede que sólo queramos utilizar un modelo fácilmente disponible y preentrenado para resolver una tarea sencilla. O puede que queramos aprovechar las técnicas AutoML para crear una primera línea de base para nuestro proyecto. AWS proporciona un amplio conjunto de servicios y características para cada escenario. La Figura 1-3 muestra toda la pila de IA y aprendizaje automático de Amazon, incluidos los servicios de IA y Amazon SageMaker Autopilot para AutoML.
Servicios de IA de Amazon
Para muchos casos de uso comunes, como las recomendaciones personalizadas de productos, la moderación de contenidos o la previsión de la demanda, también podemos utilizar los servicios gestionados de IA de Amazon con la opción de afinarlos en nuestros conjuntos de datos personalizados. Podemos integrar estos servicios de IA "1-clic" en nuestras aplicaciones mediante sencillas llamadas a la API sin necesidad de mucha (a veces ninguna) experiencia en aprendizaje automático.
Los servicios de IA de AWS totalmente administrados son la forma más rápida y sencilla de añadir inteligencia a nuestras aplicaciones mediante sencillas llamadas a la API. Los servicios de IA ofrecen modelos de aprendizaje automático preentrenados o entrenados automáticamente para el análisis de imágenes y vídeos, el análisis avanzado de textos y documentos, las recomendaciones personalizadas o la previsión de la demanda.
Los servicios de IA incluyen Amazon Comprehend para el procesamiento del lenguaje natural, Amazon Rekognition para la visión por ordenador, Amazon Personalize para generar recomendaciones de productos, Amazon Forecast para la previsión de la demanda y Amazon CodeGuru para la revisión automatizada del código fuente.
AutoML con el piloto automático de SageMaker
En otro escenario, puede que queramos automatizar los pasos repetitivos del análisis de datos, la preparación de datos y el entrenamiento de modelos para problemas de aprendizaje automático sencillos y conocidos. Esto nos ayuda a centrar nuestro tiempo en casos de uso más complejos. AWS ofrece AutoML como parte del servicio Amazon SageMaker.
Consejo
AutoML no se limita a SageMaker. Muchos de los servicios de IA de Amazon realizan AutoML para encontrar el mejor modelo e hiperparámetros para el conjunto de datos dado.
"AutoML" se refiere comúnmente al esfuerzo de automatizar los pasos típicos de un flujo de trabajo de desarrollo de modelos que hemos descrito anteriormente. Amazon SageMaker Autopilot es un servicio totalmente gestionado que aplica técnicas AutoML a nuestros conjuntos de datos.
SageMaker Autopilot analiza primero nuestros datos tabulares, identifica el tipo de problema de aprendizaje automático (es decir, regresión, clasificación) y elige algoritmos (es decir, XGBoost) para resolver el problema. También crea el código de transformación de datos necesario para preprocesar los datos para el entrenamiento del modelo. A continuación, el Piloto Automático crea diversas canalizaciones de candidatos a modelos de aprendizaje automático que representan variaciones de las transformaciones de datos y los algoritmos elegidos. Aplica las transformaciones de datos en un paso de ingeniería de características, y luego entrena y afina cada uno de esos modelos candidatos. El resultado es una lista clasificada (leaderboard) de los candidatos a modelo basada en una métrica objetiva definida, como la precisión de validación.
SageMaker Autopilot es un ejemplo de AutoML transparente. Autopilot no sólo comparte con nosotros el código de transformación de datos, sino que también genera cuadernos Jupyter adicionales que documentan los resultados del paso de análisis de datos y los conductos de candidatos a modelo para reproducir el entrenamiento del modelo.
Podemos aprovechar SageMaker Autopilot en muchos escenarios. Podemos capacitar a más personas de nuestra organización para crear modelos, es decir, a desarrolladores de software que podrían tener una experiencia limitada en aprendizaje automático. Podemos automatizar la creación de modelos para problemas de aprendizaje automático sencillos de resolver y centrar nuestro tiempo en los casos de uso nuevos y complejos. Podemos automatizar los primeros pasos del análisis y la preparación de los datos y, a continuación, utilizar el resultado como línea de base para aplicar nuestro conocimiento y experiencia del dominio para ajustar y mejorar los modelos según sea necesario. Las métricas del modelo generadas por el Piloto Automático también nos dan una buena base de referencia de la calidad del modelo que se puede conseguir con el conjunto de datos proporcionado. En profundizaremos en el Piloto automático de SageMaker en el Capítulo 3.
Ingestión, exploración y preparación de datos en AWS
En trataremos la ingestión, exploración y preparación de datos en los Capítulos 4, 5 y 6, respectivamente. Pero, por ahora, vamos a discutir esta parte del flujo de trabajo de desarrollo de modelos para aprender qué servicios de AWS y herramientas de código abierto podemos aprovechar en cada paso.
Ingestión de datos y lagos de datos con Amazon S3 y AWS Lake Formation
Todo empieza con datos. Y si hemos visto una tendencia constante en las últimas décadas, es la continua explosión de datos. Los datos crecen exponencialmente y son cada vez más diversos. Hoy en día, el éxito empresarial suele estar estrechamente relacionado con la capacidad de una empresa para extraer rápidamente valor de sus datos. Ahora hay cada vez más personas, equipos y aplicaciones que necesitan acceder a los datos y analizarlos. Por eso muchas empresas están pasando a un almacén de datos altamente escalable, disponible, seguro y flexible, a menudo denominado lago de datos.
Un lago de datos es un repositorio centralizado y seguro que nos permite almacenar, gobernar, descubrir y compartir datos a cualquier escala. Con un lago de datos, podemos ejecutar cualquier tipo de análisis de forma eficiente y utilizar múltiples servicios de AWS sin tener que transformar o mover nuestros datos.
Los lagos de datos pueden contener datos relacionales estructurados, así como datos semiestructurados y no estructurados. Incluso podemos ingerir datos en tiempo real. Los lagos de datos dan a los equipos de ciencia de datos y aprendizaje automático acceso a conjuntos de datos grandes y diversos para entrenar e implementar modelos más precisos.
Amazon Simple Storage Service (Amazon S3) es un almacenamiento de objetos creado para almacenar y recuperar cualquier cantidad de datos desde cualquier lugar y en cualquier formato. Podemos organizar nuestros datos con controles de acceso ajustados para satisfacer nuestros requisitos empresariales y de conformidad. Trataremos la seguridad en profundidad en el Capítulo 12. Amazon S3 está diseñado para un 99,999999999% (11 nueves) de durabilidad, así como para una fuerte consistencia de lectura tras escritura. S3 es una opción popular para los lagos de datos en AWS.
Podemos aprovechar el servicio AWS Lake Formation para crear nuestro lago de datos. El servicio ayuda a recopilar y catalogar datos tanto de bases de datos como de almacenamiento de objetos. Lake Formation no sólo mueve nuestros datos, sino que también los limpia, clasifica y asegura el acceso a nuestros datos sensibles mediante algoritmos de aprendizaje automático.
Podemos aprovechar AWS Glue para descubrir y perfilar automáticamente nuevos datos. AWS Glue es un catálogo de datos escalable y sin servidor y un servicio de preparación de datos. El servicio consta de un motor ETL, un servicio de catálogo de datos compatible con Apache Hive y un servicio de transformación y análisis de datos. Podemos crear rastreadores de datos para detectar y catalogar periódicamente nuevos datos. AWS Glue DataBrew es un servicio con una interfaz de usuario fácil de usar que simplifica la ingestión, el análisis, la visualización y la transformación de datos.
Análisis de datos con Amazon Athena, Amazon Redshift y Amazon QuickSight
Antes de que empecemos a desarrollar cualquier modelo de aprendizaje automático, necesitamos comprender los datos. En el paso de análisis de datos, exploramos nuestros datos, recopilamos estadísticas, comprobamos si faltan valores, calculamos cuantiles e identificamos correlaciones de datos.
A veces sólo queremos analizar rápidamente los datos disponibles de nuestro entorno de desarrollo y crear un prototipo de un primer código modelo. Quizá sólo queramos probar rápidamente un nuevo algoritmo. A esto lo llamamos exploración y creación de prototipos "ad hoc", en la que consultamos partes de nuestros datos para obtener una primera comprensión del esquema y la calidad de los datos para nuestro problema específico de aprendizaje automático en cuestión. A continuación, desarrollamos el código del modelo y nos aseguramos de que es funcionalmente correcto. Esta exploración y creación de prototipos ad hoc puede realizarse desde entornos de desarrollo como SageMaker Studio, AWS Glue DataBrew y SageMaker Data Wrangler.
Amazon SageMaker nos ofrece un entorno Jupyter gestionado alojado y un entorno de desarrollo integrado con SageMaker Studio. Podemos empezar a analizar conjuntos de datos directamente en nuestro entorno de cuaderno con herramientas como pandas, una popular herramienta de análisis y manipulación de datos de código abierto de Python. Ten en cuenta que pandas utiliza estructuras de datos en memoria (DataFrames) para almacenar y manipular datos. Como muchos entornos de desarrollo tienen recursos de memoria limitados, debemos tener cuidado con la cantidad de datos que introducimos en los DataFrames de pandas.
Para visualizaciones de datos en nuestro cuaderno, podemos aprovechar librerías populares de código abierto como Matplotlib y Seaborn. Matplotlib nos permite crear visualizaciones estáticas, animadas e interactivas en Python. Seaborn se basa en Matplotlib y añade soporte para gráficos estadísticos adicionales, así como un modelo de programación más fácil de usar. Ambas bibliotecas de visualización de datos se integran estrechamente con las estructuras de datos pandas.
La biblioteca de código abierto AWS Data Wrangler extiende la potencia de pandas a AWS. AWS Data Wrangler conecta los DataFrames de pandas con servicios de AWS como Amazon S3, AWS Glue, Amazon Athena y Amazon Redshift.
AWS Data Wrangler proporciona funciones Python optimizadas para realizar tareas ETL comunes para cargar y descargar datos entre lagos de datos, almacenes de datos y bases de datos. Tras instalar AWS Data Wrangler con pip install awswrangler
e importar AWS Data Wrangler, podemos leer nuestro conjunto de datos directamente desde S3 en un DataFrame de pandas, como se muestra aquí:
import awswrangler as wr # Retrieve the data directly from Amazon S3 df = wr.s3.read_parquet("s3://<BUCKET>/<DATASET>/"))
AWS Data Wrangler también viene con optimizaciones de memoria adicionales, como la lectura de datos en trozos. Esto es especialmente útil si necesitamos consultar grandes conjuntos de datos. Con la lectura en trozos activada, AWS Data Wrangler lee y devuelve cada archivo de conjunto de datos de la ruta como un DataFrame pandas independiente. También podemos establecer el tamaño del trozo para que devuelva el número de filas de un DataFrame equivalente al valor numérico que hayamos definido como tamaño del trozo. Para obtener una lista completa de capacidades, consulta la documentación. Profundizaremos en AWS Data Wrangler en el Capítulo 5.
Podemos aprovechar servicios gestionados como Amazon Athena para ejecutar consultas SQL interactivas en los datos de S3 desde nuestro bloc de notas. Amazon Athena es un motor de consultas SQL distribuido, gestionado, sin servidor y dinámicamente escalable, diseñado para realizar consultas paralelas rápidas sobre conjuntos de datos extremadamente grandes. Athena se basa en Presto, el popular motor de consultas de código abierto, y no requiere mantenimiento. Con Athena, sólo pagamos por las consultas que ejecutamos. Y podemos consultar los datos en su forma bruta directamente en nuestro lago de datos S3, sin transformaciones adicionales.
Amazon Athena también aprovecha el servicio AWS Glue Data Catalog para almacenar y recuperar los metadatos del esquema necesarios para nuestras consultas SQL. Cuando definimos nuestra base de datos y tablas de Athena, apuntamos a la ubicación de los datos en S3. A continuación, Athena almacena este mapeo de tablas a S3 en el Catálogo de Datos de AWS Glue. Podemos utilizar PyAthena, una popular biblioteca de código abierto, para consultar Athena desde nuestros cuadernos y scripts basados en Python. Profundizaremos en Athena, el Catálogo de Datos AWS Glue y PyAthena en los Capítulos 4 y 5.
Amazon Redshift es un servicio de almacén de datos en la nube totalmente administrado que nos permite ejecutar consultas analíticas complejas contra petabytes de datos estructurados. Nuestras consultas se distribuyen y paralelizan en varios nodos. A diferencia de las bases de datos relacionales, que están optimizadas para almacenar datos en filas y sirven sobre todo a aplicaciones transaccionales, Amazon Redshift implementa el almacenamiento de datos en columnas, que está optimizado para aplicaciones analíticas en las que nos interesan sobre todo las estadísticas resumidas de esas columnas.
Amazon Redshift también incluye Amazon Redshift Spectrum, que nos permite ejecutar directamente consultas SQL desde Amazon Redshift contra exabytes de datos no estructurados en nuestro lago de datos de Amazon S3 sin necesidad de mover físicamente los datos. Amazon Redshift Spectrum escala automáticamente los recursos informáticos necesarios en función de la cantidad de datos recibidos, por lo que las consultas contra Amazon S3 se ejecutan con rapidez, independientemente del tamaño de nuestros datos.
Si en necesitamos crear visualizaciones de nuestros datos al estilo de un tablero de mandos, podemos aprovechar Amazon QuickSight. QuickSight es un servicio de análisis empresarial sin servidor y fácil de usar para crear rápidamente potentes visualizaciones. Podemos crear cuadros de mando e informes interactivos y compartirlos de forma segura con nuestros compañeros de trabajo a través de navegadores o dispositivos móviles. QuickSight ya viene con una amplia biblioteca de visualizaciones, gráficos y tablas.
QuickSight implementa capacidades de aprendizaje automático y lenguaje natural para ayudarnos a obtener una visión más profunda de nuestros datos. Con ML Insights, podemos descubrir tendencias ocultas y valores atípicos en nuestros datos. La función también permite a cualquiera realizar análisis hipotéticos y previsiones, sin necesidad de tener experiencia en aprendizaje automático. También podemos crear cuadros de mando predictivos conectando QuickSight a nuestros modelos de aprendizaje automático creados en Amazon SageMaker.
Evaluar la calidad de los datos con AWS Deequ y los trabajos de procesamiento de SageMaker
En necesitamos datos de alta calidad para construir modelos de alta calidad. Antes de crear nuestro conjunto de datos de entrenamiento, queremos asegurarnos de que nuestros datos cumplen ciertas restricciones de calidad. En el desarrollo de software, realizamos pruebas unitarias para asegurarnos de que nuestro código cumple las normas de diseño y calidad y se comporta según lo esperado. Del mismo modo, podemos realizar pruebas unitarias en nuestro conjunto de datos para asegurarnos de que los datos cumplen nuestras expectativas de calidad.
AWS Deequ es una biblioteca de código abierto construida sobre Apache Spark que nos permite definir pruebas unitarias para los datos y medir la calidad de los datos en grandes conjuntos de datos. Utilizando las pruebas unitarias de Deequ, podemos encontrar anomalías y errores en una fase temprana, antes de que los datos se utilicen en el entrenamiento del modelo. Deequ está diseñada para trabajar con conjuntos de datos muy grandes (miles de millones de filas). La biblioteca de código abierto admite datos tabulares, es decir, archivos CSV, tablas de bases de datos, registros o archivos JSON aplanados. Cualquier cosa que quepa en un marco de datos Spark, podemos validarla con Deequ.
En un ejemplo posterior, aprovecharemos Deequ para implementar comprobaciones de calidad de datos en nuestro conjunto de datos de muestra. Aprovecharemos la compatibilidad de SageMaker Processing Jobs con Apache Spark para ejecutar nuestras pruebas unitarias de Deequ a escala. En esta configuración, no necesitamos aprovisionar ningún clúster Apache Spark, ya que SageMaker Processing se encarga del trabajo pesado por nosotros. Podemos pensar en esto como Apache Spark "sin servidor". Una vez que dispongamos de datos de alta calidad, podemos crear nuestro conjunto de datos de entrenamiento.
Etiquetar los datos de entrenamiento con la verdad fundamental de SageMaker
Muchos proyectos de ciencia de datos de aplican el aprendizaje supervisado. En el aprendizaje supervisado, nuestros modelos aprenden con el ejemplo. Primero tenemos que recopilar y evaluar, y luego proporcionar etiquetas precisas. Si hay etiquetas incorrectas, nuestro modelo de aprendizaje automático aprenderá a partir de malos ejemplos. En última instancia, esto dará lugar a predicciones inexactas. SageMaker Ground Truth nos ayuda a etiquetar de forma eficiente y precisa los datos almacenados en Amazon S3. SageMaker Ground Truth utiliza una combinación de etiquetado de datos automatizado y humano.
SageMaker Ground Truth proporciona flujos de trabajo e interfaces predefinidos para tareas comunes de etiquetado de datos. Definimos la tarea de etiquetado y asignamos el trabajo de etiquetado a una plantilla pública a través de Amazon Mechanical Turk o a una plantilla privada, como nuestros compañeros de trabajo. También podemos recurrir a proveedores de servicios de etiquetado de datos de terceros que aparecen en AWS Marketplace, preseleccionados por Amazon.
SageMaker Ground Truth implementa técnicas de aprendizaje activo para flujos de trabajo preconstruidos. Crea un modelo para etiquetar automáticamente un subconjunto de datos, basándose en las etiquetas asignadas por la mano de obra humana. A medida que el modelo aprende continuamente de la mano de obra humana, la precisión mejora, y es necesario enviar menos datos a la mano de obra humana. Con el tiempo y con suficientes datos, el modelo de aprendizaje activo SageMaker Ground Truth es capaz de proporcionar anotaciones automáticas y de alta calidad que se traducen en menores costes generales de etiquetado. Profundizaremos en SageMaker Ground Truth en el Capítulo 10.
Transformación de datos con AWS Glue DataBrew, SageMaker Data Wrangler y SageMaker Processing Jobs
Ahora pasemos a la transformación de datos. Suponemos que tenemos nuestros datos en un lago de datos S3, o cubo S3. También hemos adquirido una sólida comprensión de nuestro conjunto de datos a través del análisis de datos. El siguiente paso consiste ahora en preparar nuestros datos para el entrenamiento del modelo.
Las transformaciones de datos podrían incluir la eliminación o combinación de datos en nuestro conjunto de datos. Puede que necesitemos convertir datos de texto en incrustaciones de palabras para utilizarlos con modelos de lenguaje natural. O quizá necesitemos convertir datos a otro formato, de representación numérica a texto, o viceversa. Existen numerosos servicios de AWS que podrían ayudarnos a conseguirlo.
AWS Glue DataBrew es una herramienta visual de análisis y preparación de datos. Con 250 transformaciones incorporadas, DataBrew puede detectar anomalías, convertir datos entre formatos estándar y corregir valores no válidos o ausentes. DataBrew puede perfilar nuestros datos, calcular estadísticas resumidas y visualizar correlaciones de columnas.
También podemos desarrollar transformaciones de datos personalizadas a escala con Amazon SageMaker Data Wrangler. SageMaker Data Wrangler ofrece transformaciones de datos de bajo código e impulsadas por la interfaz de usuario. Podemos leer datos de varias fuentes, como Amazon S3, Athena, Amazon Redshift y AWS Lake Formation. SageMaker Data Wrangler viene con transformaciones de datos preconfiguradas similares a AWS DataBrew para convertir tipos de columnas, realizar codificaciones de un solo paso y procesar campos de texto. SageMaker Data Wrangler admite funciones personalizadas definidas por el usuario mediante Apache Spark e incluso genera código, incluidos scripts de Python y SageMaker Processing Jobs.
Los Trabajos de Procesamiento de SageMaker nos permiten ejecutar código de procesamiento de datos personalizado para la transformación de datos, la validación de datos o la evaluación de modelos a través de datos en S3. Cuando configuramos el SageMaker Processing Job, definimos los recursos necesarios, incluidos los tipos de instancia y el número de instancias. SageMaker toma nuestro código personalizado, copia nuestros datos de Amazon S3 y, a continuación, extrae un contenedor Docker para ejecutar el paso de procesamiento.
SageMaker ofrece imágenes de contenedor pre-construidas para ejecutar el procesamiento de datos con Apache Spark y scikit-learn. También podemos proporcionar una imagen de contenedor personalizada si es necesario. A continuación, SageMaker pone en marcha los recursos de clúster que hemos especificado durante la duración del trabajo y los finaliza cuando el trabajo ha terminado. Los resultados del procesamiento se escriben en un bucket de Amazon S3 cuando finaliza el trabajo.
Entrenamiento y ajuste de modelos con Amazon SageMaker
Veamos en los pasos de entrenamiento y ajuste de modelos de nuestro flujo de trabajo de desarrollo de modelos con más detalle y aprendamos qué servicios de AWS y herramientas de código abierto podemos aprovechar.
Entrenar modelos con SageMaker Entrenamiento y experimentos
Los Trabajos de Entrenamiento de Amazon SageMaker proporcionan mucha funcionalidad para apoyar nuestro entrenamiento de modelos. Podemos organizar, realizar un seguimiento y evaluar nuestras ejecuciones individuales de entrenamiento de modelos con los Experimentos de SageMaker. Con SageMaker Debugger, obtenemos transparencia en nuestro proceso de entrenamiento de modelos. Debugger captura automáticamente métricas en tiempo real durante el entrenamiento y proporciona una interfaz visual para analizar los datos de depuración. Debugger también perfila y monitoriza la utilización de los recursos del sistema e identifica cuellos de botella en los recursos, como CPU o GPU sobreutilizadas.
Con el entrenamiento de SageMaker, sólo tenemos que especificar la ubicación en Amazon S3 de nuestros datos, el contenedor de algoritmos para ejecutar el código de entrenamiento de nuestro modelo, y definir el tipo y el número de instancias ML de SageMaker que necesitamos. SageMaker se encargará de inicializar los recursos y ejecutar el entrenamiento de nuestro modelo. Si se le indica, SageMaker pone en marcha un clúster informático distribuido. Una vez completado el entrenamiento del modelo, SageMaker escribe los resultados en S3 y finaliza las instancias ML.
SageMaker también es compatible con Managed Spot Training. Managed Spot Training aprovecha Amazon EC2 Spot Instances para realizar el entrenamiento del modelo. Utilizando las instancias de subasta, podemos reducir el coste de la formación de modelos hasta un 90% en comparación con las instancias bajo demanda.
Además de SageMaker Autopilot, podemos elegir entre cualquiera de los algoritmos incorporados que vienen con Amazon SageMaker o personalizar el entrenamiento del modelo aportando nuestro propio código de modelo (modo script) o nuestro propio contenedor de algoritmos/framework.
Algoritmos incorporados
SageMaker viene con muchos algoritmos incorporados para ayudar a los profesionales del aprendizaje automático a empezar a entrenar e implementar modelos de aprendizaje automático rápidamente. Los algoritmos incorporados no requieren código adicional. Sólo tenemos que proporcionar los datos y los ajustes del modelo (hiperparámetros) y especificar los recursos informáticos. La mayoría de los algoritmos incorporados también admiten el entrenamiento distribuido para grandes conjuntos de datos que no caben en una sola máquina.
Para tareas de aprendizaje supervisado, podemos elegir entre algoritmos de regresión y clasificación como Linear Learner y XGBoost. Las Máquinas de Factorización son muy adecuadas para los sistemas de recomendación.
Para las tareas de aprendizaje no supervisado, como la agrupación, la reducción de dimensiones, el reconocimiento de patrones y la detección de anomalías, existen otros algoritmos incorporados. Entre ellos están el Análisis de Componentes Principales (ACP) y la Agrupación de K-Means.
También podemos aprovechar los algoritmos incorporados para tareas de análisis de texto, como la clasificación de textos y el modelado de temas. Entre estos algoritmos están BlazingText y Neural Topic Model.
Para el tratamiento de imágenes, encontraremos algoritmos incorporados para la clasificación de imágenes y la detección de objetos, incluida la Segmentación Semántica.
Trae tu propio guión (Modo Guión)
Si necesitamos más flexibilidad, o no hay una solución incorporada que funcione para nuestro caso de uso, podemos proporcionar nuestro propio código de entrenamiento del modelo. A esto se le suele llamar "modo script". El modo script nos permite centrarnos en nuestro script de entrenamiento, mientras que SageMaker proporciona contenedores Docker altamente optimizados para cada uno de los marcos de código abierto conocidos, como TensorFlow, PyTorch, Apache MXNet, XGBoost y scikit-learn. Podemos añadir todas nuestras dependencias de código necesarias mediante un archivo de requisitos, y SageMaker se encargará de ejecutar nuestro código de entrenamiento de modelo personalizado con uno de los contenedores de marco incorporados, en función del marco que elijamos.
Trae tu propio contenedor
En caso de que ni los algoritmos incorporados ni el modo script cubran nuestro caso de uso, podemos traer nuestra propia imagen Docker personalizada para alojar el entrenamiento del modelo. Docker es una herramienta de software que proporciona soporte en tiempo de compilación y ejecución para entornos aislados llamados contenedores Docker.
SageMaker utiliza imágenes y contenedores Docker para proporcionar capacidades de procesamiento de datos, entrenamiento de modelos y servicio de predicciones.
Podemos utilizar "trae tu propio contenedor " (BYOC) si el paquete o software que necesitamos no está incluido en un framework compatible. Este enfoque nos ofrece opciones ilimitadas y la mayor flexibilidad, ya que podemos construir nuestro propio contenedor Docker e instalar cualquier cosa que necesitemos. Normalmente, vemos que la gente utiliza esta opción cuando tiene requisitos de seguridad personalizados, o quiere preinstalar bibliotecas en el contenedor Docker para evitar una dependencia de terceros (por ejemplo, con PyPI, Maven o Docker Registry).
Al utilizar la opción BYOC para utilizar nuestra propia imagen Docker, primero tenemos que subir la imagen Docker a un registro Docker como DockerHub o Amazon Elastic Container Registry (Amazon ECR). Sólo deberíamos elegir la opción BYOC si estamos familiarizados con el desarrollo, mantenimiento y soporte de imágenes Docker personalizadas con una canalización eficiente de imágenes Docker. De lo contrario, deberíamos utilizar los contenedores integrados de SageMaker.
Nota
No necesitamos "grabar" nuestro código en una imagen Docker en el momento de la compilación. Podemos simplemente apuntar a nuestro código en Amazon S3 desde dentro de la imagen Docker y cargar el código dinámicamente cuando se inicie un contenedor Docker. Esto ayuda a evitar construcciones innecesarias de imágenes Docker cada vez que cambia nuestro código.
Soluciones pre-construidas y modelos pre-entrenados con SageMaker JumpStart
SageMaker JumpStart nos da acceso a soluciones preconstruidas de aprendizaje automático y modelos preentrenados de AWS, TensorFlow Hub y PyTorch Hub. Las soluciones preconstruidas cubren muchos casos de uso comunes, como la detección del fraude, el mantenimiento predictivo y la previsión de la demanda. Los modelos preentrenados abarcan dominios de procesamiento del lenguaje natural, detección de objetos y clasificación de imágenes. Podemos ajustar los modelos con nuestros propios conjuntos de datos e implementarlos en producción en nuestra cuenta de AWS con sólo unos clics. Profundizaremos en SageMaker JumpStart en el Capítulo 7.
Afinar y validar modelos con el ajuste de hiperparámetros de SageMaker
Otro paso importante en el desarrollo de modelos de alta calidad es encontrar la configuración adecuada del modelo o los hiperparámetros del modelo. A diferencia de los parámetros del modelo que aprende el algoritmo, los hiperparámetros controlan la forma en que el algoritmo aprende los parámetros.
Amazon SageMaker viene con capacidades automáticas de ajuste y validación de modelos para encontrar los hiperparámetros del modelo con mejor rendimiento para nuestro modelo y conjunto de datos. Tenemos que definir una métrica objetiva que optimizar, como la precisión de validación, y los intervalos de hiperparámetros que explorar. A continuación, SageMaker ejecutará muchos trabajos de entrenamiento del modelo para explorar los intervalos de hiperparámetros que especifiquemos y evaluará los resultados con respecto a la métrica objetiva para medir el éxito.
Existen distintas estrategias para explorar los rangos de hiperparámetros: la búsqueda en cuadrícula, la búsqueda aleatoria y la optimización bayesiana son las más comunes. Nosotros profundizaremos en el Ajuste de Hiperparámetros de SageMaker en el Capítulo 8.
Implementación de modelos con Amazon SageMaker y funciones AWS Lambda
Una vez que hemos entrenado, validado y optimizado nuestro modelo, estamos listos para desplegarlo y monitorizarlo. En general, existen tres formas de implementar nuestros modelos con Amazon SageMaker, en función de los requisitos de nuestra aplicación: SageMaker Endpoints para predicciones basadas en REST, funciones AWS Lambda para predicciones sin servidor, y SageMaker Batch Transform para predicciones por lotes.
Puntos finales de SageMaker
Si necesitamos optimizar la implementación del modelo para obtener predicciones de baja latencia y en tiempo real, podemos implementar nuestro modelo utilizando los servicios de alojamiento de SageMaker. Estos servicios pondrán en marcha un punto final de SageMaker para alojar nuestro modelo y proporcionar una API REST para servir predicciones. Podemos llamar a la API REST desde nuestras aplicaciones para recibir las predicciones del modelo. Los puntos finales del modelo SageMaker admiten el autoescalado para ajustarse al patrón de tráfico actual y se despliegan en múltiples AZ para una alta disponibilidad.
Transformación por lotes de SageMaker
Si necesitamos obtener predicciones para todo un conjunto de datos, podemos utilizar SageMaker Transformación por Lotes. La Transformación por Lotes está optimizada para un alto rendimiento, sin necesidad de predicciones en tiempo real y baja latencia. SageMaker pondrá en marcha el número especificado de recursos para realizar predicciones por lotes a gran escala en nuestros datos de S3. Una vez completado el trabajo, SageMaker escribirá los datos en S3 y desmontará los recursos informáticos.
Implementación de modelos sin servidor con AWS Lambda
Otra opción para servir las predicciones de nuestro modelo son las funciones AWS Lambda para servidores de modelos sin servidor. Tras entrenar el modelo con SageMaker, utilizamos una función de AWS Lambda que recupera el modelo de S3 y sirve las predicciones. AWS Lambda tiene limitaciones de memoria y latencia, así que asegúrate de probar esta opción a escala antes de finalizar este enfoque de implementación.
Análisis de streaming y aprendizaje automático en AWS
Hasta ahora, asumimos que tenemos todos nuestros datos disponibles en una ubicación estática centralizada, como nuestro lago de datos basado en S3. En realidad, los datos fluyen continuamente desde muchas fuentes diferentes de todo el mundo de forma simultánea. En muchos casos, queremos realizar análisis y aprendizaje automático en tiempo real sobre estos datos en flujo antes de que lleguen a un lago de datos. Es necesario disponer de información (empresarial) en poco tiempo para obtener avances competitivos y reaccionar rápidamente a los cambios en las tendencias de los clientes y del mercado.
Las tecnologías de streaming nos proporcionan las herramientas para recopilar, procesar y analizar flujos de datos en tiempo real. AWS ofrece una amplia gama de opciones de tecnología de streaming, como Amazon Kinesis y Amazon Managed Streaming para Apache Kafka (Amazon MSK). Profundizaremos en el análisis de streaming y el aprendizaje automático en el Capítulo 11.
Streaming de Amazon Kinesis
Amazon Kinesis es un servicio de streaming de datos, que nos ayuda a recopilar, procesar y analizar datos en tiempo real. Con Kinesis Data Firehose, podemos preparar y cargar datos en tiempo real de forma continua a varios destinos, incluidos Amazon S3 y Amazon Redshift. Con Kinesis Data Analytics, podemos procesar y analizar los datos a medida que llegan. Y con Amazon Kinesis Data Streams, podemos gestionar la ingesta de flujos de datos para aplicaciones personalizadas.
Streaming administrado de Amazon para Apache Kafka
Amazon MSK es un servicio de datos de streaming que administra la infraestructura y las operaciones de Apache Kafka. Apache Kafka es una popular plataforma de código abierto, de alto rendimiento, tolerante a fallos y escalable para crear canalizaciones y aplicaciones de datos de streaming en tiempo real. Con Amazon MSK, podemos ejecutar nuestras aplicaciones de Apache Kafka en AWS sin necesidad de administrar nosotros mismos los clústeres de Apache Kafka.
Predicciones de flujo y detección de anomalías
En el capítulo de datos en streaming, nos centraremos en analizar un flujo continuo de mensajes de reseñas de productos que recopilamos de los canales online disponibles. Ejecutaremos predicciones de flujo para detectar el sentimiento de nuestros clientes, de modo que podamos identificar qué clientes podrían necesitar una atención prioritaria.
A continuación, ejecutamos análisis de flujo continuo sobre los mensajes de revisión entrantes para capturar el sentimiento medio por categoría de producto. En visualizamos el sentimiento medio continuo en un panel de métricas para los propietarios de la línea de negocio (LOB).
Ahora los propietarios de la LOB pueden detectar rápidamente las tendencias de sentimiento y tomar medidas. También calculamos una puntuación de anomalía de los mensajes entrantes para detectar anomalías en el esquema de datos o en los valores de los datos. En caso de que aumente la puntuación de anomalía, podemos alertar a los desarrolladores de aplicaciones responsables para que investiguen la causa raíz.
Como última métrica, también calculamos un recuento aproximado continuo de los mensajes recibidos. Este número de mensajes en línea podría ser utilizado por el equipo de marketing digital para medir la eficacia de las campañas en las redes sociales.
Infraestructura de AWS y hardware a medida
A ventaja clave de la computación en nube es la posibilidad de probar opciones de infraestructura que se adapten específicamente a nuestra carga de trabajo. AWS ofrece muchas opciones de infraestructura informática, de redes y de almacenamiento de alto rendimiento para nuestros proyectos de ciencia de datos, como muestra la Figura 1-4. Veamos cada una de estas opciones, a las que haremos referencia en todo momento.
Tipos de instancias de cálculo de SageMaker
AWS nos permite elegir entre un conjunto diverso de tipos de instancia en función de nuestra carga de trabajo. A continuación se muestra una lista de tipos de instancia utilizados habitualmente para casos de uso de la ciencia de datos:
- Tipo de instancia T
- Instancias de uso general y rendimiento en ráfagas, cuando no necesitamos niveles de CPU elevados de forma constante, pero nos beneficiamos de disponer de CPU rápidas cuando las necesitamos.
- Tipo de instancia M
- Instancias de uso general con un buen equilibrio de computación, memoria y ancho de banda de red
- Tipo de instancia C
- Instancias optimizadas para computación, ideales para cargas de trabajo con requisitos de CPU elevados
- Tipo de instancia R
- Instancias optimizadas en memoria para cargas de trabajo que se benefician de almacenar grandes conjuntos de datos en memoria, como Apache Spark
- Tipos de instancia P, G, Inferentia y Trainium
- Instancias informáticas de alto rendimiento con aceleradores de hardware o coprocesadores como GPUs o hardware personalizado de Amazon como AWS Inferentia para inferencia y AWS Trainium para cargas de trabajo de entrenamiento
- Acelerador de inferencia elástica de Amazon
- Coprocesadores conectados a la red utilizados por otros tipos de instancia cuando se necesita potencia de cálculo adicional para cargas de trabajo específicas, como transformaciones por lotes e inferencia.
GPU y hardware informático personalizado de Amazon
De forma similar a como Amazon S3 proporciona almacenamiento en la nube, Amazon Elastic Compute Cloud (Amazon EC2) proporciona recursos informáticos. Podemos elegir entre más de 350 instancias para nuestras necesidades empresariales y carga de trabajo. AWS también ofrece la posibilidad de elegir entre procesadores basados en Intel, AMD y ARM. Los tipos de instancia P4, P3 y G4 acelerados por hardware son una opción popular para el entrenamiento de modelos de alto rendimiento basado en GPU. Amazon también proporciona hardware personalizado optimizado tanto para el entrenamiento como para la inferencia de modelos.
Las instancias P4d constan de ocho GPUs NVIDIA A100 Tensor Core con una red de instancia de 400 Gbps y soporte para Elastic Fabric Adapter (EFA) con NVIDIA GPUDirect RDMA (acceso remoto directo a memoria). Las instancias P4d se implementan en clústeres a hiperescala denominados Amazon EC2 UltraClusters que proporcionan un rendimiento de clase superordenador para desarrolladores, investigadores y científicos de datos de ML cotidianos. Cada UltraCluster EC2 de instancias P4d nos da acceso a más de 4.000 GPUs NVIDIA A100, redes no bloqueantes a escala petabit y almacenamiento de alto rendimiento y baja latencia a través de Amazon FSx para Lustre.
Las instancias P3 constan de hasta ocho GPUs NVIDIA V100 Tensor Core y ofrecen hasta 100 Gbps de rendimiento de red. Las instancias P3 ofrecen hasta un petaflop de rendimiento de precisión mixta por instancia. Las instancias P3dn.24xlarge también admiten EFA.
Las instancias G4 son una gran opción para cargas de trabajo de formación o inferencia a pequeña escala y sensibles a los costes. Las instancias G4 constan de GPUs NVIDIA T4 con hasta 100 Gbps de rendimiento de red y hasta 1,8 TB de almacenamiento local NVMe.
AWS también ofrece silicio a medida para la formación en aprendizaje automático con el chip AWS Trainium y para cargas de trabajo de inferencia con el chip AWS Inferentia. Tanto AWS Trainium como AWS Inferentia tienen como objetivo aumentar el rendimiento del aprendizaje automático y reducir el coste de la infraestructura.
AWS Trainium se ha optimizado para cargas de trabajo de entrenamiento de aprendizaje profundo, como clasificación de imágenes, búsqueda semántica, traducción, reconocimiento de voz, procesamiento del lenguaje natural y motores de recomendación.
Los procesadores de AWS Inferentia admiten muchos modelos populares de aprendizaje automático, incluidos los detectores de disparo único y ResNet para visión informática, así como Transformers y BERT para procesamiento del lenguaje natural.
AWS Inferentia está disponible a través de las instancias Inf1 de Amazon EC2. Podemos elegir entre 1 y 16 procesadores de AWS Inferentia por instancia Inf1, que ofrecen hasta 2.000 tera operaciones por segundo. Podemos utilizar el SDK de AWS Neuron para compilar nuestros modelos TensorFlow, PyTorch o Apache MXNet para ejecutarlos en instancias Inf1.
Las instancias Inf1 pueden ayudar a reducir nuestro coste de inferencia, con hasta un 45% menos de coste por inferencia y un 30% más de rendimiento en comparación con las instancias Amazon EC2 G4. La Tabla 1-1 muestra algunas opciones de tipo de instancia que se pueden utilizar para la inferencia de modelos, incluidos el chip Inferentia, las CPU y las GPU personalizadas de Amazon.
Características del modelo | EC2 Inf1 | EC2 C5 | EC2 G4 |
---|---|---|---|
Requiere baja latencia y alto rendimiento a bajo coste | X | ||
Baja sensibilidad a la latencia y al rendimiento | X | ||
Requiere las librerías CUDA, CuDNN o TensorRT de NVIDIA | X |
Amazon Elastic Inference es otra opción para aprovechar la computación acelerada para la inferencia de modelos. Elastic Inference nos permite adjuntar una fracción de aceleración de GPU a cualquier tipo de instancia de Amazon EC2 (basada en CPU). Con Elastic Inference, podemos desvincular la elección de la instancia para la inferencia de modelos de la cantidad de aceleración de la inferencia.
Elegir Elastic Inference en lugar de Inf1 puede tener sentido si necesitamos unas características de instancia distintas de las que se ofrecen con las instancias Inf1 o si nuestros requisitos de rendimiento son inferiores a los que proporciona la instancia Inf1 más pequeña.
Elastic Inference escala desde TFLOPS de precisión única (billones de operaciones de coma flotante por segundo) hasta 32 TFLOPS de precisión mixta de aceleración de la inferencia.
Los procesadores Graviton son procesadores ARM hechos a medida por AWS. Las CPU aprovechan los núcleos Arm Neoverse de 64 bits y el silicio personalizado diseñado por AWS utilizando la avanzada tecnología de fabricación de 7 nm. Las instancias basadas en ARM pueden ofrecer una atractiva relación precio-rendimiento para muchas cargas de trabajo que se ejecutan en Amazon EC2.
La primera generación de procesadores Graviton se ofrece con las instancias A1 de Amazon EC2. Los procesadores Graviton2 ofrecen 7 veces más rendimiento, 4 veces más núcleos de computación, 5 veces más memoria y 2 veces más cachés en comparación con la primera generación. Podemos encontrar el procesador Graviton2 en las instancias Amazon EC2 T4g, M6g, C6g y R6g.
Los procesadores AWS Graviton2 proporcionan un rendimiento mejorado para cargas de trabajo de codificación de vídeo, aceleración de hardware para cargas de trabajo de compresión y soporte para predicciones de aprendizaje automático.
Redes optimizadas para la GPU y hardware personalizado
AWS ofrece soluciones de red avanzadas que pueden ayudarnos a ejecutar eficazmente el entrenamiento distribuido de modelos y la inferencia a escala.
La EFA de Amazon es una interfaz de red para instancias de Amazon EC2 que optimiza las comunicaciones entre nodos a escala. La EFA utiliza una interfaz de hardware de derivación de SO personalizada que mejora el rendimiento de las comunicaciones entre nodos. Si utilizamos la Biblioteca de Comunicaciones Colectivas de NVIDIA para el entrenamiento de modelos, podemos escalar a miles de GPUs utilizando EFA.
Podemos combinar la configuración con un ancho de banda de red de hasta 400 Gbps por instancia y el RDMA GPUDirect de NVIDIA para una comunicación de GPU a GPU de baja latencia entre instancias. Esto nos proporciona el rendimiento de los clusters de GPU locales con la elasticidad y flexibilidad bajo demanda de la nube.
Opciones de almacenamiento optimizadas para el entrenamiento de modelos a gran escala
Ya hemos aprendido las ventajas de construir nuestro lago de datos en Amazon S3. Si necesitamos un acceso más rápido al almacenamiento para el entrenamiento distribuido de modelos, podemos utilizar Amazon FSx para Lustre.
Amazon FSx para Lustre ofrece el sistema de archivos de código abierto Lustre como un servicio totalmente administrado. Lustre es un sistema de archivos de alto rendimiento, que ofrece latencias de submilisegundos, hasta cientos de gigabytes por segundo de rendimiento y millones de IOPS.
Podemos vincular sistemas de archivos FSx para Lustre con buckets de Amazon S3. Esto nos permite acceder y procesar datos a través del sistema de archivos FSx y desde Amazon S3. Utilizando FSx para Lustre, podemos configurar nuestras instancias informáticas de entrenamiento de modelos para que accedan al mismo conjunto de datos a través de un almacenamiento compartido de alto rendimiento.
Amazon Elastic File System (Amazon EFS) es otro servicio de almacenamiento de archivos que proporciona una interfaz de sistema de archivos para hasta miles de instancias de Amazon EC2. La interfaz del sistema de archivos ofrece API de E/S de archivos estándar del sistema operativo y permite la semántica de acceso al sistema de archivos, como la consistencia fuerte y el bloqueo de archivos .
Reduce costes con etiquetas, presupuestos y alertas
A lo largo de el libro, proporcionamos consejos sobre cómo reducir el coste de los proyectos de ciencia de datos con la pila de IA y aprendizaje automático de Amazon. En general, siempre debemos etiquetar nuestros recursos con el nombre de la unidad de negocio, la aplicación, el entorno y el usuario. Debemos utilizar etiquetas que proporcionen visibilidad sobre dónde se gasta nuestro dinero. Además de las etiquetas de asignación de costes integradas en AWS, podemos proporcionar nuestras propias etiquetas de asignación definidas por el usuario y específicas para nuestro dominio. AWS Presupuestos nos ayuda a crear alertas cuando el coste se acerca -o supera- un umbral determinado.
Resumen
En este capítulo, hemos hablado de las ventajas de desarrollar proyectos de ciencia de datos en la nube, centrándonos específicamente en AWS. Mostramos cómo añadir rápidamente inteligencia a nuestras aplicaciones aprovechando la pila de IA y aprendizaje automático de Amazon. Introdujimos el concepto de AutoML y explicamos cómo SageMaker Autopilot ofrece un enfoque transparente de AutoML. A continuación, discutimos un flujo de trabajo típico de aprendizaje automático en la nube y presentamos los servicios de AWS relevantes que ayudan en cada paso del flujo de trabajo. Proporcionamos una visión general de las herramientas de orquestación de flujos de trabajo disponibles para construir y automatizar canalizaciones de aprendizaje automático. Describimos cómo ejecutar análisis de streaming y aprendizaje automático sobre datos en tiempo real. Terminamos este capítulo con una visión general de las opciones de infraestructura de AWS que podemos aprovechar en nuestros proyectos de ciencia de datos.
En el Capítulo 2, hablaremos de casos destacados de uso de la ciencia de datos en sectores como los medios de comunicación, la publicidad, el IoT y la fabricación.
Get Ciencia de datos en AWS now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.