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

Conheço muitos cientistas de dados — e talvez eu mesmo faça parte desse grupo — que trabalham em máquinas com GPU, locais ou virtuais, no cloud, seja através do Jupyter Notebook ou de um ambiente de desenvolvimento Python. Trabalhando como especialista desenvolvedor em AI/ML por 2 anos, era assim que eu fazia, preparando os dados em um servidor comum ou estação de trabalho, e rodando o treinamento em uma máquina virtual com GPU no Azure.

Claro, todos nós já ouvimos falar de Azure Machine Learning — uma plataforma de nuvem dedicada para aprendizado de máquina. Contudo, após o primeiro olhar em artigos introdutórios, parece que o Azure ML vai gerar mais problemas do que soluções. Por exemplo, no exemplo de treinamento mencionado, o aprendizado no Azure ML é iniciado a partir do Jupyter Notebook, sendo que o próprio script de treinamento é sugerido para ser criado e editado como um arquivo de texto em uma das células — sem utilizar autocompletar, destaque de sintaxe e outras vantagens de um ambiente de desenvolvimento adequado. Por essa razão, não utilizamos o Azure ML seriamente em nosso trabalho por um longo tempo.

No entanto, recentemente descobri uma forma de começar a usar o Azure ML de forma eficaz em meu trabalho! Você está curioso pelos detalhes?

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

O segredo principal é a extensão do Visual Studio Code para Azure ML. Ela permite que você desenvolva scripts de treinamento diretamente no VS Code, aproveitando todas as vantagens do ambiente — e você pode até mesmo rodar o script localmente, e depois apenas enviá-lo para treinamento em um cluster Azure ML com alguns cliques do mouse. Conveniente, não é?

Com isso, você obtém as seguintes vantagens ao usar o Azure ML:

  • Você pode trabalhar a maior parte do tempo localmente em sua máquina em um IDE confortável, e usar GPU apenas para o treinamento do modelo. O pool de recursos de treinamento pode se ajustar automaticamente à carga necessária, e ao definir um número mínimo de nós como 0, você pode iniciar uma máquina virtual "sob demanda" ao ter tarefas de treinamento.
  • Você pode armazenar todos os resultados do treinamento em um só lugar, incluindo métricas alcançadas e modelos gerados — não há necessidade de inventar um sistema ou ordem para armazenar todos os resultados.
  • Ao mesmo tempo, várias pessoas podem trabalhar em um mesmo projeto — eles podem usar o mesmo cluster computacional, todos os experimentos serão enfileirados, e também poderão ver os resultados dos experimentos uns dos outros. Um desses cenários é o uso do Azure ML no ensino de Deep Learning, onde, em vez de fornecer a cada aluno uma máquina virtual com GPU, você pode criar um único cluster que será utilizado de forma centralizada. Além disso, uma tabela geral de resultados com a precisão do modelo pode servir como um bom elemento competitivo.
  • Com o Azure ML, é fácil conduzir séries de experimentos, como por exemplo a otimização de hiperparâmetros — isso pode ser feito com algumas linhas de código, sem a necessidade de realizar séries de experimentos manualmente.

Espero ter convencido você a experimentar o Azure ML! Aqui está como você pode começar:

Azure ML Workspace e Azure ML Portal

O Azure ML é organizado em torno do conceito de área de trabalho — Workspace. Na área de trabalho, podem ser armazenados dados, experimentos são enviados para treinamento e os resultados do treinamento — métricas e modelos obtidos. Você pode ver o que está dentro da área de trabalho através do portal do Azure ML — e de lá você pode realizar muitas operações, desde o upload de dados até o monitoramento de experimentos e o deployment de modelos.

Você pode criar uma área de trabalho através da interface web Azure Portal (veja instruções passo a passo), ou usando a linha de comando do Azure CLI (documentação):

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

A área de trabalho está também relacionada a alguns recursos computacionais (Compute). Criando um script para treinar o modelo, você pode enviar o experimento para execução na área de trabalho, e especificar compute target — assim, o script será empacotado, executado no ambiente computacional adequado, e todos os resultados do experimento serão salvos na área de trabalho para análise e uso posterior.

Script de treinamento para MNIST

Consideremos a clássica tarefa de reconhecimento de dígitos manuscritos usando o conjunto de dados MNIST. Da mesma forma, no futuro você poderá executar quaisquer scripts de treinamento que desejar.

Em nosso repositório, há um script train_local.py, que treina um modelo simples de regressão linear usando a biblioteca SkLearn. Claro, eu entendo que essa não é a melhor maneira de resolver o problema — usamos isso como exemplo, como o mais simples.

O script primeiro baixa os dados MNIST do OpenML e depois utiliza a classe LogisticRegression para treinar o modelo, e então imprime a precisão obtida:

mnist = fetch_openml('mnist_784')
mnist['target'] = np.array([int(x) for x in mnist['target']])

