Udostępnij za pośrednictwem


Tworzenie klastra obliczeniowego usługi Azure Machine Learning przy użyciu interfejsu wiersza polecenia w wersji 1

DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure ml w wersji 1zestawu SDK języka Python azureml v1

Dowiedz się, jak utworzyć klaster obliczeniowy i zarządzać nim w obszarze roboczym usługi Azure Machine Learning.

Za pomocą klastra obliczeniowego usługi Azure Machine Learning można dystrybuować proces trenowania lub wnioskowania wsadowego w klastrze węzłów obliczeniowych procesora CPU lub procesora GPU w chmurze. Aby uzyskać więcej informacji na temat rozmiarów maszyn wirtualnych, które obejmują procesory GPU, zobacz Rozmiary maszyn wirtualnych zoptymalizowane pod kątem procesora GPU.

Z tego artykułu dowiesz się, jak wykonywać następujące działania:

  • Tworzenie klastra obliczeniowego
  • Obniżanie kosztów klastra obliczeniowego
  • Konfigurowanie tożsamości zarządzanej dla klastra

Wymagania wstępne

Co to jest klaster obliczeniowy?

Klaster obliczeniowy usługi Azure Machine Learning to zarządzana infrastruktura obliczeniowa, która umożliwia łatwe tworzenie pojedynczego lub wielowęźleowego środowiska obliczeniowego. Klaster obliczeniowy to zasób, który może być udostępniany innym użytkownikom w obszarze roboczym. Obliczenia są skalowane automatycznie w górę po przesłaniu zadania i można je umieścić w usłudze Azure Virtual Network. Klaster obliczeniowy nie obsługuje również wdrożenia publicznego adresu IP w sieci wirtualnej. Obliczenia są wykonywane w środowisku konteneryzowanym i pakują zależności modelu w kontenerze platformy Docker.

Klastry obliczeniowe mogą bezpiecznie uruchamiać zadania w środowisku sieci wirtualnej bez konieczności otwierania portów SSH przez przedsiębiorstwa. Zadanie jest wykonywane w środowisku konteneryzowanym i pakuje zależności modelu w kontenerze platformy Docker.

Ograniczenia

  • Klastry obliczeniowe można tworzyć w innym regionie i sieci wirtualnej niż obszar roboczy. Jednak ta funkcja jest dostępna tylko przy użyciu zestawu SDK w wersji 2, interfejsu wiersza polecenia w wersji 2 lub studio. Aby uzyskać więcej informacji, zobacz wersję 2 bezpiecznych środowisk szkoleniowych.

  • Obecnie obsługujemy tylko tworzenie (a nie aktualizowanie) klastrów za pomocą szablonów usługi ARM. W przypadku aktualizowania zasobów obliczeniowych zalecamy na razie używanie zestawu SDK, interfejsu wiersza polecenia platformy Azure lub środowiska użytkownika.

  • Usługa Azure Machine Learning Compute ma domyślne limity, takie jak liczba rdzeni, które można przydzielić. Aby uzyskać więcej informacji, zobacz Zarządzanie limitami przydziałów i żądania dla zasobów platformy Azure.

  • Platforma Azure umożliwia umieszczanie blokad w zasobach , dzięki czemu nie można ich usunąć lub są tylko do odczytu. Nie należy stosować blokad zasobów do grupy zasobów zawierającej obszar roboczy. Zastosowanie blokady do grupy zasobów zawierającej obszar roboczy uniemożliwi operacje skalowania dla klastrów obliczeniowych usługi Azure Machine Learning. Aby uzyskać więcej informacji na temat blokowania zasobów, zobacz Blokowanie zasobów, aby zapobiec nieoczekiwanym zmianom.

Napiwek

Klastry mogą zwykle skalować do 100 węzłów, o ile masz wystarczający limit przydziału dla wymaganej liczby rdzeni. Domyślnie klastry są konfigurowane z włączoną komunikacją między węzłami klastra w celu obsługi zadań MPI na przykład. Można jednak skalować klastry do 1000 węzłów, po prostu podnosząc bilet pomocy technicznej i żądając zezwolenia na wyświetlanie listy subskrypcji lub obszaru roboczego albo określonego klastra w celu wyłączenia komunikacji między węzłami.

Utworzenie

Szacowany czas: około 5 minut.

Środowisko obliczeniowe usługi Azure Machine Learning można używać ponownie w ramach przebiegów. Zasoby obliczeniowe mogą być udostępniane innym użytkownikom w obszarze roboczym i są zachowywane między przebiegami, automatycznie skalując węzły w górę lub w dół na podstawie liczby przesłanych przebiegów, a max_nodes ustawione w klastrze. Ustawienie min_nodes steruje minimalnymi dostępnymi węzłami.

Dedykowane rdzenie na region na przydział rodziny maszyn wirtualnych i całkowity limit przydziału regionalnego, który ma zastosowanie do tworzenia klastra obliczeniowego, jest ujednolicony i współużytkowany z limitem przydziału wystąpienia obliczeniowego trenowania usługi Azure Machine Learning.

