Configurar ambientes para desenvolvimento e produção

Concluído

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 é:

  1. Experimentar o treinamento de modelo no ambiente de desenvolvimento.
  2. Mover o melhor modelo para o ambiente de preparo ou pré-produção para implantá-lo e testá-lo.
  3. 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.

Diagrama de vários ambientes configurados.

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.

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.

  1. No Azure DevOps, expanda o menu Pipelines.
  2. Selecione Ambientes.
  3. Crie um Novo ambiente.
  4. Nomeie seu ambiente.
  5. Escolha Nenhum em recursos. Você determina um destino de workspace específico do Azure Machine Learning no próprio pipeline.
  6. Selecione Criar.

Captura de tela da criação de um novo ambiente no Azure DevOps.

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.

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):

  1. Vá para a guia Configurações no repositório.
  2. Selecione Ambientes.
  3. Crie um Novo ambiente.
  4. Insira um nome.
  5. Selecione Configurar ambiente.

Captura de tela da criação de um novo ambiente no GitHub.

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.