Desarrollo de aplicaciones modernas: aprendizaje automático e inteligencia artificial

Los científicos de datos y los ingenieros de aprendizaje automático no desean dedicar tiempo al aprovisionamiento, la actualización, la aplicación de parches y la protección de la infraestructura. Quieren dedicar su tiempo a la creación, formación y despliegue de modelos que afecten al negocio. Una plataforma de aprendizaje automático debe estar completamente gestionada y permitirles realizar todos los pasos del ciclo de vida de desarrollo de modelos (crear, entrenar, desplegar y supervisar). Además, una plataforma de aprendizaje automático no debe estar vinculada a un almacén de datos concreto. En su lugar, debe ser independiente del origen y permitir que los científicos de datos se conecten a varios almacenes de datos en diferentes nubes.

La mayoría de los kits de herramientas de aprendizaje automático modernos son de código abierto y están escritos en Python. Como tal, una plataforma de aprendizaje automático debe proporcionar soporte nativo para marcos de código abierto y Python. También debe permitir a los usuarios personalizar sus entornos de aprendizaje automático instalando sus propias bibliotecas o actualizando las que ya están instaladas. La plataforma debe permitir a los científicos de datos formar sus modelos en datos estructurados, no estructurados o semiestructurados al tiempo que escalan los pasos de extracción, transformación y carga (ETL) o formación vertical u horizontalmente en una serie de recursos informáticos.

Por último, una plataforma de aprendizaje automático debe garantizar que los modelos se puedan desplegar fácilmente para su consumo en tiempo real con una fricción mínima (idealmente mediante una llamada REST simple), conservando al mismo tiempo el alineamiento del modelo desplegado para garantizar que se pueda auditar y reproducir.

En este documento se presentan los principios de diseño asociados a la creación de una plataforma de aprendizaje automático y una ruta de implantación óptima. Utilice este patrón para crear plataformas de aprendizaje automático que satisfagan las necesidades de los usuarios de su científico de datos.

Principios de diseño

