2

A melhor maneira de começar a usar o Azure Machine Learning

361Pontos

hace un año

Curso de Programação Básica
Curso de Programação Básica

Curso de Programação Básica

Aprenda as noções básicas necessárias para começar a programar. Domine JavaScript, entenda HTML e aprenda com algoritmos. Tudo do zero, de forma muito prática você vai descobrir como é fácil começar a desenvolver aplicações web e quais são os conceitos necessários para se tornar uma pessoa capaz de desenvolver softwares. Aprender a programar não é fácil, mas com a Platzi você consegue.

Conheço muitos cientistas de dados, incluindo eu mesmo, que realizam a maior parte do trabalho deles em um computador habilitado para GPU, localmente ou na nuvem, por meio de Jupyter Notebooks ou algum IDE Python. Durante os meus dois anos como engenheiro de software de IA/ML, isso é exatamente o que eu estava fazendo, preparando dados em um computador sem GPU e usando a VM da GPU na nuvem para fazer o treinamento.

Por outro lado, você provavelmente já ouviu falar do Azure Machine Learning, um serviço de plataforma especial para realizar ML. No entanto, se você começar a examinar alguns tutoriais de introdução, terá a impressão de que o uso do Azure ML cria uma grande sobrecarga desnecessária, e o processo não é ideal. Por exemplo, o script de treinamento no exemplo acima é criado como um arquivo de texto em uma célula do Jupyter, sem conclusão de código ou qualquer maneira conveniente de executá-lo localmente ou por depuração. Essa sobrecarga adicional foi o motivo pelo qual não o usamos muito em nossos projetos.

No entanto, recentemente descobri que há uma Extensão do Visual Studio Code para o Azure ML. Com essa extensão, você pode desenvolver seu código de treinamento diretamente no VS Code, executá-lo localmente e, em seguida, enviar o mesmo código para ser treinado em um cluster com apenas alguns cliques de um botão. Fazendo isso, você obtém vários benefícios importantes:

  • Você pode passar a maior parte do tempo localmente em seu computador e usar recursos de GPU avançados somente para treinamento. O cluster de treinamento pode ser redimensionado automaticamente sob demanda e, ao definir a quantidade mínima de computadores como 0, você pode criar a VM sob demanda.
  • Você mantém todos os resultados do seu treinamento, incluindo métricas e modelos criados, em um local central – não há necessidade de manter o registro da precisão para cada experimento manualmente.
  • Se várias pessoas trabalharem no mesmo projeto, elas poderão usar o mesmo cluster (todos os experimentos serão enfileirados) e ver o resultado do experimento umas das outras. Por exemplo, você pode usar o Azure ML em um ambiente de sala de aula e, em vez de fornecer a cada aluno um computador GPU individual, pode criar um cluster que atenderá a todos e promover a competição entre alunos pela precisão do modelo.
  • Se você precisar executar muitos treinamentos, por exemplo, para otimização de hiperparâmetro, tudo isso poderá ser feito com apenas alguns comandos, sem a necessidade de executar uma série de experimentos manualmente.

Espero que você esteja convencido a experimentar o Azure ML por conta própria! Esta é a melhor maneira de começar:

Workspace e Portal do Azure ML

Tudo no Azure ML é organizado em torno de um workspace. Ele é um ponto central para o qual você envia seus experimentos e em que armazena seus dados e modelos resultantes. Também há um Portal do Azure ML Portal especial que fornece interface da Web para seu workspace; de lá, você pode executar muitas operações, monitorar seus experimentos, métricas e assim por diante.

Você pode criar um workspace por meio da interface da Web do portal do Azure (confira instruções passo a passo) ou usando a CLI do Azure (instruções):

    az extension add -n azure-cli-ml
    az group create -n myazml -l northeurope
    az ml workspace create -w myworkspace -g myazml

O workspace contém alguns recursos de computação. Depois que você tiver um script de treinamento, poderá enviar o experimento para o workspace e especificar o destino de computação. Isso garantirá que o experimento seja executado lá e armazenará todos os resultados do experimento no workspace para referência futura.

