Sdílet prostřednictvím


Ladění úloh a monitorování průběhu trénování

Trénování modelu strojového učení je iterativní proces a vyžaduje významné experimentování. Díky interaktivnímu pracovnímu prostředí služby Azure Machine Learning můžou datoví vědci použít sadu Azure Machine Learning Python SDK, Azure Machine Learning CLI nebo Azure Studio pro přístup ke kontejneru, ve kterém je jejich úloha spuštěná. Po přístupu ke kontejneru úloh můžou uživatelé iterovat trénovací skripty, monitorovat průběh trénování nebo vzdáleně ladit úlohu, jako obvykle dělají na místních počítačích. Úlohy je možné interagovat prostřednictvím různých trénovacích aplikací, včetně JupyterLabu, TensorBoardu, VS Code nebo připojením ke kontejneru úloh přímo přes SSH.

Interaktivní trénování se podporuje ve výpočetních clusterech Azure Machine Learning a clusteru Kubernetes s podporou služby Azure Arc.

Požadavky

  • Přečtěte si , jak začít s trénováním ve službě Azure Machine Learning.
  • Další informace najdete v tomto odkazu pro VS Code pro nastavení rozšíření Azure Machine Learning.
  • Ujistěte se, že vaše prostředí úloh má openssh-server nainstalované balíčky a ipykernel ~=6.0 balíčky (ve výchozím nastavení jsou tyto balíčky nainstalované ve všech trénovacích prostředích služby Azure Machine Learning).
  • Interaktivní aplikace nejde povolit u distribuovaných trénovacích běhů, kde je typ distribuce cokoli jiného než PyTorch, TensorFlow nebo MPI. Nastavení vlastního distribuovaného trénování (konfigurace trénování s více uzly bez použití výše uvedených distribučních architektur) se v současné době nepodporuje.
  • Pokud chcete použít SSH, potřebujete pár klíčů SSH. Pomocí příkazu můžete ssh-keygen -f "<filepath>" vygenerovat pár veřejného a privátního klíče.

Interakce s kontejnerem úloh

Zadáním interaktivních aplikací při vytváření úlohy se můžete připojit přímo ke kontejneru na výpočetním uzlu, na kterém je vaše úloha spuštěná. Jakmile budete mít přístup k kontejneru úloh, můžete úlohu otestovat nebo ladit ve stejném prostředí, ve kterém by se spustila. VS Code můžete také použít k připojení ke spuštěnému procesu a ladění stejně jako v místním prostředí.

Povolení během odesílání úloh

  1. Vytvořte novou úlohu z levého navigačního podokna na portálu studio.

  2. Jako typ výpočetních prostředků zvolte Výpočetní cluster nebo Připojený výpočetní objekt (Kubernetes), zvolte cílový výpočetní objekt a určete, kolik uzlů potřebujeteInstance count.

Snímek obrazovky s výběrem výpočetního umístění pro úlohu

  1. Postupujte podle průvodce a zvolte prostředí, které chcete spustit úlohu.

  2. V kroku trénovacího skriptu přidejte trénovací kód (a vstupní/výstupní data) a v příkazu na něj odkazujte, abyste měli jistotu, že je připojený k vaší úloze.

Snímek obrazovky s kontrolou konceptu úlohy a dokončením vytváření

Na konec příkazu můžete sleep <specific time> zadat dobu, po kterou chcete výpočetní prostředek rezervovat. Formát je následující:

  • spánek 1s
  • spánek 1 min.
  • spánek 1h
  • 1d spánku

Můžete také použít sleep infinity příkaz, který by zachoval úlohu naživu po neomezenou dobu.

Poznámka:

Pokud použijete sleep infinity, budete muset úlohu ručně zrušit, abyste mohli přejít k výpočetnímu prostředku (a zastavit fakturaci).

  1. V nastavení výpočetních prostředků rozbalte možnost Pro trénovací aplikace. Vyberte aspoň jednu trénovací aplikaci, kterou chcete použít k interakci s úlohou. Pokud aplikaci nevyberete, funkce ladění nebude dostupná.

Snímek obrazovky s výběrem trénovací aplikace pro uživatele, který se má použít pro úlohu

  1. Zkontrolujte a vytvořte úlohu.

Připojení ke koncovým bodům

Pokud chcete pracovat se spuštěnou úlohou, vyberte tlačítko Ladit a monitorovat na stránce podrobností úlohy.

Snímek obrazovky s umístěním interaktivních úloh pro ladění a monitorování panelu

