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

Conheço muitos Data Scientists - e provavelmente eu mesmo sou um deles - que trabalham em máquinas GPU, locais ou virtuais, localizadas na nuvem, seja através de um Jupyter Notebook ou através de algum tipo de ambiente de desenvolvimento Python. Trabalhando por 2 anos como desenvolvedor especialista em AI/ML, fiz exatamente isso, enquanto preparava dados em um servidor ou estação de trabalho regular e executava treinamento em uma máquina virtual com uma GPU no Azure.

Claro, todos nós já ouvimos falar Aprendizado de Máquina do Azure — uma plataforma de nuvem especial para aprendizado de máquina. No entanto, após uma primeira olhada em artigos introdutórios, parece que o Azure ML criará mais problemas para você do que resolverá. Por exemplo, no tutorial mencionado acima, o treinamento no Azure ML é iniciado a partir de um Jupyter Notebook, 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 preenchimento automático, sintaxe realce e outras vantagens de um ambiente de desenvolvimento normal. Por esse motivo, não usamos o Azure ML seriamente em nosso trabalho há muito tempo.

No entanto, descobri recentemente uma maneira de começar a usar o Azure ML de maneira eficaz em meu trabalho! Interessado nos detalhes?

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

O principal segredo é Extensão do Visual Studio Code para Azure ML. Ele permite que você desenvolva scripts de treinamento diretamente no VS Code, aproveitando ao máximo o ambiente - e você pode até executar o script localmente e depois simplesmente enviá-lo para o treinamento em um cluster do Azure ML com apenas alguns cliques. 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 GPU apenas para treinamento de modelo. Ao mesmo tempo, o pool de recursos de treinamento pode se ajustar 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 armazene todos os resultados de aprendizagem em um só lugar, incluindo as métricas alcançadas e os modelos resultantes - não há necessidade de criar algum tipo de sistema ou ordem para armazenar todos os resultados.
  • Neste caso, Várias pessoas podem trabalhar no mesmo projeto - eles podem usar o mesmo cluster de computação, todos os experimentos serão enfileirados e também podem ver os resultados dos experimentos uns dos outros. Um desses cenários é usando o Azure ML no ensino de Deep Learningquando em vez de dar a cada aluno uma máquina virtual com uma GPU, você pode criar um cluster que será usado por todos de forma centralizada. Além disso, uma tabela geral de resultados com precisão de modelo pode servir como um bom elemento competitivo.
  • Com o Azure ML, você pode realizar facilmente uma série de experimentos, por exemplo, para otimização de 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:

Espaço de trabalho do Azure ML e Portal do Azure ML

O Azure ML é organizado em torno do conceito área de trabalho - área de trabalho. Os dados podem ser armazenados no espaço de trabalho, os experimentos são enviados a ele para treinamento, os resultados do treinamento também são armazenados lá - as métricas e modelos resultantes. Você pode ver o que está dentro do espaço de trabalho através Portal do Azure ML - e a partir daí você pode executar muitas operações, desde o carregamento 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 Portal do Azure (Veja. 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

Também associados ao espaço de trabalho estão alguns recursos de computação (Computar). Depois de criar um script para treinar o modelo, você pode enviar experimento para execução para o espaço de trabalho e especifique alvo de cálculo - neste caso, o script será empacotado, executado no ambiente de computação desejado e, a seguir, todos os resultados do experimento serão salvos na área de trabalho para posterior análise e uso.

Roteiro de aprendizagem para MNIST

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

Existe um script em nosso repositório train_local.py, que treinamos o modelo de regressão linear mais simples usando a biblioteca SkLearn. Claro, entendo que esta não é a melhor forma de resolver o problema - usamos como exemplo, como a mais simples.

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

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

Execute o script no Azure ML

Se executarmos o script de treinamento por meio do Azure ML, teremos duas vantagens principais:

  • Executar o treinamento em um recurso de computação arbitrário, que, via de regra, é mais produtivo que o computador local. Ao mesmo tempo, o próprio Azure ML cuidará de compactar nosso script com todos os arquivos do diretório atual em um contêiner docker, instalar as dependências necessárias e enviá-lo para execução.
  • Grave os resultados em um único registro dentro de um espaço de trabalho do Azure ML. Para aproveitar esse recurso, 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 mais astuto do que está escrito acima, mas não muito). Esse script pode ser executado localmente e em um recurso de computação remota.