Ważne

Aby uniknąć naliczania opłat w przypadku braku uruchomionych zadań, ustaw minimalną wartość węzłów na 0. To ustawienie umożliwia usłudze Azure Machine Learning anulowanie przydzielania węzłów, gdy nie są one używane. Każda wartość większa niż 0 zachowa liczbę uruchomionych węzłów, nawet jeśli nie są używane.

Obliczenia są skalowane automatycznie do zera węzłów, gdy nie są używane. Dedykowane maszyny wirtualne są tworzone w celu uruchamiania zadań zgodnie z potrzebami.

Aby utworzyć trwały zasób obliczeniowy usługi Azure Machine Learning w języku Python, określ właściwości vm_size i max_nodes . Następnie usługa Azure Machine Learning używa inteligentnych wartości domyślnych dla innych właściwości.

  • vm_size: rodzina maszyn wirtualnych węzłów utworzonych przez usługę Azure Machine Learning Compute.
  • max_nodes: maksymalna liczba węzłów do automatycznego skalowania do momentu uruchomienia zadania w usłudze Azure Machine Learning Compute.

DOTYCZY: Zestaw SDK języka Python w wersji 1

from azureml.core.compute import ComputeTarget, AmlCompute
from azureml.core.compute_target import ComputeTargetException

# Choose a name for your CPU cluster
cpu_cluster_name = "cpucluster"

# Verify that cluster does not exist already
try:
    cpu_cluster = ComputeTarget(workspace=ws, name=cpu_cluster_name)
    print('Found existing cluster, use it.')
except ComputeTargetException:
    # To use a different region for the compute, add a location='<region>' parameter
    compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_D2_V2',
                                                           max_nodes=4)
    cpu_cluster = ComputeTarget.create(ws, cpu_cluster_name, compute_config)

cpu_cluster.wait_for_completion(show_output=True)

Podczas tworzenia usługi Azure Machine Learning Compute można również skonfigurować kilka zaawansowanych właściwości. Właściwości umożliwiają utworzenie trwałego klastra o stałym rozmiarze lub w istniejącej sieci wirtualnej platformy Azure w ramach subskrypcji. Aby uzyskać szczegółowe informacje, zobacz klasę AmlCompute.

Ostrzeżenie

Podczas ustawiania parametru location , jeśli jest to inny region niż obszar roboczy lub magazyny danych, może wystąpić zwiększone opóźnienie sieci i koszty transferu danych. Opóźnienie i koszty mogą wystąpić podczas tworzenia klastra i uruchamiania w nim zadań.

Obniżanie kosztów klastra obliczeniowego

Możesz również użyć maszyn wirtualnych o niskim priorytcie do uruchamiania niektórych lub wszystkich obciążeń. Te maszyny wirtualne nie mają gwarantowanej dostępności i mogą zostać wywłaszczone podczas używania. Konieczne będzie ponowne uruchomienie zadania wywłaszczonego.

DOTYCZY: Zestaw SDK języka Python w wersji 1

compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_D2_V2',
                                                            vm_priority='lowpriority',
                                                            max_nodes=4)

Konfigurowanie tożsamości zarządzanej

Klastry obliczeniowe usługi Azure Machine Learning obsługują również tożsamości zarządzane w celu uwierzytelniania dostępu do zasobów platformy Azure bez uwzględniania poświadczeń w kodzie. Istnieją dwa typy tożsamości zarządzanych:

  • Tożsamość zarządzana przypisana przez system jest włączona bezpośrednio w klastrze obliczeniowym usługi Azure Machine Learning i wystąpieniu obliczeniowym. Cykl życia tożsamości przypisanej przez system jest bezpośrednio powiązany z klastrem obliczeniowym lub wystąpieniem. Jeśli klaster obliczeniowy lub wystąpienie zostanie usunięte, platforma Azure automatycznie wyczyści poświadczenia i tożsamość w identyfikatorze Entra firmy Microsoft.
  • Tożsamość zarządzana przypisana przez użytkownika jest autonomicznym zasobem platformy Azure udostępnianym za pośrednictwem usługi Azure Managed Identity. Tożsamość zarządzaną przypisaną przez użytkownika można przypisać do wielu zasobów i będzie ona utrzymywana tak długo, jak chcesz. Ta tożsamość zarządzana musi zostać utworzona wcześniej, a następnie przekazana jako identity_id jako wymagany parametr.

