Potoki usługi Azure Machine Learning

Ukończone

Jako analityk danych będziesz pracować przede wszystkim z usługą Azure Machine Learning w celu trenowania modeli i zarządzania nimi. Po eksperymentowaniu należy przekonwertować swoją pracę na produkcyjny kod języka Python, aby umożliwić automatyzację za pomocą potoków platformy Azure (DevOps) lub funkcji GitHub Actions.

Eksperyment w usłudze Azure Machine Learning

Usługa Azure Machine Learning udostępnia zestaw funkcji, które ułatwiają organizowanie pracy. Na przykład za pomocą usługi Azure Machine Learning można wykonywać następujące czynności:

  • Rejestrowanie zestawów danych w celu łatwego ponownego użycia danych przechowywanych w usłudze Data Lake.
  • Trenowanie modelu na zdalnych wystąpieniach obliczeniowych lub klastrach w zależności od wymagań.
  • Śledź wszystkie wykonane skrypty z eksperymentami , aby łatwo porównać swoją pracę.
  • Zarejestruj wytrenowane modele i wdróż model na potrzeby użycia wsadowego lub w czasie rzeczywistym.

Większość pracy jako analityk danych będzie składać się z eksperymentów: testowanie różnych konfiguracji w celu wytrenowania modelu i przejrzenia metryk wydajności w celu podjęcia decyzji, który model ma zostać wdrożony w środowisku produkcyjnym.

Przy założeniu, że eksperymentujesz w notesie Jupyter (.ipynb plikach), należy przekonwertować eksperyment na produkcyjny kod języka Python przez:

  • Usuwanie całego kodu beznieściowego.
  • Refaktoryzacja kodu do funkcji.
  • Łączenie powiązanych funkcji w skryptach języka Python (.py pliki).
  • Tworzenie testów jednostkowych dla każdego skryptu języka Python.
  • Tworzenie potoku w celu grupowania skryptów w przepływ pracy, który można zautomatyzować.

Gdy kod będzie gotowy do użycia w środowisku produkcyjnym, możesz zautomatyzować wykonywanie skryptów przy użyciu potoków usługi Azure Machine Learning.

Tworzenie potoków usługi Azure Machine Learning

Koncepcja potoku znajduje się w różnych narzędziach, często zapewniając sposób grupowania zadań w określonej kolejności. Główną zaletą potoku jest to, że można go zaplanować lub wyzwolić do uruchomienia.

Potok usługi Azure Machine Learning jest tworzony w obszarze roboczym usługi Azure Machine Learning. Aby utworzyć potok, możesz zdefiniować kroki za pomocą skryptów języka Python.

Opcjonalnie możesz utworzyć potok za pomocą składników usługi Azure Machine Learning. Podczas tworzenia składnika skrypt będzie przechowywany z metadanymi, takimi jak niezbędne środowisko w obszarze roboczym usługi Azure Machine Learning. Składniki mogą być współużytkowane i używane przez każdą osobę w tym samym obszarze roboczym, co ułatwia innym osobom szybkie tworzenie nowych potoków w oparciu o twoją pracę.

Aby utworzyć potok, który może służyć do automatyzacji, zaleca się zdefiniowanie zadania potoku w języku YAML, które można wyzwolić za pomocą polecenia interfejsu wiersza polecenia (wersja 2).

Plik YAML definiujący potok musi określać następujące informacje:

  • Co należy uruchomić: kroki zdefiniowane jako skrypty lub składniki języka Python.
  • Jak go uruchomić: wszelkie dane wejściowe lub wyjściowe, których mogą oczekiwać kroki.
  • Gdzie go uruchomić: obliczenia potrzebne do wykonania kodu (często klaster obliczeniowy usługi Azure Machine Learning).

Na przykład potok, który pobiera dane pierwotne jako dane wejściowe, przekształca je i trenuje model, może być zdefiniowany w pipeline-job.yml pliku:

$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
display_name: nyc-taxi-pipeline-example
experiment_name: nyc-taxi-pipeline-example
jobs:

  transform-job:
    type: command
      raw_data: 
          type: uri_folder 
          path: ./data
    outputs:
      transformed_data:
        mode: rw_mount
    code: src/transform
    environment: azureml:AzureML-sklearn-0.24-ubuntu18.04-py37-cpu@latest
    compute: azureml:cpu-cluster
    command: >-
      python transform.py 
      --raw_data ${{inputs.raw_data}} 
      --transformed_data ${{outputs.transformed_data}}
  
  train-job:
    type: command
    inputs:
      training_data: ${{parent.jobs.transform-job.outputs.transformed_data}}
    outputs:
      model_output: 
        mode: rw_mount
      test_data: 
        mode: rw_mount
    code: src/train
    environment: azureml:AzureML-sklearn-0.24-ubuntu18.04-py37-cpu@latest
    compute: azureml:cpu-cluster
    command: >-
      python train.py 
      --training_data ${{inputs.training_data}} 
      --test_data ${{outputs.test_data}} 
      --model_output ${{outputs.model_output}}

Aby uruchomić potok w usłudze Azure Machine Learning, użyj następującego polecenia interfejsu wiersza polecenia:

az ml job create --file pipeline-job.yml

Po zakończeniu wykonywania potoku możesz przejrzeć potok i jego wykonane kroki w obszarze roboczym usługi Azure Machine Learning.

Po przekonwertowaniu obciążeń uczenia maszynowego na skrypty języka Python i grupowanie zadań w potoku model będzie gotowy do produkcji. Definiowanie potoku w pliku YAML umożliwia zautomatyzowanie trenowania i ponownego trenowania przez wyzwolenie uruchomienia potoku za pomocą interfejsu wiersza polecenia (wersja 2). Możesz uruchomić polecenie interfejsu wiersza polecenia, odwołując się do pliku YAML potoku, z potoków platformy Azure (DevOps) lub funkcji GitHub Actions.