Configurar ambientes para desenvolvimento e produção
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 é:
- Experimentar o treinamento de modelos no ambiente de desenvolvimento .
- Mova o melhor modelo para o ambiente de preparo ou pré-prod para implantar e testar o modelo.
- 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 dentro do 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.
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 as 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.
- No Azure DevOps, expanda o menu Pipelines .
- Selecionar Ambientes.
- Crie um novo ambiente.
- Dê um nome ao seu ambiente.
- Escolha Nenhum para recursos. Você direciona um espaço de trabalho específico do Azure Machine Learning no próprio pipeline.
- Selecione Criar.
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 é dev
, indicando que o modelo é treinado 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.
Gorjeta
Saiba mais sobre como criar e direcionar um ambiente com o Azure DevOps.
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):
- Vá para a guia Configurações dentro do seu repositório.
- Selecionar Ambientes.
- Crie um novo ambiente.
- Introduza um nome.
- Selecione Configurar ambiente.
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.
Gorjeta
Saiba mais sobre como criar e usar um ambiente com o GitHub Actions.