Sdílet prostřednictvím


Co jsou prostředí služby Azure Machine Learning?

Prostředí Azure Machine Learning zabalují kontext, ve kterém probíhá trénování nebo inference strojového učení. Určují balíčky Pythonu a nastavení softwaru pro trénovací a bodovací skripty. Pracovní prostor Machine Learning spravuje a verzovává tato prostředí a umožňuje reprodukovatelné, auditovatelné a přenosné pracovní postupy strojového učení napříč výpočetními cílovými prostředky. Použijte objekt Environment k:

  • Vyvíjejte trénovací skript.
  • Znovu použijte stejné prostředí ve službě Azure Machine Learning Compute pro trénování modelů ve velkém měřítku.
  • Nasaďte model se stejným prostředím.
  • Znovu se můžete vrátit k prostředí, ve kterém byl natrénován existující model.

Následující diagram znázorňuje, jak můžete použít jeden Environment objekt v konfiguraci úlohy (pro trénování) i konfiguraci odvozování a nasazení (pro nasazení webové služby).

Diagram prostředí v pracovním postupu strojového učení

Prostředí, cílový výpočetní objekt a trénovací skript společně tvoří konfiguraci úlohy: úplnou specifikaci trénovací úlohy.

Typy prostředí

Prostředí spadají do tří kategorií: kurátorované, spravované uživatelem a systémem spravované.

Kurátorovaná prostředí poskytuje Služba Azure Machine Learning a jsou ve výchozím nastavení dostupná ve vašem pracovním prostoru. Používejte je tak, jak jsou. Obsahují kolekce balíčků a nastavení Pythonu, které vám pomůžou začít s různými architekturami strojového učení. Tato předem vytvořená prostředí také umožňují rychlejší dobu nasazení. Azure Machine Learning hostuje kurátorovaná prostředí v registru AzureML, což je registr strojového učení hostovaný Microsoftem. Úplný seznam najdete v prostředích v registru AzureML.

V prostředích spravovaných uživatelem zodpovídáte za nastavení prostředí a instalaci každého balíčku, který trénovací skript potřebuje na cílový výpočetní objekt. Nezapomeňte také zahrnout všechny závislosti potřebné pro nasazení modelu. Uživatelem spravované prostředí může být BYOC (Přineste si vlastní kontejner) nebo Kontext sestavení Dockeru, který deleguje materializaci imagí do Služby Azure Machine Learning. Podobně jako kurátorovaná prostředí můžete sdílet uživatelsky spravovaná prostředí napříč pracovními prostory pomocí registru strojového učení, který vytvoříte a spravujete.

Prostředí spravovaná systémem používejte, když chcete, aby prostředí Pythonu spravuje za vás conda . Nové prostředí Conda je materializované ze specifikace conda nad základní imagí Dockeru.

Vytváření a správa prostředí

Prostředí můžete vytvářet pomocí sady Azure Machine Learning Python SDK, Azure Machine Learning CLI, studio Azure Machine Learning a rozšíření VS Code. Každý klient vám v případě potřeby umožní přizpůsobit základní image, soubor Dockerfile a vrstvu Pythonu.

Konkrétní ukázky kódu najdete v části Vytvoření prostředí v části Jak používat prostředí.

Prostředí můžete také spravovat prostřednictvím pracovního prostoru. S pracovním prostorem můžete:

  • Zaregistrujte prostředí.
  • Načtěte prostředí z pracovního prostoru, která se použijí k trénování nebo nasazení.
  • Vytvořte novou instanci prostředí úpravou existující instance.
  • Zobrazte změny prostředí v průběhu času, což zajišťuje reprodukovatelnost.
  • Vytvářejte image Dockeru automaticky z vašich prostředí.

Když experiment odešlete, služba ve vašem pracovním prostoru automaticky zaregistruje "anonymní" prostředí. Tato prostředí nejsou vypsaná, ale verzi můžete použít k jejich načtení.

Ukázky kódu najdete v části Správa prostředí v části Jak používat prostředí.

Vytváření, ukládání do mezipaměti a opětovné použití prostředí

Azure Machine Learning vytváří definice prostředí do imagí Dockeru. Také ukládá prostředí do mezipaměti, abyste je mohli znovu použít v následných trénovacích úlohách a nasazeních koncových bodů služby. Vzdálené spuštění trénovacího skriptu vyžaduje vytvoření image Dockeru. Azure Machine Learning ve výchozím nastavení spravuje cíl sestavení image na dostupné bezserverové kvótě výpočetních prostředků pracovního prostoru, pokud pro tento pracovní prostor není nastavená žádná vyhrazená výpočetní sada.

Poznámka:

Všechna omezení sítě v pracovním prostoru Azure Machine Learning můžou vyžadovat nastavení výpočetních prostředků sestavení vyhrazené image spravované uživatelem. Postupujte podle kroků pro zabezpečení prostředků pracovního prostoru.

Odeslání úlohy pomocí prostředí

Když poprvé odešlete vzdálenou úlohu pomocí prostředí nebo vytvoříte instanci prostředí ručně, Azure Machine Learning vytvoří image pro zadanou specifikaci. Výsledná image se ukládá do mezipaměti v instanci registru kontejneru přidružené k pracovnímu prostoru. Kurátorovaná prostředí se už ukládají do mezipaměti v registru Azure Machine Learning. Na začátku spuštění úlohy načte cílový výpočetní objekt image z příslušného registru kontejneru.

