Partilhar via


Tutorial: Desenvolvimento de modelos em uma estação de trabalho na nuvem

Saiba como desenvolver um script de treinamento com um bloco de anotações em uma estação de trabalho na nuvem do Azure Machine Learning. Este tutorial aborda as noções básicas que você precisa para começar:

  • Instale e configure a estação de trabalho na nuvem. Sua estação de trabalho na nuvem é alimentada por uma instância de computação do Azure Machine Learning, que é pré-configurada com ambientes para dar suporte às suas várias necessidades de desenvolvimento de modelo.
  • Use ambientes de desenvolvimento baseados em nuvem.
  • Use o MLflow para acompanhar as métricas do seu modelo, tudo a partir de um bloco de anotações.

Pré-requisitos

Para usar o Azure Machine Learning, você precisa de um espaço de trabalho. Se você não tiver um, conclua Criar recursos necessários para começar a criar um espaço de trabalho e saiba mais sobre como usá-lo.

Importante

Se seu espaço de trabalho do Azure Machine Learning estiver configurado com uma rede virtual gerenciada, talvez seja necessário adicionar regras de saída para permitir o acesso aos repositórios públicos de pacotes Python. Para obter mais informações, consulte Cenário: acessar pacotes públicos de aprendizado de máquina.

Comece com a computação

A seção Computação em seu espaço de trabalho permite que você crie recursos de computação. Uma instância de computação é uma estação de trabalho baseada em nuvem totalmente gerenciada pelo Azure Machine Learning. Esta série de tutoriais usa uma instância de computação. Você também pode usá-lo para executar seu próprio código e para desenvolver e testar modelos.

  1. Entre no estúdio do Azure Machine Learning.
  2. Selecione seu espaço de trabalho se ele ainda não estiver aberto.
  3. Na navegação à esquerda, selecione Computar.
  4. Se você não tiver uma instância de computação, verá Novo no meio da tela. Selecione Novo e preencha o formulário. Você pode usar todos os padrões.
  5. Se você tiver uma instância de computação, selecione-a na lista. Se estiver parado, selecione Iniciar.

Abrir código do Visual Studio (VS Code)

Depois de ter uma instância de computação em execução, você pode acessá-la de várias maneiras. Este tutorial mostra o uso da instância de computação do VS Code. O VS Code oferece um ambiente de desenvolvimento integrado (IDE) completo com o poder dos recursos do Azure Machine Learning.

Na lista de instâncias de computação, selecione o link VS Code (Web) ou VS Code (Desktop) para a instância de computação que você deseja usar. Se escolher VS Code (Ambiente de trabalho), poderá ver um pop-up a perguntar se pretende abrir a aplicação.

A captura de tela mostra links para iniciar o VS Code (Web) ou (Desktop).

Esta instância do VS Code é anexada à instância de computação e ao sistema de arquivos do espaço de trabalho. Mesmo que o abra no ambiente de trabalho, os ficheiros que vê são ficheiros na sua área de trabalho.

Configurar um novo ambiente para prototipagem (opcional)