Esta arquitectura implementa principios modernos de desarrollo de aplicaciones de las siguientes maneras:

  • Principio: utilizar marcos ligeros de código abierto y lenguajes de programación maduros

    Utilice entornos conda en lugar de entornos virtuales de Python o imágenes de Docker. Proporcionamos entornos de preservativos de Data Science que contienen una recopilación de bibliotecas de Python seleccionadas para abordar un caso de uso concreto. Los entornos Conda normalmente proporcionan el nivel de aislamiento adecuado en Python, ofrecen flexibilidad al permitir que varios entornos se ejecuten en el mismo entorno de bloc de notas o trabajo por lotes, y son más fáciles de crear que las imágenes de Docker. Los entornos Conda también son fáciles de exportar e importar porque son archivos simples (gzip y zip).

    Comience con nuestro conjunto de entornos conda listos para usar. Estos entornos se actualizan con regularidad para garantizar que los paquetes que contienen reflejen la última versión disponible. Cada entorno incluye ejemplos de documentación y código. Los entornos se pueden utilizar para crear, entrenar y desplegar modelos de aprendizaje automático en Python 3.6 y versiones posteriores. Adopte estos entornos para garantizar la compatibilidad entre diferentes componentes de arquitectura.

  • Principio: creación de aplicaciones como servicios que se comunican a través de API

    Adopte la función de despliegue de modelos de Data Science, que despliega un modelo del catálogo de modelos como un punto final HTTP escalable que otras aplicaciones pueden consumir. Asegurar que el entorno de formación del modelo contiene las mismas dependencias de terceros que el entorno de despliegue puede ser un desafío. Los despliegues del modelo de ciencia de datos afrontan ese desafío al extraer el entorno de conda adecuado para ejecutar su modelo detrás del punto final HTTP. Los despliegues de modelos también proporcionan autenticación y autorización de Oracle Cloud Infrastructure (OCI) Identity and Access Management (IAM) para que no tenga que crear y configurar su propio protocolo de gestión de acceso y usuario.

    Una alternativa aceptable es el despliegue de modelos de aprendizaje automático a través de Oracle Functions, que se puede utilizar como backend para el gateway de API. Esta opción proporciona flexibilidad, especialmente al definir la API o utilizar un protocolo de autorización diferente como OAuth o autenticación básica. Sin embargo, necesita más trabajo para usted, está menos automatizado y es más propenso a errores del usuario. Oracle Functions necesita que cree su propia imagen de Docker y asegúrese de que todas las dependencias necesarias y la versión de tiempo de ejecución de Python coincidan con el entorno de formación. La mayoría de los equipos de ciencia de datos deben evitar esta opción.

  • Principio: compilación, prueba y despliegue automatizados

    DevOps es para el desarrollo de software lo que MLOps es para el aprendizaje automático: una serie de procesos y automatización centrados en la creación, prueba, evaluación, despliegue y supervisión de modelos en producción. Favorecer el uso de patrones repetibles, auditables y reproducibles mediante trabajos y despliegues de modelos en Data Science. Evite la formación y el despliegue de modelos directamente desde una sesión de bloc de notas donde es más difícil crear, ejecutar y automatizar las pruebas. Asegúrese de que todo el código para preparar los datos, entrenar el modelo y definir las pruebas está controlado por versiones. Ejecute pipelines de creación y despliegue mediante el servicio OCI DevOps o directamente desde trabajos de Data Science. Ejecute la serie de pruebas de introspección de modelo incluidas en el código de texto fijo del artefacto del catálogo de modelos. Cuando se ejecuta correctamente, estas pruebas minimizan el número de errores que se producen cuando el modelo se despliega en producción.

  • Principio: utilice servicios totalmente gestionados para eliminar la complejidad del desarrollo de aplicaciones, los tiempos de ejecución y la gestión de datos

    Tanto si un científico de datos documenta sus activos de datos a través de OCI Data Catalog, realiza trabajos de procesamiento de datos a gran escala con OCI Data Flow como si crea, entrena y despliega modelos de aprendizaje automático a través de Data Science, todas estas soluciones se gestionan por completo. Nos encargamos de aprovisionar, aplicar parches y proteger estos entornos. Una solución totalmente gestionada reduce significativamente la carga operativa que soportan los equipos de científicos de datos, cuyos objetivos son formar e implementar modelos, no gestionar la infraestructura. Una buena plataforma de aprendizaje automático proporciona varias ofertas de infraestructura (CPU, GPU, unidades flexibles) sin necesidad de configuración adicional.

  • Principio: Control y rastreo integrales de instrumentos

    Todas las cargas de trabajo deben tener métricas de estado básicas emitidas a través del servicio de supervisión de OCI. Los usuarios pueden definir umbrales de métricas personalizados para alertas y recibir notificaciones o actuar cuando se alcance un umbral determinado. Esto les permite supervisar el estado operativo de sus trabajos, sesiones de bloc de notas o despliegues de modelo.

    Permita a los usuarios emitir logs personalizados en el servicio de registro de OCI desde los trabajos y las implementaciones de modelos. En la mayoría de los casos, los científicos de datos también desean supervisar los procesos que se ejecutan en trabajos (por ejemplo, iteración de formación o puntuación de validación fuera de línea) o capturar vectores de funciones o predicciones de modelos a partir de un despliegue de modelo. Este es un patrón común. Asegúrese de que pueden acceder al servicio de registro de OCI y realizar análisis exploratorios sencillos a través del servicio de análisis de registro de OCI.

  • Principio: Implantar un enfoque de defensa en profundidad para proteger aplicaciones y datos

    Una buena plataforma de aprendizaje automático limita el acceso de los científicos de datos a los recursos que necesitan para realizar su trabajo. Siga el principio de privilegio mínimo en grupos de científicos de datos. Además, utilice principales de recursos sobre principales de usuario para autenticarse o autorizar a otros recursos. Esta práctica evita que los usuarios inserten sus credenciales principales de usuario en sesiones o trabajos de bloc de notas.

    Asegúrese de que todos los usuarios tengan acceso a OCI Vault y de que sus credenciales para acceder a orígenes de datos de terceros se almacenan y cifran en Vault. Las sesiones de bloc de notas en particular solo deben ser accesibles para los usuarios que las crearon; configure las políticas de acceso para otorgar acceso a sesiones y trabajos de bloc de notas solo al creador de esos recursos. Esta práctica impide que varios usuarios accedan al mismo entorno de bloc de notas, compartan claves privadas y sobrescriban el mismo fragmento de código. Limite el acceso de salida a la red pública de Internet cuando tenga sentido. Configure y seleccione VNIC secundarias (selección de subred y red virtual en la nube) para iniciar sesiones y trabajos de bloc de notas, y evite que los usuarios descarguen conjuntos de datos o bibliotecas de sitios no seguros.

