Tutorial: Começa com um script Python em Azure Machine Learning (parte 1 de 3)

Neste tutorial, você executou o seu primeiro script Python na nuvem com Azure Machine Learning. Este tutorial é parte 1 de uma série tutorial em três partes.

Este tutorial evita a complexidade da formação de um modelo de aprendizagem automática. Vais publicar um guião python "Hello World" na nuvem. Você vai aprender como um script de controlo é usado para configurar e criar uma corrida em Azure Machine Learning.

Neste tutorial, vai:

  • Criar e executar um "Olá mundo!" Roteiro de Python.
  • Crie um script de controlo Python para submeter "Olá mundo!" para Azure Machine Learning.
  • Compreenda os conceitos de Aprendizagem automática Azure no script de controlo.
  • Submeta-se e corra o "Olá mundo!" roteiro.
  • Veja a saída do seu código na nuvem.

Pré-requisitos

Criar e executar um script Python

Este tutorial usará a instância computacional como seu computador de desenvolvimento. Primeiro crie algumas pastas e o script:

  1. Inscreva-se no estúdio Azure Machine Learning e selecione o seu espaço de trabalho se solicitado.
  2. À esquerda, selecione Cadernos
  3. Na barra de ferramentas Ficheiros, selecione + e selecione Criar nova pasta. Os screenshot shows criam uma nova ferramenta de pasta na barra de ferramentas.
  4. Nomeie a pasta para começar.
  5. À direita do nome da pasta, utilize o ... para criar outra pasta sob o início. Os programas de screenshot criam um menu de sub-dobras.
  6. Nomeie a nova pasta src. Utilize o link de localização Editar se a localização do ficheiro não estiver correta.
  7. À direita da pasta src, utilize o ... para criar um novo ficheiro na pasta src.
  8. Diga o nome do seu ficheiro hello.py. Mude o tipo de ficheiro para Python (.py)*.

Copie este código no seu ficheiro:

# src/hello.py
print("Hello world!")

A sua estrutura de pasta de projeto passará a ser:

A estrutura da pasta mostra hello.py na sub-dobragem SRC.

Teste o seu script

Pode executar o seu código localmente, o que neste caso significa na instância de computação. O código de execução local tem o benefício da depuragem interativa do código.

Se já parou previamente a sua instância de computação, inicie-a agora com a ferramenta de computação Iniciar à direita da queda do cálculo. Espere cerca de um minuto para que o estado mude para Running.

Screenshot mostra iniciar a instância de computação se for parado

Selecione Guardar e executar o script no terminal para executar o script.

Screenshot mostra guardar e executar script na ferramenta terminal na barra de ferramentas

Verá a saída do guião na janela do terminal que se abre. Feche o separador e selecione Terminate para fechar a sessão.

Criar um script de controlo

Um script de controlo permite-lhe executar o seu script em hello.py diferentes recursos compute. Usa o script de controlo para controlar como e onde o seu código de aprendizagem automática é executado.

Selecione a pasta ... no final da pasta de início para criar um novo ficheiro. Crie um ficheiro Python chamado run-hello.py e copie/cole o seguinte código nesse ficheiro:

# get-started/run-hello.py
from azureml.core import Workspace, Experiment, Environment, ScriptRunConfig

ws = Workspace.from_config()
experiment = Experiment(workspace=ws, name='day1-experiment-hello')

config = ScriptRunConfig(source_directory='./src', script='hello.py', compute_target='cpu-cluster')

run = experiment.submit(config)
aml_url = run.get_portal_url()
print(aml_url)

Dica

Se usou um nome diferente quando criou o seu cluster de cálculo, certifique-se de ajustar o nome também no compute_target='cpu-cluster' código.

Compreender o código

Aqui está uma descrição de como o script de controlo funciona:

ws = Workspace.from_config()

O espaço de trabalho conecta-se ao seu espaço de trabalho de aprendizagem de máquinas Azure, para que possa comunicar com os seus recursos de Aprendizagem automática Azure.

experiment = Experiment( ... )

A experiência fornece uma forma simples de organizar várias corridas com um único nome. Mais tarde, pode ver como as experiências facilitam a comparação de métricas entre dezenas de corridas.

config = ScriptRunConfig( ... )