Para que seu script seja executado, você precisa estar trabalhando em um ambiente configurado com as dependências e bibliotecas que o código espera. Esta seção ajuda você a criar um ambiente adaptado ao seu código. Para criar o novo kernel Jupyter ao qual seu notebook se conecta, você usará um arquivo YAML que define as dependências.

  • Carregue um ficheiro.

    Os arquivos carregados são armazenados em um compartilhamento de arquivos do Azure e esses arquivos são montados em cada instância de computação e compartilhados no espaço de trabalho.

    1. Transfira este ficheiro de ambiente conda workstation_env.yml para o seu computador utilizando o botão Transferir ficheiro raw no canto superior direito.

    2. Arraste o ficheiro do computador para a janela VS Code. O ficheiro é carregado para a sua área de trabalho.

    3. Mova o ficheiro para a pasta do seu nome de utilizador.

      A captura de tela mostra como carregar um arquivo.

    4. Selecione este arquivo para visualizá-lo e veja quais dependências ele especifica. Você verá conteúdos como este:

    name: workstation_env
    # This file serves as an example - you can update packages or versions to fit your use case
    dependencies:
      - python=3.8
      - pip=21.2.4
      - scikit-learn=0.24.2
      - scipy=1.7.1
      - pandas>=1.1,<1.2
      - pip:
        - mlflow-skinny 
        - azureml-mlflow
        - psutil>=5.8,<5.9
        - ipykernel~=6.0
        - matplotlib
    
  • Crie um kernel.

    Agora use o terminal para criar um novo kernel Jupyter, baseado no arquivo workstation_env.yml .

    1. Na barra de menu superior, selecione Terminal > New Terminal.

      A captura de tela mostra a ferramenta de terminal aberto na barra de ferramentas do bloco de anotações.

    2. Veja seus ambientes de conda atuais. O ambiente ativo está marcado com um *.

      conda env list
      
    3. cd para a pasta onde carregou o ficheiro workstation_env.yml . Por exemplo, se você o carregou para sua pasta de usuário:

      cd Users/myusername
      
    4. Certifique-se de que o workstation_env.yml está nesta pasta.

      ls
      
    5. Crie o ambiente com base no arquivo conda fornecido. Leva alguns minutos para construir esse ambiente.

      conda env create -f workstation_env.yml
      
    6. Ative o novo ambiente.

      conda activate workstation_env
      

      Nota

      Se vir um CommandNotFoundError, siga as instruções para executar conda init bash, feche o terminal e abra um novo. Em seguida, tente novamente o conda activate workstation_env comando.

    7. Valide se o ambiente correto está ativo, novamente procurando o ambiente marcado com um *.

      conda env list
      
    8. Crie um novo kernel Jupyter com base no seu ambiente ativo.

      python -m ipykernel install --user --name workstation_env --display-name "Tutorial Workstation Env" 
      
    9. Feche a janela do terminal.

Agora você tem um novo kernel. Em seguida, você abrirá um bloco de anotações e usará este kernel.

Criar um bloco de notas

  1. Na barra de menu superior, selecione Arquivo > Novo Arquivo.
  2. Nomeie seu novo arquivo develop-tutorial.ipynb (ou digite seu nome preferido). Certifique-se de usar a extensão .ipynb .

Definir o kernel

  1. No canto superior direito, selecione Selecionar kernel.
  2. Selecione Instância de computação do Azure ML (computeinstance-name).
  3. Selecione o kernel que você criou, Tutorial Workstation Env. Se não a vir, selecione a ferramenta Atualizar no canto superior direito.

Desenvolver um script de treinamento

Nesta seção, você desenvolve um script de treinamento Python que prevê pagamentos padrão de cartão de crédito, usando os conjuntos de dados de teste e treinamento preparados do conjunto de dados UCI.

Esse código usa sklearn para treinamento e MLflow para registrar as métricas.

  1. Comece com o código que importa os pacotes e bibliotecas que você usará no script de treinamento.

    import os
    import argparse
    import pandas as pd
    import mlflow
    import mlflow.sklearn
    from sklearn.ensemble import GradientBoostingClassifier
    from sklearn.metrics import classification_report
    from sklearn.model_selection import train_test_split
  2. Em seguida, carregue e processe os dados para este experimento. Neste tutorial, você lê os dados de um arquivo na internet.

    # load the data
    credit_df = pd.read_csv(
        "https://azuremlexamples.blob.core.windows.net/datasets/credit_card/default_of_credit_card_clients.csv",
        header=1,
        index_col=0,
    )
    
    train_df, test_df = train_test_split(
        credit_df,
        test_size=0.25,
    )
  3. Prepare os dados para o treinamento:

    # Extracting the label column
    y_train = train_df.pop("default payment next month")
    
    # convert the dataframe values to array
    X_train = train_df.values
    
    # Extracting the label column
    y_test = test_df.pop("default payment next month")
    
    # convert the dataframe values to array
    X_test = test_df.values
  4. Adicione código para iniciar o registro automático com MLflowo , para que você possa acompanhar as métricas e os resultados. Com a natureza iterativa do desenvolvimento de modelos, MLflow ajuda a registrar parâmetros e resultados do modelo. Consulte essas execuções para comparar e entender o desempenho do seu modelo. Os logs também fornecem contexto para quando você estiver pronto para passar da fase de desenvolvimento para a fase de treinamento de seus fluxos de trabalho no Azure Machine Learning.

    # set name for logging
    mlflow.set_experiment("Develop on cloud tutorial")
    # enable autologging with MLflow
    mlflow.sklearn.autolog()
  5. Treine um modelo.

    # Train Gradient Boosting Classifier
    print(f"Training with data of shape {X_train.shape}")
    
    mlflow.start_run()
    clf = GradientBoostingClassifier(n_estimators=100, learning_rate=0.1)
    clf.fit(X_train, y_train)
    
    y_pred = clf.predict(X_test)
    
    print(classification_report(y_test, y_pred))
    # Stop logging for this model
    mlflow.end_run()

    Nota

    Você pode ignorar os avisos mlflow. Você ainda terá todos os resultados que precisa rastreados.

Iterar

Agora que você tem resultados de modelo, você pode querer alterar algo e tentar novamente. Por exemplo, tente uma técnica de classificador diferente:

# Train  AdaBoost Classifier
from sklearn.ensemble import AdaBoostClassifier

print(f"Training with data of shape {X_train.shape}")

mlflow.start_run()
ada = AdaBoostClassifier()

ada.fit(X_train, y_train)

y_pred = ada.predict(X_test)

print(classification_report(y_test, y_pred))
# Stop logging for this model
mlflow.end_run()

Nota

Você pode ignorar os avisos mlflow. Você ainda terá todos os resultados que precisa rastreados.

Examinar os resultados

Agora que você já experimentou dois modelos diferentes, use os resultados rastreados para MLFfow decidir qual modelo é melhor. Você pode fazer referência a métricas como precisão ou outros indicadores que são mais importantes para seus cenários. Você pode mergulhar nesses resultados com mais detalhes observando os empregos criados pela MLflow.

  1. Retorne ao seu espaço de trabalho no estúdio do Azure Machine Learning.

  2. Na navegação à esquerda, selecione Trabalhos.

    A captura de tela mostra como selecionar Trabalhos na navegação.

  3. Selecione o link para o tutorial Desenvolver na nuvem.

  4. Há dois trabalhos diferentes mostrados, um para cada um dos modelos que você tentou. Esses nomes são gerados automaticamente. Ao passar o mouse sobre um nome, use a ferramenta de lápis ao lado do nome se quiser renomeá-lo.

  5. Selecione o link para o primeiro trabalho. O nome aparece na parte superior. Você também pode renomeá-lo aqui com a ferramenta lápis.

  6. A página mostra detalhes do trabalho, como propriedades, saídas, tags e parâmetros. Em Tags, você verá o estimator_name, que descreve o tipo de modelo.

  7. Selecione a guia Métricas para exibir as métricas que foram registradas pelo MLflow. (Espere que seus resultados sejam diferentes, pois você tem um conjunto de treinamento diferente.)

    A captura de tela mostra as métricas de um trabalho.

  8. Selecione a guia Imagens para visualizar as imagens geradas pelo MLflow.

    A captura de tela mostra imagens para um trabalho.

  9. Volte e revise as métricas e imagens do outro modelo.

Criar um script Python