Vytváření prostředí jako imagí Dockeru

Pokud image pro konkrétní definici prostředí ještě v instanci registru kontejneru přidružená k pracovnímu prostoru Azure Machine Learning neexistuje, služba vytvoří novou image. V případě systémových spravovaných prostředí se proces sestavení image skládá ze dvou kroků:

  1. Stažení základní image a provedení všech kroků Dockeru
  2. Sestavení prostředí conda podle závislostí conda zadaných v definici prostředí.

Pro uživatelsky spravovaná prostředí služba používá poskytnuté sestavení kontextu Dockeru tak, jak je. V tomto případě zodpovídáte za instalaci všech balíčků Pythonu, a to tak, že je zahrnete do základní image nebo zadáte vlastní kroky Dockeru.

Ukládání obrázků do mezipaměti a opakované použití

Pokud použijete stejnou definici prostředí pro jinou úlohu, Azure Machine Learning znovu použije image uloženou v mezipaměti z registru kontejneru přidruženého k vašemu pracovnímu prostoru.

Pokud chcete zobrazit podrobnosti o imagi uložené v mezipaměti, podívejte se na stránku Prostředí v studio Azure Machine Learning nebo použijte MLClient.environments k získání a kontrole prostředí.

Pokud chcete zjistit, jestli se má znovu použít image uložená v mezipaměti, nebo vytvořit novou image, Azure Machine Learning vypočítá hodnotu hash z definice prostředí. Potom porovná hodnotu hash s hodnotami hash existujících prostředí. Hodnota hash slouží jako jedinečný identifikátor prostředí a je založená na definici prostředí:

  • Základní image
  • Vlastní kroky Dockeru
  • Balíčky Pythonu

Název a verze prostředí nemají žádný vliv na hodnotu hash. Pokud prostředí přejmenujete nebo vytvoříte nový se stejným nastavením a balíčky jako jiné prostředí, hodnota hash zůstane stejná. Změny definice prostředí, jako je přidání nebo odebrání balíčku Pythonu nebo změna verze balíčku, změní výslednou hodnotu hash. Změna pořadí závislostí nebo kanálů v prostředí změní hodnotu hash a vyžaduje nové sestavení image. Podobně jakákoli změna kurátorovaných prostředí vede k vytvoření vlastního prostředí.

Poznámka:

Nemůžete odeslat žádné místní změny do kurátorovaného prostředí beze změny názvu prostředí. Předpony "AzureML-" a "Microsoft" jsou vyhrazené výhradně pro kurátorovaná prostředí a odeslání úlohy selže, pokud název začíná některým z nich.

Vypočítaná hodnota hash prostředí se porovnává s hodnotami hash v registru kontejneru pracovního prostoru. Pokud existuje shoda, obraz uložený v mezipaměti je načten a použit. Jinak se aktivuje sestavení image.

Následující diagram znázorňuje tři definice prostředí. Dva z nich mají různé názvy a verze, ale stejné základní image a balíčky Pythonu, což vede ke stejné hodnotě hash a odpovídající imagi uložené v mezipaměti. Třetí prostředí má různé balíčky a verze Pythonu, což vede k jiné imagi hash a mezipaměti.

Diagram ukládání do mezipaměti prostředí a imagí Dockeru

Skutečné image uložené v mezipaměti v registru kontejneru pracovního prostoru mají názvy podobné hodnotě hash, které azureml/azureml_e9607b2514b066c851012848913ba19f se zobrazují na konci.

Důležité

  • Pokud vytvoříte prostředí se závislostí odepnutého balíčku (například numpy), prostředí použije verzi balíčku, která byla k dispozici při vytvoření prostředí. Jakékoli budoucí prostředí, které používá odpovídající definici, používá původní verzi.

    Pokud chcete balíček aktualizovat, zadejte číslo verze, které vynutí opětovné sestavení image. Příkladem této změny je aktualizace numpy na numpy==1.18.1. Nainstalují se nové závislosti, včetně vnořených závislostí, a mohou narušit dříve fungující scénář.

  • Při použití neodepnuté základní image, jako je mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04 v definici prostředí, může dojít k opětovnému sestavení image při každé aktualizaci značky latest . Toto chování pomáhá obrázku přijímat nejnovější opravy a aktualizace systému.

Opravy obrázků

Společnost Microsoft opravuje výchozí image pro známé bezpečnostní zranitelnosti. Aktualizace podporovaných imagí se vydávají každých dva týdny a nejnovější verze image neobsahuje nepatchované chyby zabezpečení starší než 30 dnů. Opravené image se vydávají s novou neměnnou značkou a :latest značka se aktualizuje na nejnovější verzi opravené image.

Abyste mohli použít nově opravenou image, musíte aktualizovat přidružené prostředky služby Azure Machine Learning. Pokud například pracujete se spravovaným online koncovým bodem, musíte koncový bod znovu nasadit, aby se použila opravená image.

Pokud zadáte vlastní image, zodpovídáte za jejich aktualizaci a aktualizaci prostředků služby Azure Machine Learning, které je používají.

Další informace o základních imagích najdete na následujících odkazech: