Configurar ambientes para desenvolvimento e produção

Concluído

Dentro do DevOps, um ambiente refere-se a uma coleção de recursos. Esses recursos são usados para implantar um aplicativo ou com projetos de aprendizado de máquina para implantar um modelo.

Use ambientes para entrega contínua

Quantos ambientes 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 preparação ou pré-produção (pré-produção).

Com a entrega contínua, uma abordagem típica é:

  1. Experimentar o treinamento de modelos no ambiente de desenvolvimento .
  2. Mova o melhor modelo para o ambiente de preparo ou pré-prod para implantar e testar o modelo.
  3. Finalmente, libere o modelo no ambiente de produção para implantá-lo para que os usuários finais possam consumi-lo.

Nota

Neste módulo, nos referimos à interpretação de ambientes DevOps. Observe que o Aprendizado de Máquina do Azure também usa o termo ambientes para descrever uma coleção de pacotes Python necessários para executar um script. Estes dois conceitos de ambientes são independentes um do outro. Saiba mais sobre os ambientes do Azure Machine Learning.

Organizar ambientes do Azure Machine Learning

Quando você implementa MLOps e trabalha 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é-prod e prod. Nem todos na sua equipe devem ter acesso a todos os ambientes. Os cientistas de dados só podem trabalhar no ambiente de desenvolvimento com dados que não sejam de produção, enquanto os engenheiros de aprendizado de máquina trabalham na implantação do modelo no ambiente pré-prod e prod com dados de produção.

Ter ambientes separados facilitará o controle do acesso aos recursos. Cada ambiente pode ser associado a um espaço de trabalho separado do Azure Machine Learning.

Diagram of multiple environments set-up.

No Azure, você usará o controle de acesso baseado em função (RBAC) para dar aos colegas o nível certo de acesso ao subconjunto de recursos com os quais eles precisam trabalhar.

Como alternativa, você pode usar apenas um espaço de trabalho do Azure Machine Learning. Ao usar um espaço de trabalho para desenvolvimento e produção, você terá uma pegada 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.

Gorjeta

Saiba mais sobre as práticas recomendadas 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 Pipeline do Azure ou fluxo de trabalho com Ações do GitHub.

Ambientes de DevOps do Azure

Para trabalhar com ambientes no Azure DevOps, primeiro você precisa criar ambientes. Em seguida, você pode especificar em qual ambiente deseja implantar dentro de um Pipeline do Azure.

  1. No Azure DevOps, expanda o menu Pipelines .
  2. Selecionar Ambientes.
  3. Crie um novo ambiente.
  4. Dê um nome ao seu ambiente.
  5. Escolha Nenhum para recursos. Você direciona um espaço de trabalho específico do Azure Machine Learning no próprio pipeline.
  6. Selecione Criar.

Screenshot of creating new environment in Azure DevOps.

Depois de criar os ambientes no Azure DevOps e ter diferentes espaços de trabalho do Azure Machine Learning associados a cada ambiente, você pode especificar em qual ambiente deseja implantar no 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 para environment no arquivo YAML é , indicando que o modelo é devtreinado no ambiente de desenvolvimento. Por meio da conexão de serviço, você especifica qual espaço de trabalho 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. Em seguida, você pode usar um ambiente em seu fluxo de trabalho.

Para criar um ambiente dentro do repositório GitHub (repo):

  1. Vá para a guia Configurações dentro do seu repositório.
  2. Selecionar Ambientes.
  3. Crie um novo ambiente.
  4. Introduza um nome.
  5. Selecione Configurar ambiente.

Screenshot of creating new environment in GitHub.

Para associar um ambiente a um espaço de trabalho específico do Azure Machine Learning, você pode criar um segredo de ambiente para conceder apenas a esse ambiente acesso a um espaço de trabalho do Azure Machine Learning.

Para usar um ambiente em um fluxo de trabalho, você pode adicionar 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 AZURE_CREDENTIALS segredo contém as informações de conexão com o espaço de trabalho do Azure Machine Learning usado para esse ambiente.