Agora crie um script Python a partir do seu bloco de anotações para treinamento de modelos.

  1. Na janela VS Code, clique com o botão direito do mouse no nome do arquivo do bloco de anotações e selecione Importar bloco de anotações para script.

  2. Use o menu Arquivo > Salvar para salvar esse novo arquivo de script. Chamem-lhe train.py.

  3. Examine este arquivo e exclua o código que você não deseja no script de treinamento. Por exemplo, mantenha o código do modelo que você deseja usar e exclua o código do modelo que você não deseja.

    • Certifique-se de manter o código que inicia o registro automático (mlflow.sklearn.autolog()).
    • Quando você executa o script Python interativamente (como está fazendo aqui), você pode manter a linha que define o nome do experimento (mlflow.set_experiment("Develop on cloud tutorial")). Ou até mesmo dar-lhe um nome diferente para vê-lo como uma entrada diferente na seção Empregos . Mas quando você prepara o script para um trabalho de treinamento, essa linha não se aplica e deve ser omitida - a definição de trabalho inclui o nome do experimento.
    • Quando você treina um único modelo, as linhas para iniciar e terminar uma corrida (mlflow.start_run() e mlflow.end_run()) também não são necessárias (elas não terão efeito), mas podem ser deixadas se desejar.
  4. Quando terminar as edições, salve o arquivo.

Agora você tem um script Python para usar para treinar seu modelo preferido.

Execute o script Python

Por enquanto, você está executando esse código em sua instância de computação, que é seu ambiente de desenvolvimento do Azure Machine Learning. Tutorial: Treinar um modelo mostra como executar um script de treinamento de forma mais escalável em recursos de computação mais poderosos.

  1. Selecione o ambiente que você criou anteriormente neste tutorial como sua versão Python (workstations_env). No canto inferior direito do bloco de anotações, você verá o nome do ambiente. Selecione-o e, em seguida, selecione o ambiente no meio da tela.

    A captura de tela mostra a seleção do novo ambiente.

  2. Agora execute o script Python. Use a ferramenta Executar arquivo Python no canto superior direito.

    A captura de tela mostra a ferramenta Executar arquivo Python no canto superior direito da tela.

Nota

Você pode ignorar os avisos mlflow. Você ainda obterá todas as métricas e imagens do registro automático.

Examinar resultados de script

Volte para Trabalhos em seu espaço de trabalho no estúdio de Aprendizado de Máquina do Azure para ver os resultados do seu script de treinamento. Tenha em mente que os dados de treinamento mudam a cada divisão, portanto, os resultados também diferem entre as corridas.

Clean up resources (Limpar recursos)

Se você planeja continuar agora para outros tutoriais, pule para Próximas etapas.

Parar instância de computação

Se você não vai usá-lo agora, pare a instância de computação:

  1. No estúdio, na área de navegação esquerda, selecione Computar.
  2. Nas guias superiores, selecione Instâncias de computação
  3. Selecione a instância de computação na lista.
  4. Na barra de ferramentas superior, selecione Parar.

Eliminar todos os recursos

Importante

Os recursos que você criou podem ser usados como pré-requisitos para outros tutoriais e artigos de instruções do Azure Machine Learning.

Se você não planeja usar nenhum dos recursos que criou, exclua-os para não incorrer em cobranças:

  1. No portal do Azure, na caixa de pesquisa, insira Grupos de recursos e selecione-o nos resultados.

  2. Na lista, selecione o grupo de recursos que você criou.

  3. Na página Visão geral, selecione Excluir grupo de recursos.

    Captura de ecrã das seleções para eliminar um grupo de recursos no portal do Azure.

  4. Insira o nome do grupo de recursos. Em seguida, selecione Eliminar.

Próximos passos

Saiba mais sobre:

Este tutorial mostrou as primeiras etapas da criação de um modelo, prototipando na mesma máquina onde o código reside. Para seu treinamento de produção, saiba como usar esse script de treinamento em recursos de computação remota mais poderosos: