Logo Studenta

Despliegue de Modelos - MLOPS

¡Este material tiene más páginas!

Vista previa del material en texto

Despliegue de Modelos - MLOPS
Arquitectura: Cliente - Servidor
Puntos clave de la arquitectura:
· Cliente.
· Servidor.
¿Qué es el Cloud Computing?
“La computación en la nube es un modelo para permitir el acceso a la red ubicua (presente en todas partes), conveniente y bajo demanda a un grupo compartido de recursos informáticos configurables…”
Ventajas del Cloud Computing
· Reducción de Costos.
· Inmediatez de servicios.
· Capacidad de Proceso.
· Concurrencia.
· Seguridad en las Infraestructuras Críticas.
EL PRINCIPIO 5 - 3- 2
Métodos de Entrega:
· Infraestructura como servicio (IaaS). 
· Plataforma como servicio (PaaS).
· Software como servicio (SaaS).
Niveles de Responsabilidad:
Riesgos del Cloud Computing
· Pérdida de gobernanza.
· Dependencia. 
· Integración.
· Incumplimiento de servicio.
· Aspectos vinculados con la privacidad
ACUERDO DE NIVEL DE SERVICIO
Un Service Level Agreement (SLA) es un contrato que describe el nivel de servicio que un cliente espera de su proveedor. Los Service Level Agreement, sirven para establecer unos indicadores que se puedan medir, para regular el servicio que un proveedor presta y así, asegurar el cumplimiento de las expectativas de los clientes.
Principales vendors Cloud
DevOps
La palabra DevOps es una contracción de “Desarrollo” (Development) y “Operaciones” (Operations).
DevOps es una nueva tendencia en la industria TI dirigida a mejorar la agilidad del servicio de entregas en TI. El movimiento hace énfasis en la comunicación transparente, la colaboración junto con la integración entre el software de desarrolladores y las operaciones de TI.
¿Qué es DevOps?
¿Qué no es de DevOps?
· No es solamente automatización 
· No es solo servicios cloud 
· No es una herramienta implementada 
· No es un equipo de trabajo nuevo separado de las demás áreas de IT
Propósito de DevOps
El mejor propósito ofrecido por DevOps, es iterar de manera más rápida durante la fase de desarrollo y su objetivo principal es establecer procesos de negocios alineados en flujo al concepto de “justo a tiempo” (JIT por sus siglas en inglés).
Beneficios de implementar una cultura de DevOps
· Mejora la comunicación.
· Proporciona escalabilidad en los servicios.
· Mayor seguridad.
· Reducción de costes.
· Seguimiento continuado de la aplicación.
· Más publicaciones y con mayor frecuencia.
· Software de mejor calidad.
Las 3P de DevOps: Personas, Procesos y Productos
Personas
Cuando hablamos de personas, tenemos que ser conscientes que los equipos de trabajo están conformados por Personas: y por supuesto que no todos somos iguales, que cada persona tiene emociones diferentes, que pueden manejar mejor o peor manera dependiendo de las situaciones personales y laborales que atraviesen. 
Entender esto y darle una mirada humana nos facilitará entender que DEBEMOS trabajar con las personas, incentivando el concepto de “Easy to work with”.
Procesos:
Existen 4 grandes procesos, en alto nivel, que debemos tener en cuenta. Estos procesos, por supuesto, pueden darse cíclicamente y no necesariamente en cascada:
· Planificar: Crear un backlog, equipos interdisciplinarios, planificar testing, etc.
· Desarrollar + Probar: Avanzar en la construcción por ejemplo del software y testearlo.
· Liberar: Lo que planifiqué y desarrollé + probé, lo debo liberar a ambientes por ejemplo de Desarrollo o Producción.
· Monitorear + Aprender: Un punto clave de entender, es que el trabajo no terminó con la liberación. Recién comienza aquí el aprendizaje basado en un monitoreo proactivo para volver a arrancar esta rueda: planificar, desarrollar + probar, y liberar, para monitorear y volver a aprender.
Productos
Aplicación de alguna herramienta de devops. Existen múltiples herramientas que podríamos mencionar, las más importantes son las siguientes:
CI/CD
Integración Continua (Continuous Integration - CI): Con la integración continua los desarrolladores integran frecuentemente su código a la rama principal de un repositorio común. En lugar de desarrollar partes del código de manera aislada e integrarlas al final del ciclo de producción, un desarrollador contribuirá con cambios a una parte del repositorio varias veces al día. La idea aquí es reducir los costos de integración, haciendo que los desarrolladores realicen integraciones más rápidamente y con mayor frecuencia. 
Entrega Continua (Continuous Delivery - CD): La entrega continua es en realidad una extensión de la Integración Continua, en la cual el proceso de entrega de software se automatiza para permitir implementaciones fáciles y confiables en producción por ejemplo o para que lo consuma el cliente directamente. Un proceso de Entrega Continua (CD) bien implementado requiere una base de código que se pueda desplegar en cualquier momento. Con la Entrega Continua, los lanzamientos de nuevos cambios ocurren de manera frecuente y rutinaria. 
Despliegue Continuo (Continuous Deployment):
Esta es una modalidad más avanzada de Entrega Continua en la medida en que los despliegues a producción no pasan por una validación humana sino que están totalmente automatizadas. La única forma de detener nuevos desarrollos en producción es a través de una prueba que falla e identifica los errores.
Otras tendencias
Roles en DevOps
DevOps Agile
DevOps y Agiles es una combinación bastante interesante y novedosa en la actualidad. Con esta mezcla de marcos de trabajo, se intenta integrar los siguientes conceptos de una forma efectiva:
Métricas en DevOps
· Tiempo y frecuencia de Despliegue
· Tiempo medio entre recuperación
· Ratio de fallas de cambio
· Service Level Agreement
· Performance de aplicaciones
· Tiempo medio entre recuperación 
· Otras.
MLOps
MLOps o ML Ops es un conjunto de prácticas que tiene como objetivo implementar y mantener modelos de aprendizaje automático en producción de manera confiable y eficiente. La palabra es un compuesto de "aprendizaje automático" y la práctica de desarrollo continuo de DevOps en el campo del software. 
Dentro de MLOps existen tres niveles de implementación de Machine Learning:
· Data: Datos, fase, ingestión, curado, etc.
· Model: ​Testing​, evaluación de los modelos, empaquetado y cómo se van a despegar.
· Code: El código, donde se ejecuta todo el modelo en sí.
¿Qué debo tener en cuenta para usar MLOps?
· Calidad de los datos: Tener en cuenta de dónde vienen, calidad, si son fiables, etc.
· Degradación de los modelos: Al cabo del tiempo van perdiendo calidad.
· Localidad: En el momento de la preparación se están entrenando los modelos con unos datos específicos basados en una geografía.
¿Cómo es el proceso de MLOps?
1. Diseño: Ajuste de requerimientos, establecer las necesidades que tienen los usuarios y qué queremos cubrir, exploración de los datos, experimentación.
2. Desarrollo del modelo: Desarrollo de un modelo funcional capacitado para pasar a producción.
3. Operaciones: Despliegue, automatización de entrenamientos, extracción de datos, etc.
¿Cuáles son los Principios de MLOps?
· Automatización: ML pipeline y CI/CD pipeline.
· Versionado: Basado en tres pilares, datos, modelo y código.
· Testing: Base sobre la que va a funcionar todo el sistema.
· Monitorización: De los principales indicares de performance de mi modelo de manera constante.
· Reproductividad: De la ingeniería de características, del entrenamiento del modelo y del despliegue del modelo. 
· Herramientas: Principalmente servicios Cloud.
Data Engineer
El Ingeniero de Datos o también conocido como “Data Engineer ” se encarga de construir y mantener las estructuras de datos y las arquitecturas tecnológicas necesarias para la ingestión, procesamiento e implementación a gran escala de aplicaciones que usan datos de forma intensiva.
Funciones de un Data Engineer
Algunas de las funciones más importantes a destacar son:
· Desarrollar, y construir las arquitecturas de datos.
· Alinear arquitectura con requisitos comerciales y del negocio.
· Identificar formas de mejorar la confiabilidad, eficiencia y calidad de losdatos.
· Preparar datos para modelos predictivos y prescriptivos.
· Gestionar las actualizaciones de la infraestructura de datos.
Roadmap para convertirnos en un Ingeniero de Datos
Kubernetes y Docker
Docker:
Docker es un proyecto de código abierto para automatizar la implementación de aplicaciones como contenedores portátiles y autosuficientes que se pueden ejecutar en la nube o localmente. Los contenedores de Docker se pueden ejecutar en cualquier lugar, a nivel local en el centro de datos de cliente, en un proveedor de servicios externo o en la nube.
Kubernetes:
Sistema de orquestación de contenedores, esto significa que el software no se encarga de crearlos, sino de administrarlos. La arquitectura de Kubernetes consta de una clara jerarquía, compuesta por los siguientes elementos:
· Contenedor: Incluye las aplicaciones y entornos de software.
· Pod: Este elemento de la arquitectura de Kubernetes se encarga de agrupar aquellos contenedores que necesitan trabajar juntos para el funcionamiento de una aplicación.
· Nodo: Uno o varios pods se ejecutan en un nodo, Ej una VM.
· Clúster: en Kubernetes, los nodos se agrupan en clústeres.
Por otra parte, la arquitectura de Kubernetes se basa en el principio de maestro y esclavo. Los nodos descritos se utilizan como esclavos, es decir, que son las partes controladas del sistema y están bajo la administración y el control de los maestros de Kubernetes.

Continuar navegando