Script de treinamento do MNIST

Em nosso exemplo, mostraremos como resolver um problema muito tradicional de reconhecimento de dígitos manuscritos usando o conjunto de dados do MNIST. Da mesma maneira, você poderá executar outros scripts de treinamento por conta própria.

Nosso repositório de exemplos contém o script de treinamento simples do MNIST train_local.py. Esse script baixa o conjunto de dados do MNIST do OpenML e, em seguida, usa a LogisticRegression do SKLearn para treinar o modelo e imprimir a precisão resultante:

    mnist = fetch_openml('mnist_784')
    mnist['target'] = np.array([int(x) for x in mnist['target']])
    
    shuffle_index = np.random.permutation(len(mist['data']))
    X, y = mnist['data'][shuffle_index], mnist['target'][shuffle_index]
    
    X_train, X_test, y_train, y_test = 
      train_test_split(X, y, test_size = 0.3, random_state = 42)
    
    lr = LogisticRegression()
    lr.fit(X_train, y_train)
    y_hat = lr.predict(X_test)
    acc = np.average(np.int32(y_hat == y_test))
    
    print('Overall accuracy:', acc)

É claro que estamos usando a Regressão Logística apenas como ilustração, não implicando que é uma boa maneira de resolver o problema…

Como executar o script no Azure ML

Você pode simplesmente executar esse script localmente e ver o resultado. No entanto, se optarmos por usar o Azure ML, ele nos oferecerá dois principais benefícios:

  • Agendamento e execução do treinamento em um recurso de computação centralizado, que é normalmente mais avançado do que um computador local. O Azure ML cuidará do empacotamento do nosso script em um contêiner do docker com a configuração apropriada
  • Registro em log dos resultados de treinamento em um local centralizado dentro do Workspace do Azure ML. Para fazer isso, precisamos adicionar as seguintes linhas de código ao nosso script para registrar as métricas:
from azureml.core.run import Run
    ... 
    try:    
        run = Run.get_submitted_run() run.log('accuracy', acc)
    except:
        pass

A versão modificada do nosso script é chamada de train_universal.py (é apenas um pouco mais complicada do que o código apresentado acima); ela pode ser executada localmente (sem o Azure ML) e no recurso de computação remota.

Para executá-la no Azure ML do VS Code, siga estas etapas:

  1. Verifique se sua Extensão do Azure está conectada à sua conta de nuvem. Selecione o ícone do Azure no menu esquerdo. Se você não estiver conectado, verá uma notificação na parte inferior direita oferecendo que você se conecte (veja a imagem). Clique nela e entre pelo navegador. Você também pode pressionar Ctrl-Shift-P para abrir a paleta de comandos e digitar Entrada no Azure.

  2. Depois disso, você deverá ser capaz de ver seu workspace na seção MACHINE LEARNING da barra do Azure:
    Workspace do Azure ML no VS Code
    Aqui você deverá ver diferentes objetos dentro de seu workspace: recursos de computação, experimentos etc.

  3. Volte para a lista de arquivos, clique com o botão direito do mouse em train_universal.py e selecione Azure ML: executar como experimento no Azure.
    Workspace do Azure ML no VS Code

  4. Confirme sua assinatura do Azure e seu workspace e, em seguida, selecione Criar experimento:
    Workspace do Azure ML no VS Code
    Workspace do Azure ML no VS Code
    Workspace do Azure ML no VS Code

  5. Crie uma Computação e uma configuração de computação:

    • Computação define um recurso de computação usado para treinamento/inferência. Você pode usar seu computador local ou recursos de nuvem. Em nosso caso, usaremos o cluster AmlCompute. Crie um cluster escalonável de computadores STANDARD_DS3_v2, com mín.= 0 e máx.=4 nós. Você pode fazer isso na interface do VS Code ou no Portal do ML. Workspace do Azure ML no VS Code
    • Configuração de Computação define as opções para contêineres que são criados para executar o treinamento em um recurso remoto. Em particular, ela especifica todas as bibliotecas que devem ser instaladas. Em nosso caso, selecione SkLearn e confirme a lista de bibliotecas. Workspace do Azure ML no VS CodeWorkspace do Azure ML no VS Code
  6. Em seguida, você verá uma janela com a descrição JSON do próximo experimento. Você pode editar as informações lá, por exemplo, alterar o experimento ou o nome do cluster e ajustar alguns parâmetros. Quando estiver pronto, clique em Enviar Experimento:
    Workspace do Azure ML no VS Code

  7. Depois que o experimento for enviado com êxito no VS Code, você receberá o link para a página do Portal do Azure ML com o progresso e os resultados do experimento.
    Resultado do experimento do Azure ML no Portal do Azure ML
    Você também pode localizar seu experimento na guia Experimentos no Portal do Azure ML ou na barra do Azure Machine Learning no VS Code:
    Workspace do Azure ML no VS Code

  8. Se desejar executar o experimento novamente após ajustar alguns parâmetros em seu código, esse processo será muito mais rápido e fácil. Ao clicar com o botão direito do mouse no arquivo de treinamento, você verá uma nova opção de menu Repetir última execução; basta selecioná-la e o experimento será enviado imediatamente.
    Workspace do Azure ML no VS Code
    Em seguida, você verá os resultados da métrica de todas as execuções no portal do Azure ML, como na captura de tela acima.

Agora você sabe que o envio de execuções para o Azure ML não é complicado; além disso, você ganha alguns brindes (como armazenar todas as estatísticas de suas execuções, seus modelos etc.) gratuitamente.

Você pode ter percebido que, em nosso caso, o tempo que leva para o script ser executado no cluster é maior do que executar localmente – pode levar até mesmo alguns minutos. É claro que há alguma sobrecarga no empacotamento do script e de todo o ambiente em um contêiner e no envio do script para a nuvem. Se o cluster for definido para reduzir automaticamente para 0 nós, poderá haver alguma sobrecarga adicional devido à inicialização da VM, e tudo isso será perceptível quando você tiver um pequeno script de exemplo que, de outra maneira, levaria alguns segundos para ser executado. No entanto, em cenários da vida real, quando o treinamento leva dezenas de minutos e, às vezes, muito mais, essa sobrecarga se torna quase irrelevante, especialmente considerando os aprimoramentos de velocidade que você pode esperar obter do cluster.

O que vem a seguir?

Agora que você sabe como enviar scripts para execução em um cluster remoto, você pode começar a aproveitar o Azure ML em seu trabalho diário. Com ele, você desenvolve scripts em um PC normal e, em seguida, os agenda para execução no cluster ou na VM da GPU automaticamente, mantendo todos os resultados em um único lugar.

No entanto, há mais vantagens em usar o Azure ML do que apenas essas duas. O Azure ML também pode ser usado para o armazenamento de dados e a manipulação de conjunto de dados, tornando extremamente fácil que diferentes scripts de treinamento acessem os mesmos dados. Além disso, você pode enviar experimentos automaticamente por meio da API, variando os parâmetros-e, portanto, executando uma otimização de hiperparâmetro. Além disso, há uma tecnologia específica criada no Azure ML chamada Hiperdrive, que faz uma pesquisa de hiperparâmetros mais inteligente. Falarei mais sobre esses recursos e tecnologias em minhas próximas postagens.

Recursos úteis

Você pode achar os seguintes cursos do Microsoft Learn úteis, caso queira saber mais:

Curso de Programação Básica
Curso de Programação Básica

Curso de Programação Básica

Aprenda as noções básicas necessárias para começar a programar. Domine JavaScript, entenda HTML e aprenda com algoritmos. Tudo do zero, de forma muito prática você vai descobrir como é fácil começar a desenvolver aplicações web e quais são os conceitos necessários para se tornar uma pessoa capaz de desenvolver softwares. Aprender a programar não é fácil, mas com a Platzi você consegue.
Dmitry
Dmitry
shwars

361Pontos

hace un año

Todas as suas entradas
Escreva o seu comentário
+ 2