Tworzenie i używanie klastra obliczeniowego

Ukończone

Po eksperymentowaniu i opracowywaniu chcesz, aby kod był gotowy do produkcji. Po uruchomieniu kodu w środowiskach produkcyjnych lepiej używać skryptów zamiast notesów. Po uruchomieniu skryptu chcesz użyć docelowego obiektu obliczeniowego, który jest skalowalny.

W usłudze Azure Machine Learning klastry obliczeniowe są idealne do uruchamiania skryptów. Możesz utworzyć klaster obliczeniowy w Azure Machine Learning studio, używając interfejsu wiersza poleceń Azure lub zestawu developerskiego Python (SDK).

Tworzenie klastra obliczeniowego przy użyciu zestawu SDK języka Python

Aby utworzyć klaster obliczeniowy przy użyciu zestawu SDK języka Python, możesz użyć następującego kodu:

from azure.ai.ml.entities import AmlCompute

cluster_basic = AmlCompute(
    name="cpu-cluster",
    type="amlcompute",
    size="STANDARD_DS3_v2",
    location="westus",
    min_instances=0,
    max_instances=2,
    idle_time_before_scale_down=120,
    tier="low_priority",
)
ml_client.begin_create_or_update(cluster_basic).result()

Aby dowiedzieć się, jakich parametrów oczekuje klasa AmlCompute, możesz przejrzeć dokumentację referencyjną .

Podczas tworzenia klastra obliczeniowego należy wziąć pod uwagę trzy główne parametry:

  • size: określa typ maszyny wirtualnej każdego węzła w klastrze obliczeniowym. Na podstawie rozmiarów dla maszyn wirtualnych w usłudze Azure. Obok rozmiaru możesz również określić, czy chcesz użyć procesorów CPU, czy procesorów GPU.
  • max_instances: Określa maksymalną liczbę węzłów, do których można skalować w poziomie Twój klaster obliczeniowy. Liczba równoległych obciążeń, które może obsłużyć klaster obliczeniowy, jest analogiczna do liczby węzłów, do których można skalować klaster.
  • tier: określa, czy maszyny wirtualne są o niskim priorytecie, czy dedykowane. Ustawienie na niski priorytet może obniżyć koszty, ponieważ nie masz gwarantowanej dostępności.

Korzystanie z klastra obliczeniowego

Istnieją trzy główne scenariusze, w których można użyć klastra obliczeniowego:

  • Uruchamianie zadania potokowego, które sam utworzyłeś w projektancie.
  • Uruchamianie zadania zautomatyzowanego uczenia maszynowego.
  • Uruchamianie skryptu jako zadania.

W każdym z tych scenariuszy klaster obliczeniowy jest idealny, ponieważ klaster obliczeniowy automatycznie skaluje się w górę po przesłaniu zadania i automatycznie zamyka się po zakończeniu zadania.

Klaster obliczeniowy umożliwia również równoległe trenowanie wielu modeli, co jest powszechną praktyką w przypadku korzystania z zautomatyzowanego uczenia maszynowego.

Zadanie pipeline Designer i zadanie zautomatyzowanego uczenia maszynowego można uruchomić za pośrednictwem Azure Machine Learning Studio. Po przesłaniu zadania za pośrednictwem programu Studio można ustawić docelowy obiekt obliczeniowy na utworzony klaster obliczeniowy.

Jeśli wolisz podejście oparte na kodzie, możesz ustawić docelowy obiekt obliczeniowy na klaster obliczeniowy przy użyciu zestawu SDK języka Python.

Na przykład, gdy uruchamiasz skrypt jako zadanie polecenia, możesz ustawić cel obliczeń na swój klaster obliczeniowy, używając następującego kodu:

from azure.ai.ml import command

# configure job
job = command(
    code="./src",
    command="python diabetes-training.py",
    environment="AzureML-sklearn-0.24-ubuntu18.04-py37-cpu@latest",
    compute="cpu-cluster",
    display_name="train-with-cluster",
    experiment_name="diabetes-training"
    )

# submit job
returned_job = ml_client.create_or_update(job)
aml_url = returned_job.studio_url
print("Monitor your job at", aml_url)

Po przesłaniu zadania korzystającego z klastra obliczeniowego, ten klaster może zostać rozbudowany do jednego lub więcej węzłów. Zmiana rozmiaru trwa kilka minut, a zadanie zostanie uruchomione po udostępnieniu niezbędnych węzłów. Gdy stan zadania jest przygotowywanie, trwa przygotowywanie klastra obliczeniowego. Kiedy status to uruchomiony, klaster obliczeniowy jest gotowy, a zadanie jest uruchomione.