Para executá-lo no Azure ML a partir do VS Code, você precisa fazer 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 (é isso), clicando no qual você pode entrar pelo navegador. Você também pode clicar Ctrl-Shift-P para chamar a linha de comando do VS Code e digite Login do Azure.

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

Como superar o medo e começar a usar o Azure Machine Learning
Aqui você deve ver diferentes grupos de objetos dentro do espaço de trabalho: recursos de computação, experimentos, etc.

  1. Vá para a lista de arquivos, clique com o botão direito no script train_universal.py e selecione Azure ML: executar como experimento no Azure.

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

  1. Isso será seguido por uma série de diálogos na área de linha de comando do VS Code: confirme a assinatura e o espaço de trabalho do Azure ML que você está usando e selecione Criar nova experiência:

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

  1. Escolha criar um novo recurso de computação Criar nova computação:

    • Computar determina 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 criar um cluster escalável de máquinas STANDARD_DS3_v2, com um número mínimo de máquinas de 0 (e máximo de 1 ou mais, dependendo dos seus apetites). Isso pode ser feito através da interface do VS Code, ou previamente através Portal ML.

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

  2. Em seguida, você precisa selecionar uma configuração Configuração de computação, que define os parâmetros do container criado para treinamento, em especial, todas as bibliotecas necessárias. No nosso caso, como estamos usando o Scikit Learn, selecionamos SkLearn, e então apenas confirme a lista de bibliotecas proposta pressionando Enter. Se você usar quaisquer bibliotecas adicionais, elas devem ser especificadas aqui.

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

  3. Isso abrirá uma janela 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 dentro deste arquivo:

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

  1. Depois de enviar com sucesso um experimento por meio do VS Code, no lado direito da área de notificação, você verá um link para Portal do Azure ML, onde você pode acompanhar o status e os resultados do experimento.

Como superar o medo e começar a usar o Azure Machine Learning
Posteriormente, você sempre pode encontrá-lo na seção Experimentos Portal do Azure ML, ou na seção Aprendizado de Máquina do Azure na lista de experimentos:

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

  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 em um arquivo, você verá um novo item de menu Repita a última execução - basta selecioná-lo e o experimento começará imediatamente:

Como superar o medo e começar a usar o Azure Machine Learning
Você sempre pode encontrar os resultados das métricas de todos os lançamentos no Portal do Azure ML, não há necessidade de anotá-los.

Agora você sabe que a execução de experimentos com o Azure ML é simples e indolor, e você obtém vários benefícios interessantes ao fazer isso.

Mas você também pode ver as desvantagens. Por exemplo, demorou significativamente mais para executar o script. Obviamente, empacotar o script em um contêiner e implantá-lo no servidor leva tempo. Se ao mesmo tempo o cluster foi cortado para um tamanho de 0 nós, levará ainda mais tempo para iniciar a máquina virtual, e tudo isso é muito perceptível quando experimentamos tarefas simples como MNIST, que são resolvidas em poucos segundos . No entanto, na vida real, quando o treinamento dura várias horas, ou mesmo dias ou semanas, esse tempo adicional torna-se insignificante, especialmente no contexto do desempenho muito superior que um cluster de computação pode fornecer.

Qual é o próximo?

Espero que, depois de ler este artigo, você possa usar o Azure ML em seu trabalho para executar scripts, gerenciar recursos de computação e armazenar resultados de forma centralizada. No entanto, o Azure ML pode oferecer ainda mais benefícios!

Dentro do espaço de trabalho, você pode armazenar dados, criando assim um repositório centralizado para todas as suas tarefas, de fácil acesso. Além disso, você pode executar experimentos não do Visual Studio Code, mas usando a API - isso pode ser especialmente útil se você precisar executar a otimização de hiperparâmetros e executar o script várias vezes com parâmetros diferentes. Além disso, uma tecnologia especial é incorporada ao Azure ML Hyperdrive, que permite fazer pesquisas e otimizações mais complicadas de hiperparâmetros. Falarei sobre essas possibilidades em meu próximo post.

Recursos úteis

Para saber mais sobre o Azure ML, você pode achar úteis os seguintes cursos do Microsoft Learn:

Fonte: habr.com

Adicionar um comentário