Arquitectura

Puede implantar los principios de diseño mediante un despliegue basado en esta arquitectura con opinión.

A continuación se muestra la descripción de maf_ai_ml_design_pattern.png
Descripción de la ilustración maf_ai_ml_design_pattern.png

La arquitectura tiene los siguientes componentes:

  • Servicio de integración de datos

    La integración de datos de Oracle Cloud Infrastructure es un servicio en la nube totalmente gestionado, multi-inquilino, sin servidor y nativo que le ayuda a realizar tareas comunes de ETL como la ingestión de datos de diferentes orígenes; la limpieza, transformación y reconfiguración de esos datos; y su carga eficaz en orígenes de datos de destino en OCI.

    La ingestión de datos de diversas fuentes (por ejemplo, Amazon Redshift, Azure SQL Database y Amazon S3) en Object Storage y Autonomous Data Warehouse es el primer paso de este proceso.

  • Object Storage y Autonomous Database

    Object Storage y Autonomous Data Warehouse proporcionan la capa de almacenamiento para los datos históricos utilizados para entrenar los modelos de aprendizaje automático. Object Storage se puede utilizar como capa de almacenamiento de datos de origen y de destino para realizar trabajos de procesamiento de datos personalizados y ETL mediante Data Flow.

  • Catálogo de datos de OCI

    Un data lake que consta de varias tablas en Autonomous Data Warehouse, bloques en Object Storage y miles de activos de datos se vuelve difícil de manejar rápidamente. Para los científicos de datos, el problema es de la capacidad de detección. No son DBA, pero deben identificar rápidamente qué activos de datos son relevantes para solucionar un problema empresarial determinado. Oracle Cloud Infrastructure Data Catalog permite a los científicos de datos identificar rápidamente los activos de datos candidatos para la formación de modelos de aprendizaje automático.

    Data Catalog es una solución de descubrimiento y gobernanza de datos de autoservicio totalmente gestionada para los datos empresariales. Proporciona un único entorno de colaboración para gestionar metadatos técnicos, empresariales y operativos. Puede recopilar, organizar, buscar, acceder, mejorar y activar estos metadatos.

  • Servicio de OCI Data Flow

    Antes de que los datos estén listos para el aprendizaje automático de formación, es necesario aplicar varias operaciones de "escritura" de datos, a escala, en los datos no procesados de Object Storage o Autonomous Data Warehouse. Los científicos de datos necesitan que los datos estén limpios, unidos, desnormalizados, desduplicados, imputados, escalados y formados en un formato adecuado para el entrenamiento de modelos (normalmente un marco de datos). Este paso normalmente lo realizan los ingenieros de datos, pero hay más científicos de datos implicados en este paso. El kit de herramientas de facto para realizar estos pasos es Apache Spark y se recomienda utilizar Oracle Cloud Infrastructure Data Flow.

    Data Flow es un servicio totalmente gestionado para ejecutar aplicaciones Spark. Le permite centrarse en sus aplicaciones y proporciona un entorno de tiempo de ejecución sencillo para ejecutarlas. Tiene una interfaz de usuario simple y sencilla con soporte de API para la integración con aplicaciones y flujos de trabajo. No necesita dedicar tiempo a la infraestructura subyacente, el aprovisionamiento de clusters ni a la instalación del software.

  • OCI Data Science

    Oracle Cloud Infrastructure Data Science es una plataforma totalmente gestionada que los equipos de ciencia de datos pueden utilizar para crear, entrenar, gestionar y desplegar sus modelos de aprendizaje automático en OCI. La ciencia de datos incluye sesiones de bloc de notas, trabajos, un catálogo de modelos, despliegues de modelos y el SDK de Python de Accelerated Data Science (ADS). Los datos se pueden ingerir en sesiones de bloc de notas o trabajos de diversas fuentes de datos y transformarse en funciones predictivas para el entrenamiento de modelos. Las sesiones de bloc de notas son IDE en los que los científicos de datos pueden crear prototipos de transformaciones necesarias para realizar ingeniería de características y entrenar el modelo. Estos pasos se pueden producir a escala con trabajos. Después de entrenar los modelos, se almacenan en una capa de almacenamiento de modelos gestionados (catálogo de modelos) y se almacenan en área temporal para el despliegue. Los modelos se pueden desplegar como puntos finales HTTP mediante despliegues de modelos. Una vez desplegados, los modelos pueden ser consumidos por aplicaciones de terceros, tanto si estas aplicaciones están alojadas en OCI como en cualquier otro lugar.

  • Oracle Machine Learning

    Oracle Machine Learning también ofrece funciones para crear, entrenar y desplegar modelos para los datos de la base de datos. Oracle Machine Learning proporciona una interfaz de bloc de notas de Zeppelin que permite a los científicos de datos entrenar modelos con la biblioteca de clientes de Python OML4Py. OML también ofrece un enfoque sin código para el entrenamiento del modelo con la interfaz de usuario AutoML. El despliegue de modelos como API de REST se puede realizar mediante Oracle Machine Learning Services. Sin embargo, el soporte para software de código abierto es limitado.

  • Servicios de IA

    Los servicios de IA proporcionan una recopilación de API de modelo predefinidas y personalizables sobre los casos de uso que abarcan desde el lenguaje, la visión, el discurso, la decisión y la previsión. Los servicios de IA proporcionan predicciones de modelos a las que se puede acceder mediante puntos finales de API de REST. Estos servicios proporcionan modelos predefinidos de última generación y se deben considerar y evaluar antes de entrenar modelos personalizados de aprendizaje automático utilizando los servicios 1-6. Como alternativa, los servicios de Oracle Machine Learning también proporcionan una serie de modelos predefinidos para el lenguaje (tema, palabras clave, resumen, similitud) y la visión.