shuffle_index = np.random.permutation(len(mnist['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('A precisão geral:', acc)

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

Executando o script no Azure ML

Se por acaso estivermos executando o script de treinamento através do Azure ML, teremos duas principais vantagens:

  • Executar o treinamento em um recurso computacional arbitrário, que geralmente é mais poderoso do que um computador local. Durante isso, o Azure ML mesmo cuidará para empacotar 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.
  • Registrar os resultados em um único repositório dentro do espaço de trabalho do Azure ML. Para aproveitar essa capacidade, 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 de train_universal.py (ela é um pouco mais elaborada do que a mencionada acima, mas não muito). Este script pode ser executado tanto localmente quanto em um recurso computacional remoto.

Para executá-lo no Azure ML a partir do VS Code, você deve fazer o seguinte:

  1. Certifique-se de que 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 (algo assim), ao clicar nela você poderá entrar através do navegador. Você também pode pressionar Ctrl-Shift-P para abrir o terminal do VS Code, e digitar Azure Sign In.

  2. Depois disso, na seção do Azure (ícone à esquerda) encontre a seção MACHINE LEARNING:

Como superar o medo e começar a usar o Azure Machine Learning
Aqui você deve ver diferentes grupos de objetos dentro da área de trabalho: recursos computacionais, experimentos, etc.

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

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

  1. Após isso, uma série de diálogos na área de comando do VS Code seguirá: confirme a assinatura e a área de trabalho do Azure ML em uso, e escolha Criar novo experimento:

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 novo recurso computacional Criar Novo Computador:

    • Compute define o recurso computacional no qual o treinamento ocorrerá. Você pode escolher um computador local ou um cluster em nuvem AmlCompute. Recomendo criar um cluster de máquinas escalável STANDARD_DS3_v2, com um número mínimo de máquinas 0 (e o máximo pode ser 1 ou mais, dependendo das suas necessidades). Isso pode ser feito através da interface do VS Code, ou previamente através do ML Portal.

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

  2. Em seguida, é necessário escolher a configuração Configuração de 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 estamos usando Scikit Learn, escolhemos SkLearn, e então simplesmente confirmamos a lista proposta de bibliotecas pressionando Enter. Se você estiver usando bibliotecas adicionais, deve indicá-las 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. Após isso, uma janela com um arquivo JSON, descrevendo o experimento, será aberta. É possível corrigir alguns parâmetros - por exemplo, o nome do experimento. Depois disso, clique no link Enviar Experimento dentro desse arquivo:

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

  1. Após enviar o experimento com sucesso através do VS Code, você verá um link à direita na área de notificações para Azure ML Portal, onde poderá acompanhar o status e os resultados do experimento.

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

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

  1. Se você fez alguma correção no código ou alterou os parâmetros após isso, a execução do experimento novamente será muito mais rápida e simples. Clicando com o botão direito no arquivo, você verá uma nova opção de menu Repetir a última execução — basta selecioná-la e o experimento será iniciado imediatamente:

Como superar o medo e começar a usar o Azure Machine Learning
Os resultados das métricas de todas as execuções sempre poderão ser encontrados no Azure ML Portal, não é necessário anotá-los.

Agora você sabe que executar experimentos com o Azure ML é fácil e indolor, e ainda assim você obtém uma série de vantagens agradáveis.

Mas você pode ter notado algumas desvantagens. Por exemplo, para rodar o script, foi necessário muito mais tempo. Claro, embalar o script em um contêiner e implantá-lo no servidor leva tempo. Se, ao mesmo tempo, o cluster for reduzido para 0 nós, levará ainda mais tempo para iniciar a máquina virtual, e tudo isso é bastante perceptível quando experimentamos em tarefas simples como MNIST, que são resolvidas em poucos segundos. No entanto, na vida real, quando o treinamento dura várias horas, dias ou semanas, esse tempo adicional se torna irrelevante, especialmente em comparação com o desempenho significativamente maior que um cluster computacional pode oferecer.

E agora?

Espero que, após a leitura deste artigo, você consiga e comece a usar o Azure ML em seu trabalho para executar scripts, gerenciar recursos computacionais e armazenar resultados de forma centralizada. No entanto, o Azure ML pode lhe oferecer ainda mais benefícios!

Dentro da área de trabalho, você pode armazenar dados, criando assim um repositório central para todas as suas tarefas, o que torna fácil acessá-los. Além disso, você pode executar experimentos não a partir do Visual Studio Code, mas usando a API — isso pode ser especialmente útil se você precisar realizar otimização de hiperparâmetros e quiser executar o script várias vezes com diferentes parâmetros. Além disso, o Azure ML contém uma tecnologia especial Hyperdrive, que permite fazer buscas e otimizações de hiperparâmetros mais sofisticadas. Farei mais comentários sobre essas possibilidades em minha próxima postagem.

Recursos Úteis

Para um estudo mais detalhado sobre o Azure ML, os seguintes cursos do Microsoft Learn podem ser úteis:

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster