Como superar o medo e começar a usar o Azure Machine Learning

Conheço muitos cientistas de dados - e provavelmente me identifico com eles - que trabalham em máquinas com GPUs, locais ou virtuais, localizadas na nuvem, através do Jupyter Notebook ou através de algum ambiente de desenvolvimento Python. Trabalhando por 2 anos como especialista em desenvolvimento de IA / ML, fiz exatamente isso enquanto preparava os dados em um servidor ou estação de trabalho regular e comecei a treinar em uma máquina virtual com uma GPU no Azure.


Obviamente, todos ouvimos falar do Azure Machine Learning - uma plataforma especial em nuvem para aprendizado de máquina. No entanto, após uma primeira olhada nos artigos introdutórios , parece que o Azure ML criará mais problemas para você do que resolverá. Por exemplo, no exemplo de treinamento mencionado acima, o treinamento do Azure ML é iniciado a partir do Notebook Jupyter, enquanto o próprio script de treinamento é proposto para ser criado e editado como um arquivo de texto em uma das células - sem usar o preenchimento automático, o destaque de sintaxe e outras vantagens de um ambiente de desenvolvimento normal. Por esse motivo, não usamos seriamente o Azure ML em nosso trabalho há muito tempo.


No entanto, descobri recentemente uma maneira de começar a usar o Azure ML de maneira eficaz no meu trabalho! Detalhes interessantes?



O principal segredo é a extensão de código do Visual Studio para o Azure ML . Ele permite que você desenvolva scripts de treinamento diretamente no VS Code, usando todas as vantagens do ambiente - você pode até executar o script localmente e, em seguida, pegar e enviar para treinamento no cluster do Azure ML com apenas alguns cliques do mouse. Conveniente, não é?


Ao fazer isso, você obtém os seguintes benefícios do uso do Azure ML:


  • Você pode trabalhar a maior parte do tempo localmente em sua máquina em um IDE conveniente e usar a GPU apenas para treinar o modelo . Ao mesmo tempo, o conjunto de recursos de treinamento pode se adaptar automaticamente à carga necessária e, definindo o número mínimo de nós como 0, você pode iniciar automaticamente a máquina virtual "sob demanda" na presença de tarefas de treinamento.
  • Você pode armazenar todos os resultados de aprendizagem em um único local , incluindo as métricas alcançadas e os modelos resultantes - não há necessidade de inventar nenhum sistema ou procedimento para armazenar todos os resultados.
  • Ao mesmo tempo, várias pessoas podem trabalhar em um projeto - elas podem usar o mesmo cluster de computação, todos os experimentos serão alinhados nesse caso e também podem ver os resultados dos experimentos uns dos outros. Um desses cenários é o uso do Azure ML no ensino do Deep Learning . Quando, em vez de fornecer a cada aluno uma máquina virtual com uma GPU, você pode criar um cluster que todos usarão centralmente. Além disso, uma tabela geral de resultados com precisão do modelo pode servir como um bom elemento competitivo.
  • Usando o Azure ML, você pode facilmente conduzir uma série de experimentos, por exemplo, para otimizar hiperparâmetros - isso pode ser feito com algumas linhas de código, não há necessidade de realizar uma série de experimentos manualmente.

Espero ter convencido você a experimentar o Azure ML! Veja como começar:



Área de Trabalho do Azure ML e Portal do Azure ML


O Azure ML é organizado em torno do conceito da área de trabalho - Área de Trabalho. Os dados podem ser armazenados no espaço de trabalho, as experiências são enviadas para treinamento, os resultados do aprendizado são armazenados no mesmo local - as métricas e os modelos obtidos. Você pode ver o que está dentro da área de trabalho por meio do portal do Azure ML - e a partir daí você pode executar muitas operações, desde o download de dados até o monitoramento de experimentos e a implantação de modelos.


Você pode criar um espaço de trabalho por meio da interface da web do Portal do Azure (consulte as instruções passo a passo ) ou usando a linha de comando da 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 

Existem também alguns recursos de computação associados à área de trabalho. Depois de criar um script para treinar o modelo, você pode enviar a experiência para a área de trabalho e especificar o destino da computação - isso compacta o script, executa-o no ambiente de computação desejado e, em seguida, todos os resultados da experiência são salvos na área de trabalho para análise e uso adicionais.


Script de treinamento para MNIST


Considere o problema clássico de reconhecimento de escrita manual usando o conjunto de dados MNIST. Da mesma forma, no futuro, você poderá executar qualquer um dos seus scripts de treinamento.


Nosso repositório possui um script train_local.py que train_local.py modelo de regressão linear mais simples usando a biblioteca SkLearn. Obviamente, entendo que essa não é a melhor maneira de resolver o problema - nós a usamos como exemplo, como a mais fácil.


O script primeiro baixa os dados MNIST do OpenML e, em seguida, usa a classe LogisticRegression para treinar o modelo e, em seguida, imprime 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) 

Você pode executar o script no seu computador e, em alguns segundos, obterá o resultado.


Execute o script no Azure ML


Se executarmos o script para treinamento no Azure ML, teremos duas vantagens principais:


  • Iniciar o treinamento em um recurso de computação arbitrário, que, em regra, é mais produtivo que um computador local. Ao mesmo tempo, o Azure ML cuidará de compactar nosso script com todos os arquivos do diretório atual no contêiner do docker, instalando as dependências necessárias e enviando-o para execução.
  • Registre os resultados em um único registro no espaço de trabalho do Azure ML. Para aproveitar essa oportunidade, precisamos adicionar algumas linhas de código ao nosso script para registrar a precisão resultante:

 from azureml.core.run import Run ... try: run = Run.get_submitted_run() run.log('accuracy', acc) except: pass 

A versão correspondente do script é chamada train_universal.py (é um pouco train_universal.py que a escrita acima, mas não muito). Este script pode ser executado localmente e em um recurso de computação remota.


Para executá-lo no Azure ML a partir do VS Code, faça o seguinte:


  1. Verifique se a extensão do Azure está conectada à sua assinatura. Selecione o ícone do Azure no menu à esquerda. Se você não estiver conectado, uma notificação aparecerá no canto inferior direito ( este ), clicando no qual você pode entrar pelo navegador. Você também pode pressionar Ctrl-Shift-P para chamar a linha de comando do Código VS e digitar o Azure Sign In .


  2. Depois disso, na seção Azure (ícone à esquerda), localize a seção APRENDIZAGEM DA MÁQUINA :



Área de trabalho do Azure ML no código VS
Aqui você deve ver diferentes grupos de objetos dentro da área de trabalho: recursos de computação, experimentos, etc.


  1. Vá para a lista de arquivos, clique com o botão direito do mouse no script train_universal.py e selecione Azure ML: Executar como experiência no Azure .

Área de trabalho do Azure ML no código VS


  1. Isso será seguido por uma série de caixas de diálogo na área de linha de comando do Código VS: confirme a assinatura usada e o espaço de trabalho do ML do Azure e também selecione Criar nova experiência :

Área de trabalho do Azure ML no código VS
Área de trabalho do Azure ML no código VS
Área de trabalho do Azure ML no código VS


  1. Selecione Criar novo cálculo :


    • Computação define o recurso de computação no qual o treinamento será realizado. Você pode escolher um computador local ou um cluster de nuvem AmlCompute. Eu recomendo a criação de um cluster escalável de máquinas STANDARD_DS3_v2 , com um número mínimo de máquinas 0 (e o máximo pode ser 1 ou mais, dependendo do seu apetite). Isso pode ser feito através da interface VS Code ou anteriormente através do ML Portal .

    Área de trabalho do Azure ML no código VS


  2. Em seguida, você precisa selecionar a configuração de Configuração da computação , que determina os parâmetros do contêiner criado para o treinamento, em particular, todas as bibliotecas necessárias. No nosso caso, como usamos o Scikit Learn, selecione SkLearn e simplesmente confirme a lista proposta de bibliotecas com Enter. Se você usar bibliotecas adicionais, especifique-as aqui.


    Área de trabalho do Azure ML no código VS
    Área de trabalho do Azure ML no código VS


  3. Depois disso, uma janela é aberta com um arquivo JSON descrevendo o experimento. Nele, você pode corrigir alguns parâmetros - por exemplo, o nome do experimento. Depois disso, clique no link Enviar experiência diretamente dentro deste arquivo:



Área de trabalho do Azure ML no código VS


  1. Depois de enviar a experiência com sucesso por meio do VS Code, à direita na área de notificação, você verá um link para o Portal ML do Azure , onde poderá acompanhar o status e os resultados da experiência.

Resultado da Experiência do Azure ML no Portal do Azure ML
Posteriormente, você sempre pode encontrá-lo na seção Experimental Azure ML Portal ou na seção Aprendizado de Máquina do Azure na lista de experiências:


Área de trabalho do Azure ML no código VS


  1. Se, depois disso, você fez algumas correções no código ou alterou os parâmetros, reiniciar o experimento será muito mais rápido e fácil. Ao clicar com o botão direito do mouse no arquivo, você verá um novo item de menu Repetir última execução - basta selecioná-lo e o experimento será iniciado imediatamente:

Área de trabalho do Azure ML no código VS
Você sempre pode encontrar os resultados das métricas de todos os lançamentos no Portal ML do Azure, não há necessidade de registrá-los.


Agora você sabe que a execução de experiências com o Azure ML é fácil e indolor, e você obtém vários benefícios interessantes.


Mas você pode ter notado falhas. Por exemplo, demorou significativamente mais para executar o script. Obviamente, leva tempo para compactar o script em um contêiner e implantá-lo no servidor. Se, ao mesmo tempo, o cluster foi reduzido para um tamanho de 0 nós, levará ainda mais tempo para iniciar a máquina virtual, e tudo isso é notável quando experimentamos tarefas simples como MNIST, que são resolvidas em alguns segundos. No entanto, na vida real, quando o treinamento dura várias horas, ou mesmo dias ou semanas, esse tempo extra se torna insignificante, especialmente no contexto do desempenho muito mais alto que um cluster de computação pode oferecer.


O que vem a seguir?


Espero que, depois de ler este artigo, você consiga e use o Azure ML em seu trabalho para executar scripts, gerenciar recursos de computação e armazenar centralmente os resultados. No entanto, o Azure ML pode fornecer ainda mais benefícios!


Dentro da área de trabalho, você pode armazenar dados, criando um repositório centralizado para todas as suas tarefas, de fácil acesso. Além disso, você pode executar experimentos não usando o Visual Studio Code, mas usando a API - isso pode ser especialmente útil se você precisar otimizar hiperparâmetros e executar o script várias vezes com parâmetros diferentes. Além disso, no Azure ML, a tecnologia Hyperdrive especial é incorporada , o que permite fazer uma pesquisa e otimização mais inteligentes dos hiperparâmetros. Vou falar sobre esses recursos no meu próximo artigo.


Recursos úteis


Para um estudo mais aprofundado do Azure ML, você pode achar úteis os seguintes cursos do Microsoft Learn:


Source: https://habr.com/ru/post/pt485338/


All Articles