Consideraciones

Al implementar machine learning e inteligencia artificial, tenga en cuenta estas opciones.

  • Proporciona escalabilidad horizontal en cada paso del ciclo de vida de desarrollo del modelo

    Proporcione una escalabilidad horizontal para los pasos de procesamiento de datos y ETL (mediante OCI Data Flow), el propio entrenamiento del modelo y el despliegue del modelo. Además, considere el uso de GPU tanto en el lado del entrenamiento del modelo como en el del despliegue.

  • Garantice la reproducibilidad del modelo

    Los modelos se auditan y se deben reproducir. La reproducción de un modelo requiere que se proporcionen referencias al código fuente, los conjuntos de datos de formación y validación y el entorno (bibliotecas y arquitectura de terceros) cuando se guarda un modelo. Utilice referencias a repositorios de Git y hashes de confirmación para realizar un seguimiento del código. Utilice Object Storage para guardar instantáneas de conjuntos de datos de formación y validación. Incluya una referencia a un entorno de conda publicado como parte de los metadatos del modelo.

  • Código de control de versiones, características y modelos

    Esta consideración está relacionada con la reproducibilidad del modelo. Puede versionar modelos directamente en el catálogo de modelos de ciencia de datos. Integre el uso de Git como parte de un IDE de ciencia de datos (por ejemplo, JupyterLab) o en un motor de ejecución de formación como los trabajos de ciencia de datos. Puede versionar funciones como conjuntos de datos mediante una herramienta como Object Storage o Git Large File Storage (LFS), que admite el control de versiones de objetos de forma predeterminada.

  • Empaquetar, compartir y reutilizar dependencias de tiempo de ejecución de terceros

    Reutilice los mismos entornos conda en anotaciones, trabajos y despliegues de modelos. Al hacerlo, también se minimiza el riesgo de discrepancias de dependencia de terceros entre estos pasos.

  • No tener en cuenta el origen de datos al limitar las transferencias de datos

    La transferencia de datos a un entorno de formación de modelo requiere mucho tiempo. Utilice los volúmenes en bloque que se pueden compartir entre entornos de bloc de notas o trabajos de formación tanto como sea posible. Mantenga instantáneas de conjuntos de datos locales con fines de formación y validación de modelos.

