Configurar ambientes para desenvolvimento e produção
No DevOps, um ambiente constitui uma coleção de recursos. Esses recursos são usados para implantar um aplicativo ou, em projetos de aprendizado de máquina, implantar um modelo.
Use os ambientes para entrega contínua
A quantidade de ambientes com os quais você trabalha depende da sua organização. Comumente, existem pelo menos dois ambientes: desenvolvimento ou dev e produção ou prod. Além disso, você pode adicionar ambientes intermediários, como um ambiente de preparo ou pré-produção (pré-produção).
Com a entrega contínua, uma abordagem típica é:
- Experimentar o treinamento de modelo no ambiente de desenvolvimento.
- Mover o melhor modelo para o ambiente de preparo ou pré-produção para implantá-lo e testá-lo.
- Por fim, liberar o modelo para o ambiente de produção para implantá-lo para consumo dos usuários finais.
Observação
Neste módulo, nos referimos à interpretação de ambientes DevOps. Observe que o Azure Machine Learning também usa o termo ambientes para descrever uma coleção de pacotes do Python necessários para executar um script. Esses dois conceitos de ambientes são independentes um do outro. Saiba mais sobre os Ambientes do Azure Machine Learning.
Organizar workspaces do Azure Machine Learning
Ao implementar o MLOps e trabalhar com modelos de aprendizado de máquina em grande escala, é uma prática recomendada trabalhar com ambientes separados para diferentes estágios.
A criação de imagens de sua equipe usa um ambiente de desenvolvimento, pré-produção e produção. Nem todos em sua equipe devem ter acesso a todos os ambientes. Os cientistas de dados só trabalham no ambiente de desenvolvimento com dados de não produção, enquanto os engenheiros de aprendizado de máquina trabalham na implantação do modelo no ambiente de pré-produção e produção com dados de produção.
Ter ambientes separados facilitará o controle do acesso aos recursos. Cada ambiente pode ser associado a um workspace separado do Azure Machine Learning.
No Azure, você usará o RBAC (controle de acesso baseado em função) para fornecer aos colegas o nível certo de acesso ao subconjunto de recursos com os quais precisam trabalhar.
Como alternativa, você pode usar apenas um workspace do Azure Machine Learning. Ao usar um workspace para desenvolvimento e produção, você terá um espaço menor do Azure e menos sobrecarga de gerenciamento. No entanto, o RBAC se aplicará tanto ao dev quanto ao prod, o que pode significar que você está dando às pessoas muito pouco ou muito acesso aos recursos.
Dica
Saiba mais sobre as Melhores práticas para organizar os recursos do Azure Machine Learning.
Para trabalhar com ambientes para diferentes estágios do desenvolvimento do modelo, você pode direcionar um ambiente ao executar um Azure Pipeline ou fluxo de trabalho com GitHub Actions.
Ambientes do Azure DevOps
Para trabalhar com ambientes no Azure DevOps, primeiro você precisa criar os ambientes. Então você poderá especificar em qual deles deseja implantar dentro de um Azure Pipeline.
- No Azure DevOps, expanda o menu Pipelines.
- Selecione Ambientes.
- Crie um Novo ambiente.
- Nomeie seu ambiente.
- Escolha Nenhum em recursos. Você determina um destino de workspace específico do Azure Machine Learning no próprio pipeline.
- Selecione Criar.
Depois de criar os ambientes no Azure DevOps e ter diferentes workspaces do Azure Machine Learning associados a cada ambiente, você pode especificar em qual deles deseja implantar dentro do arquivo YAML do 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'
O valor de environment
no arquivo YAML é dev
, indicando que o modelo é treinado no ambiente de desenvolvimento. Por meio da conexão de serviço, você especifica qual workspace do Azure Machine Learning deseja usar para treinamento de modelo.
Dica
Saiba mais sobre Como criar e definir o destino de um ambiente com o Azure DevOps.
Ambientes GitHub
Para usar ambientes com o GitHub Actions, primeiro você precisa criar um ambiente. Então você poderá usar um ambiente em seu fluxo de trabalho.
Para criar um ambiente em seu repositório do GitHub (repositório):
- Vá para a guia Configurações no repositório.
- Selecione Ambientes.
- Crie um Novo ambiente.
- Insira um nome.
- Selecione Configurar ambiente.
Para associar um ambiente a um workspace do Azure Machine Learning específico, você pode criar um segredo de ambiente para fornecer apenas a ele acesso a um workspace do Azure Machine Learning.
Para usar um ambiente em um fluxo de trabalho, você pode adicionar em qual ambiente deseja implantar incluindo-o no arquivo 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
No exemplo, o segredo AZURE_CREDENTIALS
contém as informações de conexão com o workspace do Azure Machine Learning usado para esse ambiente.
Dica
Saiba mais sobre Como criar e usar um ambiente com o GitHub Actions.