DOTYCZY: Zestaw SDK języka Python w wersji 1

  • Skonfiguruj tożsamość zarządzaną w konfiguracji aprowizacji:

    • Tożsamość zarządzana przypisana przez system utworzona w obszarze roboczym o nazwie ws

      # configure cluster with a system-assigned managed identity
      compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_D2_V2',
                                                              max_nodes=5,
                                                              identity_type="SystemAssigned",
                                                              )
      cpu_cluster_name = "cpu-cluster"
      cpu_cluster = ComputeTarget.create(ws, cpu_cluster_name, compute_config)
      
    • Tożsamość zarządzana przypisana przez użytkownika utworzona w obszarze roboczym o nazwie ws

      # configure cluster with a user-assigned managed identity
      compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_D2_V2',
                                                              max_nodes=5,
                                                              identity_type="UserAssigned",
                                                              identity_id=['/subscriptions/<subcription_id>/resourcegroups/<resource_group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user_assigned_identity>'])
      
      cpu_cluster_name = "cpu-cluster"
      cpu_cluster = ComputeTarget.create(ws, cpu_cluster_name, compute_config)
      
  • Dodawanie tożsamości zarządzanej do istniejącego klastra obliczeniowego o nazwie cpu_cluster

    • Tożsamość zarządzana przypisana przez system:

      # add a system-assigned managed identity
      cpu_cluster.add_identity(identity_type="SystemAssigned")
      
    • Tożsamość zarządzana przypisana przez użytkownika:

      # add a user-assigned managed identity
      cpu_cluster.add_identity(identity_type="UserAssigned", 
                                  identity_id=['/subscriptions/<subcription_id>/resourcegroups/<resource_group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user_assigned_identity>'])
      

Uwaga

Klastry obliczeniowe usługi Azure Machine Learning obsługują tylko jedną tożsamość przypisaną przez system lub wiele tożsamości przypisanych przez użytkownika, a nie jednocześnie.

Użycie tożsamości zarządzanej

Domyślna tożsamość zarządzana to tożsamość zarządzana przypisana przez system lub pierwsza tożsamość zarządzana przypisana przez użytkownika.

Podczas uruchamiania istnieją dwie aplikacje tożsamości:

  1. System używa tożsamości do konfigurowania instalacji magazynu użytkownika, rejestru kontenerów i magazynów danych.

    • W takim przypadku system będzie używać tożsamości domyślnej zarządzanej.
  2. Użytkownik stosuje tożsamość w celu uzyskania dostępu do zasobów z poziomu kodu dla przesłanego przebiegu

    • W takim przypadku podaj client_id odpowiadającą tożsamości zarządzanej, której chcesz użyć do pobrania poświadczeń.
    • Alternatywnie pobierz identyfikator klienta tożsamości przypisanej przez użytkownika za pomocą zmiennej środowiskowej DEFAULT_IDENTITY_CLIENT_ID .

    Aby na przykład pobrać token dla magazynu danych z tożsamością domyślną zarządzaną:

    client_id = os.environ.get('DEFAULT_IDENTITY_CLIENT_ID')
    credential = ManagedIdentityCredential(client_id=client_id)
    token = credential.get_token('https://storage.azure.com/')
    

Rozwiązywanie problemów

Istnieje prawdopodobieństwo, że niektórzy użytkownicy, którzy utworzyli swój obszar roboczy usługi Azure Machine Learning z witryny Azure Portal, zanim wersja ogólnie dostępna nie będzie mogła utworzyć aplikacji AmlCompute w tym obszarze roboczym. Możesz zgłosić wniosek o pomoc techniczną dla usługi lub utworzyć nowy obszar roboczy za pośrednictwem portalu lub zestawu SDK, aby natychmiast odblokować siebie.

Zablokowane przy zmianie rozmiaru

Jeśli klaster obliczeniowy usługi Azure Machine Learning jest zablokowany przy zmianie rozmiaru (0–> 0) dla stanu węzła, może to być spowodowane przez blokady zasobów platformy Azure.

Platforma Azure umożliwia umieszczanie blokad w zasobach , dzięki czemu nie można ich usunąć lub są tylko do odczytu. Zablokowanie zasobu może prowadzić do nieoczekiwanych wyników. W przypadku niektórych operacji może wydawać się, że nie modyfikują one zasobu, ale w rzeczywistości wymagają one działań blokowanych przez blokadę.

Dzięki usłudze Azure Machine Learning zastosowanie blokady usuwania do grupy zasobów dla obszaru roboczego uniemożliwi operacje skalowania dla klastrów obliczeniowych usługi Azure ML. Aby obejść ten problem, zalecamy usunięcie blokady z grupy zasobów i zastosowanie jej do poszczególnych elementów w grupie.

Ważne

Nie należy stosować blokady do następujących zasobów:

Nazwa zasobu Typ zasobu
<GUID>-azurebatch-cloudservicenetworksecurityggroup Sieciowa grupa zabezpieczeń
<GUID>-azurebatch-cloudservicepublicip Publiczny adres IP
<GUID>-azurebatch-cloudserviceloadbalancer Moduł równoważenia obciążenia

Te zasoby są używane do komunikowania się i wykonywania operacji, takich jak skalowanie w klastrze obliczeniowym. Usunięcie blokady zasobów z tych zasobów powinno zezwalać na skalowanie automatyczne dla klastrów obliczeniowych.

Aby uzyskać więcej informacji na temat blokowania zasobów, zobacz Blokowanie zasobów, aby zapobiec nieoczekiwanym zmianom.

Następne kroki

Użyj klastra obliczeniowego, aby: