Recursos Machine Learning da Microsoft – Workbench Targets

Olá pessoal!

Sejam bem-vindos ao blog talkitbr! Nas últimas semanas publiquei vários artigos para descrever recursos Machine Learning que são oferecidos pela Microsoft para que você possa desenvolver seu trabalho como cientista de dados. E no último artigo abordei uma ferramenta Desktop, chamada Azure Machine Learning Workbench, que possui vários recursos para preparação de dados e controle de execuções.

Agora irei me aprofundar um pouco mais nas funcionalidades do Workbench. Mais especificamente irei tratar de um aspecto importante quando trabalhamos com Machine Learning: a execução dos nossos algoritmos.

Todos sabem que ter todo o ambiente preparado, com softwares devidamente instalados e configurados e, ainda mais, com capacidade computacional adequada, muitas vezes é um grande desafio até mesmo para profissionais experientes. Muitas vezes estamos em uma estação de trabalho temporária e não dispomos de uma GPU, por exemplo, para rodar uma rede neural.

Nesse contexto, o Workbench traz uma funcionalidade muito interessante e simples de usar que é o envio e execução de Jobs em Ambientes de Execução diversos.

A seguir é mostrado um esquema que descreve em alto nível o fluxo para execução de um experimento no Workbench:

Note que os passos são os seguintes:

  • Criar o ambiente de execução: aqui você define o ambiente local ou remoto e se irá utilizar ambiente Python, Docker ou cluster
  • Especificar o ambiente de execução: definir qual ambiente, entre Python ou Spark, será utilizado para executar o experimento.
  • Especificar configuração da execução: Aqui você define informações como argumentos, avariáveis de ambiente e Framework.
  • Executar experimento: É quando o experimento é enfim enviado para o ambiente de execução.

Neste artigo irei fazer uma breve explanação sobre alguns desses ambientes de execução. Para mais informações, acesse a documentação oficial em: https://docs.microsoft.com/en-us/azure/machine-learning/desktop-workbench/experimentation-service-configuration

E muitos dos procedimentos vistos aqui podem ser obtidos usando linha de comando do Azure Machine Learning. Para mais detalhes, acesse: https://docs.microsoft.com/en-us/azure/machine-learning/desktop-workbench/model-management-cli-reference

Gerenciando Ambientes de Execução

Para cada projeto contido no Workbench, podemos definir 1 ou mais targets para executar nossos Scripts. Vamos usar como exemplo o projeto de IrisFlowers criado no artigo anterior.

Ao abrir o projeto no Workbench, note que do lado direito tem um item do Menu para os Environments (Ambientes):

Note que no caso do exemplo, temos dois ambientes configurados: local e Docker. Na verdade, todo novo projeto que você criar no Workbench terá esses dois ambientes como padrão. E você pode configurar esses ambientes, especificando parâmetros e dependências conforme as especificidades do seu projeto:

Note também que para cada ambiente podemos definir diferentes configurações de execução. Para o Docker, por exemplo, temos duas configurações de execução: Python e Spark. Essas configurações definem dependências que serão carregadas no Docker de acordo com a configuração. E depois você irá escolher a configuração de acordo com o Script que deseja executar.

Para cada ambiente, note que temos um botão chamado “Prepare”, que permite preparar o ambiente para posteriores execuções. No caso do Docker, a preparação envolve baixar a imagem Docker e preparar o container que depois será usado nas execuções.

Ambiente de Execução Local

O ambiente de execução local é aquele que irá utilizar o seu host atual e tudo que tem instalado nele. Segue fluxo de execução neste ambiente:

Se seu host já tem todos os pacotes instalados e dispõe de poder de processamento suficiente para execução do algoritmo, então essa é sempre uma opção mais simples e direta. Conforme vimos no artigo anterior, eu utilizei esse ambiente para executar o meu script para classificação de flores.

Ambiente de Execução Docker Local

O ambiente de execução Docker Local requer um Docker CE disponível para execução do Container. Caso você não tenha o Docker instalado, acesse o link https://docs.docker.com/install/. Segue fluxo de execução neste ambiente:

Uma vantagem do Docker é justamente isolar a execução do script em um container. Dessa forma você não precisa instalar na sua própria máquina todos os pacotes requeridos pelo Script. Outra vantagem é que geralmente o Container será gerado a partir de uma imagem padrão e irá executar de forma independente do seu SO, evitando assim alguns problemas de setup de máquina e problemas de configuração.

Por exemplo, podemos executar o script iris_spark.py em no ambiente docker_spark sem precisar se preocupar com o setup da nossa máquina local. Posso inclusive não ter instalados quaisquer pacotes Python.

  • Certifique-se que o Docker Engine está em execução para prosseguir.

Se seu host já tem todos os pacotes instalados e dispõe de poder de processamento suficiente para execução do algoritmo, então essa é sempre uma opção mais simples e direta. Conforme vimos no artigo anterior, eu utilizei esse ambiente para executar o meu script para classificação de flores.

Ambiente de Execução Python Remoto

