Configuración de entornos para desarrollo y producción
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:
- Experimente con el entrenamiento del modelo en el entorno de desarrollo.
- Lleve el mejor modelo al entorno de almacenamiento provisional o de preproducción para implementarlo y probarlo.
- 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.
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.
Sugerencia
Obtenga información sobre los procedimientos recomendados para organizar los recursos de Azure Machine Learning.
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.
- En Azure DevOps, expanda el menú Canalizaciones.
- Seleccione Entornos.
- Cree un entorno nuevo.
- Póngale un nombre al entorno.
- Elija Ninguno en los recursos. El destino es un área de trabajo de Azure Machine Learning específica en la propia canalización.
- Seleccione Crear.
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):
- Vaya a la pestaña Configuración del repositorio.
- Seleccione Entornos.
- Cree un entorno nuevo.
- Escriba un nombre.
- Seleccione Configure environment (Configurar el entorno).
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.