Procedimientos recomendados para proyectos de ciencia de datos con análisis a escala en la nube en Azure
Se recomiendan estos procedimientos recomendados para usar análisis a escala en la nube en Microsoft Azure para poner en marcha proyectos de ciencia de datos.
Desarrollo de una plantilla
Desarrolle una plantilla que incluya un conjunto de servicios para los proyectos de ciencia de datos. Use una plantilla que incluya un conjunto de servicios para ayudar a proporcionar coherencia en los distintos casos de uso de los equipos de ciencia de datos. Se recomienda desarrollar un plano técnico coherente en forma de repositorio de plantillas. Puede usar este repositorio para varios proyectos de ciencia de datos dentro de su empresa para ayudar a acortar los tiempos de implementación.
Directrices para plantillas de ciencia de datos
Desarrolle una plantilla de ciencia de datos para su organización con las siguientes directrices:
Desarrolle un conjunto de plantillas de infraestructura como código (IaC) para implementar un área de trabajo de Azure Machine Learning. Incluya recursos como un almacén de claves, una cuenta de almacenamiento, un registro de contenedor y Application Insights.
Incluya la configuración de almacenes de datos y destinos de proceso en estas plantillas, como instancias de proceso, clústeres de proceso y Azure Databricks.
Procedimientos recomendados de implementación
Tiempo real
- Incluya una implementación de Azure Data Factory o Azure Synapse en plantillas y servicios de Azure AI.
- Las plantillas deben proporcionar todas las herramientas necesarias para ejecutar la fase de exploración de ciencia de datos y la operacionalización inicial del modelo.
Consideraciones para una configuración inicial
En algunos casos, los científicos de datos de su organización pueden requerir un entorno para un análisis rápido según sea necesario. Esta situación es habitual cuando un proyecto de ciencia de datos no está configurado formalmente. Por ejemplo, es posible que falte un administrador de proyectos, un código de costo o un centro de costos que pueda ser necesario para la carga cruzada dentro de Azure porque el elemento que falta necesita aprobación. Es posible que los usuarios de su organización o equipo necesiten acceder a un entorno de ciencia de datos para comprender los datos y, posiblemente, evaluar la viabilidad de un proyecto. Además, es posible que algunos proyectos no requieran un entorno completo de ciencia de datos debido al pequeño número de productos de datos.
En otros casos, es posible que se requiera un proyecto completo de ciencia de datos, que se complete con un entorno dedicado, la administración de proyectos, el código de costo y el centro de costos. Los proyectos completos de ciencia de datos son útiles para varios miembros del equipo que desean colaborar, compartir resultados y necesitan poner en marcha modelos después de que la fase de exploración se realice correctamente.
El proceso de instalación
Las plantillas se deben implementar por proyecto una vez configuradas. Cada proyecto debe recibir al menos dos instancias para que los entornos de desarrollo y producción estén separados. En el entorno de producción, ninguna persona individual debe tener acceso y todo debe implementarse a través de canalizaciones de integración continua o desarrollo continuo y una entidad de servicio. Estos principios de entorno de producción son importantes porque Azure Machine Learning no proporciona un modelo de control de acceso basado en roles pormenorizado dentro de un área de trabajo. No se puede limitar el acceso de usuario a un conjunto específico de experimentos, puntos de conexión o canalizaciones.
Normalmente, los mismos derechos de acceso se aplican a distintos tipos de artefactos. Es importante separar el desarrollo de producción para evitar la eliminación de canalizaciones de producción o puntos de conexión dentro de un área de trabajo. Junto con la plantilla, es necesario crear un proceso para proporcionar a los equipos de productos de datos la opción de solicitar nuevos entornos.
Se recomienda configurar diferentes servicios de inteligencia artificial, como los servicios de Azure AI por proyecto. Al configurar diferentes servicios de inteligencia artificial por proyecto, se producen implementaciones para cada grupo de recursos de producto de datos. Esta directiva crea una separación clara desde el punto de vista del acceso a datos y mitiga el riesgo de acceso a datos no autorizados por los equipos incorrectos.
Escenario de streaming
Para los casos de uso de streaming y en tiempo real, las implementaciones deben probarse en una versión de tamaño reducido de Azure Kubernetes Service (AKS). Las pruebas pueden estar en el entorno de desarrollo para ahorrar costos antes de realizar la implementación en AKS de producción o Azure App Service para contenedores. Debe realizar pruebas de entrada y salida sencillas para asegurarse de que los servicios responden según lo previsto.
A continuación, puede implementar modelos en el servicio que desee. Este destino de proceso de implementación es el único que está disponible con carácter general y recomendado para cargas de trabajo de producción en un clúster de AKS. Este paso es más necesario si se requiere compatibilidad con la unidad de procesamiento gráfico (GPU) o la matriz de puertas programables por campo. Otras opciones de implementación nativas que admiten estos requisitos de hardware no están disponibles actualmente en Azure Machine Learning.
Azure Machine Learning requiere de un mapeo uno a uno a clústeres de AKS. Cada nueva conexión a un área de trabajo de Azure Machine Learning interrumpe la conexión anterior entre AKS y Azure Machine Learning. Después de mitigar esa limitación, se recomienda implementar clústeres de AKS centrales como recursos compartidos y adjuntarlos a sus respectivas áreas de trabajo.
Se debe hospedar otra instancia central de AKS de prueba si se deben realizar pruebas de esfuerzo antes de mover un modelo a la instancia de AKS de producción. El entorno de prueba debe proporcionar el mismo recurso de proceso que el entorno de producción para asegurarse de que los resultados sean lo más similares posible al entorno de producción.
Escenario por lotes
No todos los casos de uso necesitan implementaciones de clúster de AKS. Un caso de uso no necesita una implementación de clúster de AKS si grandes cantidades de datos solo necesitan puntuación periódicamente o se basan en un evento. Por ejemplo, las grandes cantidades de datos pueden depender de cuando los datos se ingresan en una cuenta de almacenamiento específica. Las canalizaciones de Azure Machine Learning y los clústeres de proceso de Azure Machine Learning deben usarse para la implementación durante estos tipos de escenarios. Estas canalizaciones se deben orquestar y ejecutar en Data Factory.
Identificar los recursos informáticos adecuados
Antes de implementar un modelo en Azure Machine Learning en un AKS, el usuario debe especificar los recursos como CPU, RAM y GPU que se deben asignar para el modelo correspondiente. Definir estos parámetros puede ser un proceso complejo y tedioso. Debe realizar pruebas de esfuerzo con diferentes configuraciones para identificar un buen conjunto de parámetros. Puede simplificar este proceso con la característica de generación de perfiles de modelos de en Azure Machine Learning, que es un trabajo de larga duración que prueba diferentes combinaciones de asignación de recursos y usa una latencia identificada y un tiempo de ida y vuelta (RTT) para recomendar una combinación óptima. Esta información puede ayudar a la implementación real del modelo en AKS.
Para actualizar modelos de forma segura en Azure Machine Learning, los equipos deben usar la característica de lanzamiento controlado (versión preliminar) para minimizar el tiempo de inactividad y mantener el punto de conexión REST del modelo coherente.
Procedimientos recomendados y flujo de trabajo para MLOps
Incluir código de ejemplo en repositorios de ciencia de datos
Puede simplificar y acelerar proyectos de ciencia de datos si los equipos tienen determinados artefactos y procedimientos recomendados. Se recomienda crear artefactos que todos los equipos de ciencia de datos puedan usar al trabajar con Azure Machine Learning y las herramientas correspondientes del entorno del producto de datos. Los ingenieros de datos y aprendizaje automático deben crear y proporcionar los artefactos.
Estos artefactos deben incluir:
Cuadernos de ejemplo que muestran cómo:
- Carga, montaje y trabajo con productos de datos.
- Registrar métricas y parámetros.
- Envíe trabajos de entrenamiento a clústeres de proceso.
Artefactos necesarios para la operacionalización:
- Canalizaciones de ejemplo de Azure Machine Learning
- Ejemplo de Azure Pipelines
- Más scripts necesarios para ejecutar canalizaciones
Documentación
Uso de artefactos bien diseñados para operacionalizar canalizaciones
Los artefactos pueden acelerar las fases de exploración y operacionalización de los proyectos de ciencia de datos. Una estrategia de bifurcación de DevOps puede ayudar a escalar estos artefactos en todos los proyectos. Dado que esta configuración promueve el uso de Git, los usuarios y el proceso general de automatización pueden beneficiarse de los artefactos proporcionados.
Sugerencia
Las canalizaciones de ejemplo de Azure Machine Learning deben compilarse con el kit para desarrolladores de software (SDK) de Python o en función del lenguaje YAML. La nueva experiencia de YAML será más a prueba de futuro, ya que el equipo de productos de Azure Machine Learning está trabajando actualmente en un nuevo SDK y una interfaz de línea de comandos (CLI). El equipo de productos de Azure Machine Learning confía en que YAML servirá como lenguaje de definición para todos los artefactos de Azure Machine Learning.
Las canalizaciones de ejemplo no funcionan de forma predeterminada para cada proyecto, pero se pueden usar como línea base. Puede ajustar las canalizaciones de muestra en función de los proyectos. Una canalización debe incluir los aspectos más relevantes de cada proyecto. Por ejemplo, una canalización puede hacer referencia a un destino de proceso, hacer referencia a productos de datos, definir parámetros, definir entradas y definir los pasos de ejecución. El mismo proceso debe realizarse para Azure Pipelines. Azure Pipelines también debe usar el SDK o la CLI de Azure Machine Learning.
Las canalizaciones deben demostrar cómo:
- Conecte un área de trabajo desde una canalización de DevOps.
- Compruebe si los recursos de computación necesarios están disponibles.
- Envíe un trabajo.
- Registre e implemente un modelo.
Los artefactos no son adecuados para todos los proyectos todo el tiempo y pueden requerir personalización, pero tener una base puede acelerar la operacionalización e implementación de un proyecto.
Estructura del repositorio de MLOps
Puede tener situaciones en las que los usuarios pierdan la noción de dónde pueden encontrar y almacenar elementos. Para evitar estas situaciones, debe solicitar más tiempo para comunicarse y construir una estructura de carpetas de nivel superior para el repositorio estándar. Todos los proyectos deben seguir la estructura de carpetas.
Nota
Los conceptos mencionados en esta sección se pueden usar en entornos locales, Amazon Web Services, Palantir y Azure.
La estructura de carpetas de nivel superior propuesta para un repositorio de MLOps (operaciones de aprendizaje automático) se muestra en el diagrama siguiente:
Los siguientes propósitos se aplican a cada carpeta del repositorio:
Carpeta | Propósito |
---|---|
.cloud |
Almacene código y artefactos específicos de la nube en esta carpeta. Los artefactos incluyen archivos de configuración para el área de trabajo de Azure Machine Learning, entre ellos definiciones de objetivos de computación, tareas, modelos registrados y puntos de conexión. |
.ado/.github |
Almacene artefactos de Azure DevOps o GitHub como canalizaciones de YAML o propietarios de código en esta carpeta. |
code |
Incluya el código real desarrollado como parte del proyecto en esta carpeta. Esta carpeta puede contener paquetes de Python y algunos scripts que se usan para los pasos respectivos de la canalización de aprendizaje automático. Se recomienda separar los pasos individuales que deben realizarse en esta carpeta. Los pasos comunes son el preprocesamiento, el entrenamiento del modelo, y el registro del modelo. Defina dependencias como dependencias de Conda, imágenes de Docker u otras para cada carpeta. |
docs |
Use esta carpeta con fines de documentación. Esta carpeta almacena los archivos e imágenes de Markdown para describir el proyecto. |
pipelines |
Almacene las definiciones de canalizaciones de Azure Machine Learning en YAML o Python en esta carpeta. |
tests |
Escriba pruebas unitarias e de integración que deban ejecutarse para detectar errores y problemas al principio durante el proyecto en esta carpeta. |
notebooks |
Separe los cuadernos de Jupyter Notebook del proyecto de Python real con esta carpeta. Dentro de la carpeta, cada persona debe tener una subcarpeta para comprobar sus cuadernos y evitar conflictos de combinación de Git. |