Para executar o script, podemos também configurar um ambiente remoto que contenha devidamente instalados todos os pacotes necessários. E esse é o caso da nova Máquina Virtual de Data Science que exploramos em um outro artigo na nossa série.

  1. Obtenha o endereço IP ou DNS da máquina virtual de Data Science acessando a página do recurso no portal do Azure. Certifique-se também que a máquina virtual está em execução.
  2. De volta ao Workbench, acesse o item de menu Environments
  3. Clique no sinal “+” para adicionar novo ambiente e selecione a opção “Add Remote Target”
  4. Especifique um nome para o novo ambiente. Exemplo: remote.
  5. Especifique o IP ou DNS obtidos anteriormente
  6. Para usuário e senha, especifique as credenciais definidas anteriormente no ato da criação da VM. Se você usou a forma de autenticação via public/private SSH keys, especifique então o valor do Private Key Identifier.
  7. Para o Python Location, defina o local de instalação do Pyhton. No caso da VM de Data Science, o local padrão é “python3”.
  8. Pronto! A seguir a imagem mostra as configurações conforme especificado acima:
  9. Salve o ambiente de execução.
  10. Adicionalmente, pode ser necessário instalar alguns pacotes de AzureML mesmo na Máquina Virtual de Data Science. Para tanto, acesse a VM via SSH para executar o seguinte comando:
    pip install -I --index-url https://azuremldownloads.azureedge.net/python-repository/preview --extra-index-url https://pypi.python.org/simple azureml-requirements
    
    • Pode ser necessário executar esse comando com maior privilégio usando sudo.
  11. Agora vamos executar o script remotamente. Como especifiquei um ambiente remoto usando o Framework Python, vamos então selecionar o script para Python: o iris_sklearn.py
  12. Em Target, especifique o novo ambiente “remote” e clique no botão “Run”.
  13. Ao término da execução você obterá os resultados como se estive executando localmente:
  14. E você pode comparar essa execução remota com sua execução local para comparar tempo de execução, por exemplo.

Da mesma forma que vimos no artigo sobre a máquina virtual, podemos agora aumentar ou diminuir o poder computacional da nossa máquina, permitindo executar de forma mais adequada os Jobs que estamos submetendo para essa máquina.

Ambiente de Execução Docker Remoto

Outra opção que ainda temos é também executar o script em um container Docker remoto. Dessa forma precisamos apenas de um host com o Docker Engine executando para então conseguir enviar para esse host o nosso Job. Segue fluxo de execução Docker remoto:

Para experimentar esse recurso, vamos utilizar a mesma máquina virtual de Data Science pois ela já dispõe de um Docker instalado e em execução.

  1. Obtenha o endereço IP ou DNS da máquina virtual que contém o Docker.
  2. De volta ao Workbench, acesse o item de menu Environments
  3. Clique no sinal “+” para adicionar novo ambiente e selecione a opção “Add Remote Docker Target”
  4. Especifique um nome para o novo ambiente. Exemplo: remote docker.
  5. Da mesma forma que configuramos o ambiente Pyhton remoto, vamos aqui especificar o IP ou DNS obtidos anteriormente
  6. Para usuário e senha, especifique as credenciais definidas anteriormente no ato da criação da VM. Se você usou a forma de autenticação via public/private SSH keys, especifique então o valor do Private Key Identifier.
  7. Aqui não precisamos especificar o Python Location.
  8. Opcionalmente podemos adicionar diferentes configurações para executar remoto usando Framework Python ou PySpark. Vou especificcar o Framework PySpark.
  9. Pronto! A seguir a imagem mostra as configurações conforme especificado acima:
  10. Salve o ambiente de execução.
  11. Agora vamos executar o script remotamente. Como agora especifiquei um ambiente remoto usando o Framework PySpark, vamos então selecionar o script para PySpark: o iris_spark.py
  12. Em Target, especifique o novo ambiente “remote” e clique no botão “Run”.
  13. Da primeira vez pode demorar um pouco mais devido ao download da imagem e configuração do container
  14. Ao término da execução você obterá os resultados como se estive executando localmente:
  15. E você pode comparar essa execução remota com sua execução local para comparar tempo de execução, por exemplo.

Ambiente de Execução Cluster

Existem alguns casos de projetos que manipulam um volume muito grande de dados e requerem execução em um ambiente que permite realizar computação paralela do Job em questão.

Para tal podemos utilizar o cluster HDI, que no caso do Azure pode ser provisionado via recurso HDInsight.

  • O uso de cluster envolve custos mais elevados e deve ser empregado somente quando realmente se observa a necessidade de utilizar

Segue fluxo de execução do experimento em cluster:

Contudo, vou deixar esta explicação para outro artigo onde poderei detalhar justamente o HDInsight como outro recurso disponibilizado pela Microsoft para Machine Learning. Porém, se quiser detalhes de como proceder, acesse: https://docs.microsoft.com/pt-br/azure/machine-learning/desktop-workbench/tutorial-bikeshare-dataprep#run-in-an-hdinsight-cluster

Considerações Finais

Neste artigo foquei nos ambientes de execução dos scripts que desenvolvemos no Azure Machine Learning Workbench. São opções tanto locais como remotas de execução que atendem a diferentes cenários.

E nos próximos artigos irei focar em recursos do Azure para computação paralela e Big Data.

Até a próxima!

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

w

Conectando a %s