Configuración de entornos para desarrollo y producción

Completado

En DevOps, un entorno hace referencia a una colección de recursos. Estos recursos se usan para implementar una aplicación o para implementar un modelo mediante proyectos de aprendizaje automático.

Uso de entornos en para la entrega continua

El número de entornos con los que trabaja depende de su organización. Por lo general, hay al menos dos entornos: desarrollo o dev y producción o prod. Además, puede agregar entornos intermedios, como un entorno de almacenamiento provisional o de preproducción (preprod).

Con la entrega continua, debe tener en cuenta este enfoque típico:

  1. Experimente con el entrenamiento del modelo en el entorno de desarrollo.
  2. Lleve el mejor modelo al entorno de almacenamiento provisional o de preproducción para implementarlo y probarlo.
  3. Por último, lleve el modelo al entorno de producción para implementarlo y que los usuarios finales puedan usarlo.

Nota

En este módulo, se hace referencia a la interpretación de entornos de DevOps. Tenga en cuenta que Azure Machine Learning también usa el término "entornos" para describir una colección de paquetes de Python necesarios para ejecutar un script. Estos dos conceptos de entornos son independientes entre sí. Obtenga más información sobre los entornos de Azure Machine Learning.

Organización de los entornos de Azure Machine Learning

Al implementar MLOps y trabajar con modelos de aprendizaje automático a gran escala, se recomienda trabajar con entornos independientes en las diferentes fases.

Para crear imágenes, su equipo usa un entorno de tipo dev, preprod y prod. No todos los miembros del equipo deben tener acceso a todos los entornos. Los científicos de datos solo pueden trabajar en el entorno de desarrollo con datos que no sean de producción, mientras que los ingenieros de aprendizaje automático deben trabajar en la implementación del modelo en el entorno de tipo preprod y prod con los datos de producción.

Tener entornos independientes facilitará el control del acceso a los recursos. A continuación, cada entorno se puede asociar a un área de trabajo de Azure Machine Learning independiente.

Diagram of multiple environments set-up.

En Azure, usará el control de acceso basado en roles (RBAC) para proporcionar a sus compañeros el nivel adecuado de acceso al subconjunto de recursos con los que necesitan trabajar.

Como alternativa, solo puede usar un área de trabajo de Azure Machine Learning. Al usar un área de trabajo para el desarrollo y la producción, tendrá una superficie de Azure más pequeña y menos sobrecarga en la administración. Sin embargo, RBAC se aplicará tanto en el desarrollo como en la producción, lo que puede significar que proporciona a las personas poco o demasiado acceso a los recursos.

Para trabajar con entornos en diferentes fases del desarrollo del modelo, puede tener como destino un entorno al ejecutar una canalización de Azure o un flujo de trabajo con Acciones de GitHub.

Entornos de Azure DevOps

Para trabajar con entornos en Azure DevOps, primero debe crearlos. A continuación, puede especificar qué entorno quiere implementar en una canalización de Azure.

  1. En Azure DevOps, expanda el menú Canalizaciones.
  2. Seleccione Entornos.
  3. Cree un entorno nuevo.
  4. Póngale un nombre al entorno.
  5. Elija Ninguno en los recursos. El destino es un área de trabajo de Azure Machine Learning específica en la propia canalización.
  6. Seleccione Crear.

Screenshot of creating new environment in Azure DevOps.

Después de crear los entornos en Azure DevOps y tener diferentes áreas de trabajo de Azure Machine Learning asociadas a cada entorno, puede especificar qué entorno quiere implementar en el archivo YAML de Azure Pipelines:

trigger: 
- main

stages:
- stage: deployDev
  displayName: 'Deploy to development environment'
  jobs:
    - deployment: publishPipeline
      displayName: 'Model Training'
      pool:
        vmImage: 'Ubuntu-18.04'
      environment: dev
      strategy:
       runOnce:
         deploy:
          steps:
          - template: aml-steps.yml
            parameters:
              serviceconnectionname: 'spn-aml-workspace-dev'

El valor de environment en el archivo YAML es dev, lo que indica que el modelo se entrena en el entorno de desarrollo. A través de la conexión de servicio, especifique qué área de trabajo de Azure Machine Learning quiere usar para el entrenamiento del modelo.

Sugerencia

Obtenga más información sobre cómo crear y establecer como destino un entorno con Azure DevOps.

Entornos de GitHub

Para usar entornos con Acciones de GitHub, primero debe crear un entorno. A continuación, puede usarlo en el flujo de trabajo.

Para crear un entorno en el repositorio de GitHub (repositorio):

  1. Vaya a la pestaña Configuración del repositorio.
  2. Seleccione Entornos.
  3. Cree un entorno nuevo.
  4. Escriba un nombre.
  5. Seleccione Configure environment (Configurar el entorno).

Screenshot of creating new environment in GitHub.

Para asociar un entorno a un área de trabajo de Azure Machine Learning específica, puede crear un secreto de entorno para proporcionar acceso al entorno únicamente a un área de trabajo de Azure Machine Learning.

Para usar un entorno en un flujo de trabajo, puede especificar qué entorno quiere implementar incluyéndolo en el archivo YAML:

name: Train model

on:
  push:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest
    environment:
        name: dev 
    steps:
    - name: check out repo
      uses: actions/checkout@v2
    - name: install az ml extension
      run: az extension add -n ml -y
    - name: azure login
      uses: azure/login@v1
      with:
        creds: ${{secrets.AZURE_CREDENTIALS}}
    - name: set current directory
      run: cd src
    - name: run pipeline
      run: az ml job create --file src/aml_service/pipeline-job.yml --resource-group dev-ml-rg --workspace-name dev-ml-ws

En el ejemplo, el secreto AZURE_CREDENTIALS contiene la información de conexión al área de trabajo de Azure Machine Learning que se usa en este entorno.

Sugerencia

Obtenga más información sobre cómo crear y usar un entorno con Acciones de GitHub.