Kliknutím na aplikace na panelu otevřete novou kartu pro aplikace. K aplikacím můžete přistupovat jenom v případech, kdy jsou ve stavu Spuštěno a k přístupu k aplikacím má oprávnění pouze vlastník úlohy. Pokud trénujete na více uzlech, můžete vybrat konkrétní uzel, se kterým chcete pracovat.

Snímek obrazovky s informacemi o pravém panelu interaktivních úloh Obsah informací se liší v závislosti na datech uživatele.

Spuštění úlohy a trénovacích aplikací zadaných během vytváření úlohy může trvat několik minut.

Interakce s aplikacemi

Když vyberete koncové body pro interakci při práci, přejdete do kontejneru uživatelů v pracovním adresáři, kde máte přístup k kódu, vstupům, výstupům a protokolům. Pokud při připojování k aplikacím narazíte na nějaké problémy, najdete interaktivní možnosti a protokoly aplikací z system_logs-interactive_capability> na kartě Výstupy a protokoly.

Snímek obrazovky s umístěním panelu interaktivních protokolů interaktivních úloh

  • Terminál můžete otevřít z Prostředí Jupyter Lab a začít interagovat v rámci kontejneru úloh. Pomocí jupyter Labu můžete také přímo iterovat trénovací skript.

    Snímek obrazovky s panelem obsahu interaktivních úloh Jupyter labu

  • Můžete také pracovat s kontejnerem úloh v nástroji VS Code. Pokud chcete k úloze připojit ladicí program během odesílání úlohy a pozastavit provádění, přejděte sem.

    Poznámka:

    Pracovní prostory s podporou privátního propojení se v současné době nepodporují při interakci s kontejnerem úloh s VS Code.

    Snímek obrazovky s panelem interaktivních úloh VS Code při prvním otevření Zobrazí se ukázkový soubor Pythonu, který byl vytvořen k tisku dvou řádků.

  • Pokud jste zaprotokolovali události tensorflow pro úlohu, můžete pomocí TensorBoardu monitorovat metriky při spuštění úlohy.

    Snímek obrazovky s panelem tensorboardu interaktivních úloh při prvním otevření Tyto informace se liší v závislosti na datech zákazníků.

Ukončit úlohu

Po dokončení interaktivního trénování můžete také přejít na stránku podrobností úlohy a zrušit tak úlohu, která uvolní výpočetní prostředek. Alternativně můžete použít az ml job cancel -n <your job name> v rozhraní příkazového řádku nebo ml_client.job.cancel("<job name>") v sadě SDK.

Snímek obrazovky s možností zrušení úlohy interaktivních úloh a umístěním pro výběr uživatele

Připojení ladicího programu k úloze

Pokud chcete odeslat úlohu s připojeným ladicím programem a pozastaveným spuštěním, můžete použít ladicí program a VS Code (debugpy musí být nainstalován ve vašem prostředí úlohy).

Poznámka:

Pracovní prostory s podporou privátního propojení se v současné době nepodporují při připojování ladicího programu k úloze ve VS Code.

  1. Během odesílání úloh (prostřednictvím uživatelského rozhraní, rozhraní příkazového řádku nebo sady SDK) pomocí příkazu debugpy spusťte skript Pythonu. Například následující snímek obrazovky ukazuje ukázkový příkaz, který používá debugpy k připojení ladicího programu pro skript tensorflow (tfevents.py lze nahradit názvem trénovacího skriptu).

Snímek obrazovky s konfigurací interaktivních úloh ladění

  1. Po odeslání úlohy se připojte ke VS Code a vyberte integrovaný ladicí program.

    Snímek obrazovky s umístěním interaktivních úloh otevřeného ladicího programu na levém bočním panelu

  2. Pomocí konfigurace ladění Vzdálené připojení se připojte k odeslané úloze a předejte cestu a port, který jste nakonfigurovali v příkazu pro odeslání úlohy. Tyto informace najdete také na stránce podrobností úlohy.

    Snímek obrazovky s interaktivními úlohami dokončených úloh

    Snímek obrazovky s interaktivními úlohami, které přidá tlačítko pro vzdálené připojení

  3. Nastavte zarážky a projděte provádění úlohy stejně jako v místním pracovním postupu ladění.

    Snímek obrazovky s umístěním ukázkové zarážky nastavené v editoru Visual Studio Code

Poznámka:

Pokud ke spuštění úlohy použijete debugpy, úloha se nespustí , pokud v editoru VS Code nepřipojujete ladicí program a skript spustíte. Pokud to neukončíte, výpočetní prostředky budou rezervovány, dokud se úloha nezruší.

Další kroky