ScriptRunConfig embrulha o seu hello.py código e passa-o para o seu espaço de trabalho. Como o nome sugere, pode usar esta aula para configurar como pretende que o seu script seja executado em Azure Machine Learning. Também especifica qual o alvo do cálculo em que o script será executado. Neste código, o alvo é o cluster de cálculo que criou no tutorial de configuração.

run = experiment.submit(config)

Submete o teu guião. Esta submissão chama-se corrida. Uma corrida encapsula uma única execução do seu código. Use uma corrida para monitorizar o progresso do script, capturar a saída, analisar os resultados, visualizar métricas e muito mais.

aml_url = run.get_portal_url()

O run objeto fornece uma pega na execução do seu código. Monitorize o seu progresso a partir do estúdio Azure Machine Learning com o URL impresso a partir do script Python.

Submeta e execute o seu código na nuvem

Selecione Guardar e executar o script no terminal para executar o seu script de controlo, que por sua vez funciona no cluster de cálculo que criou no tutorial de hello.py configuração.

No terminal, pode ser-lhe pedido que faça sê-lo para autenticar. Copie o código e siga o link para completar este passo.

Dica

Se acabou de criar o cluster compute, poderá ver o erro "UserError: Imagem de Docker exigida não encontrada..." Espere cerca de 5 minutos e tente de novo. O cluster de cálculo pode precisar de mais tempo antes de estar pronto para girar os nós.

Monitorize o seu código na nuvem no estúdio

A saída do seu script conterá um link para o estúdio que se parece com isto: https://ml.azure.com/experiments/hello-world/runs/<run-id>?wsid=/subscriptions/<subscription-id>/resourcegroups/<resource-group>/workspaces/<workspace-name> .

Siga o link. No início, verá um estado de Fila ou Preparação. A primeira corrida levará 5 a 10 minutos para ser concluída. Isto porque ocorre o seguinte:

  • Uma imagem de estiva é construída na nuvem
  • O cluster computacional é redimensionado de 0 a 1 nó
  • A imagem do estivador é transferida para o cálculo.

As execuções subsequentes são muito mais rápidas (~15 segundos) uma vez que a imagem do estivador é em cache no cálculo. Pode testá-lo reenviando o código abaixo depois de concluído o primeiro ensaio.

Espere uns 10 minutos. Verá uma mensagem que a corrida terminou. Em seguida, utilize Refresh para ver a alteração de estado para Concluído. Assim que o trabalho estiver concluído, vá ao separador Saídas + registos. Lá pode ver um 70_driver_log.txt ficheiro que se parece com este:

 1: [2020-08-04T22:15:44.407305] Entering context manager injector.
 2: [context_manager_injector.py] Command line Options: Namespace(inject=['ProjectPythonPath:context_managers.ProjectPythonPath', 'RunHistory:context_managers.RunHistory', 'TrackUserError:context_managers.TrackUserError', 'UserExceptions:context_managers.UserExceptions'], invocation=['hello.py'])
 3: Starting the daemon thread to refresh tokens in background for process with pid = 31263
 4: Entering Run History Context Manager.
 5: Preparing to call script [ hello.py ] with arguments: []
 6: After variable expansion, calling script [ hello.py ] with arguments: []
 7:
 8: Hello world!
 9: Starting the daemon thread to refresh tokens in background for process with pid = 31263
10:
11:
12: The experiment completed successfully. Finalizing run...
13: Logging experiment finalizing status in history service.
14: [2020-08-04T22:15:46.541334] TimeoutHandler __init__
15: [2020-08-04T22:15:46.541396] TimeoutHandler __enter__
16: Cleaning up all outstanding Run operations, waiting 300.0 seconds
17: 1 items cleaning up...
18: Cleanup took 0.1812913417816162 seconds
19: [2020-08-04T22:15:47.040203] TimeoutHandler __exit__

Na linha 8, vê-se o "Olá mundo!" saída.

O 70_driver_log.txt ficheiro contém a saída padrão de uma execução. Este ficheiro pode ser útil quando está a depurar as remotas corridas na nuvem.

Passos seguintes

Neste tutorial, fizeste um simples "Olá mundo!" guião e correu no Azure. Viu como se conectar ao seu espaço de trabalho Azure Machine Learning, criar uma experiência e submeter o seu hello.py código à nuvem.

No próximo tutorial, baseia-se nestas aprendizagens, executando algo mais interessante do print("Hello world!") que.

Nota

Se quiser terminar a série tutorial aqui e não avançar para o próximo passo, lembre-se de limpar os seus recursos.