Patrones Alternativos

Esta arquitectura proporciona patrones alternativos para adaptarse a las inversiones existentes, la familiaridad operativa u otras restricciones.
  • Despliegue de una máquina virtual de ciencia de datos desde OCI Marketplace como alternativa al servicio gestionado de ciencia de datos

    La imagen de máquina virtual de ciencia de datos está disponible para las familias de unidades de GPU de CPU y NVIDIA. El entorno proporciona una serie completa de IDE y bibliotecas de aprendizaje automático que pueden utilizar los científicos de datos. Sin embargo, no proporciona capacidades de despliegue de modelos. El despliegue de modelos se puede realizar mediante el despliegue de modelos de OCI Data Science o mediante Oracle Functions.

  • Oracle Machine Learning (libros de notas de LM, interfaz de usuario AutoML, servicios, OML4Py) de la base de datos para la creación, formación y despliegue de modelos de aprendizaje automático en la base de datos

    Este patrón alternativo proporciona potentes capacidades cuando los datos necesarios para formar el modelo están en la base de datos. Este patrón tiene limitaciones en el soporte de software de código abierto de aprendizaje automático.

    Descripción de alt-architecture-ml.png a continuación
    Descripción de la ilustración alt-architecture-ml.png

  • Despliegue de modelos como API de REST a través del registro de OCI, Oracle Functions y el gateway de API

    Este patrón se aplica a los clientes que están formando sus modelos en el entorno de imagen de máquina virtual de ciencia de datos o a través de OCI Data Science. Este patrón proporciona una ruta alternativa al despliegue de modelos de aprendizaje automático como puntos finales de API de REST. Se debe crear y desplegar una imagen de Docker con el artefacto de modelo entrenado en OCI Registry. Se puede crear una función de Oracle a partir de la imagen del docker y desplegarse como recurso de backend del gateway de API.

  • Despliegue de la plataforma de aprendizaje automático de OSS Kubeflow en OKE

    Este patrón ofrece una solución independiente y ofrece al cliente la opción de ejecutar cargas de trabajo de aprendizaje automático basadas en contenedores en Oracle Container Engine for Kubernetes. Kubeflow es una oferta de OSS que ofrece todas las capacidades clave de una plataforma de aprendizaje automático.

Antipatrón

No recomendamos una flota de máquinas virtuales creadas con una pila de OSS de aprendizaje automático personalizada. Los proyectos de aprendizaje automático suelen basarse en varias bibliotecas OSS que tienen dependencias complejas y a menudo conflictivas y vulnerabilidades de seguridad que requieren actualizaciones de paquetes constantes. Recomendamos servicios gestionados que asuman la carga de crear entornos seguros y listos para usar.