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

Prostředí Azure Machine Learning jsou zapouzdřením prostředí, ve kterém probíhá trénování strojového učení. Určují balíčky Pythonu a nastavení softwaru pro trénovací a bodovací skripty. Prostředí jsou spravované a správě verzí entit v pracovním prostoru Machine Learning, které umožňují reprodukovatelné, auditovatelné a přenosné pracovní postupy strojového učení napříč různými cíli výpočetních prostředků.

Objekt můžete použít 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í je možné rozdělit do tří kategorií: kurátorovaná, spravovaná uživatelem a systémově 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. Účelem použití tak, jak je, 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í. Kurátorovaná prostředí jsou hostovaná ve službě AzureML Registry. Ú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 AzureML.

Systémově spravovaná prostředí používáte, 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 z klientů, jako jsou sada Azure Machine Learning Python SDK, Azure Machine Learning CLI, stránka Prostředí v studio Azure Machine Learning a rozšíření VS Code. Každý klient umožňuje v případě potřeby 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í se také snadno spravují prostřednictvím pracovního prostoru, což vám umožní:

  • 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í.

Anonymní prostředí se při odeslání experimentu automaticky zaregistrují ve vašem pracovním prostoru. Nebudou uvedené, ale mohou být načteny podle verze.

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, aby je bylo možné 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. AzureML ve výchozím nastavení spravuje cíl sestavení image v dostupné kvótě výpočetních prostředků bez serveru 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 AzureML 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 ručně vytvoříte instanci prostředí, Azure Machine Learning vytvoří image pro zadanou specifikaci. Image výsledku se ukládá do mezipaměti v instanci registru kontejneru přidružené k pracovnímu prostoru. Kurátorovaná prostředí jsou už uložená v mezipaměti ve službě AzureML Registry. Na začátku spuštění úlohy se image načte výpočetním cílem 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 AzureML neexistuje, vytvoří se nová image. V případě systémových spravovaných prostředí se 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í.

V případě prostředí spravovaných uživatelem se kontext Dockeru sestaví tak, jak je. V tomto případě zodpovídáte za instalaci všech balíčků Pythonu, a to jejich zahrnutím do základní image nebo zadáním vlastních kroků 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í a porovná ji 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

Hodnota hash není ovlivněna názvem nebo verzí prostředí. 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, ale změní výslednou hodnotu hash. Změna pořadí závislostí nebo kanálů v prostředí změní také hodnotu hash a bude vyžadovat nové sestavení image. Podobně jakákoli změna kurátorovaných prostředí vede k vytvoření vlastního prostředí.

Poznámka:

Nebudete moct 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 v registru kontejneru pracovního prostoru. Pokud existuje shoda, image uložená v mezipaměti se načítá a použije, 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, bude používat původní verzi.

    Pokud chcete balíček aktualizovat, zadejte číslo verze, které vynutí opětovné sestavení image. Příklad by se změnil numpy na numpy==1.18.1. Nainstalují se nové závislosti včetně vnořených závislostí a můžou 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 latest každé aktualizaci značky. To pomáhá obrázku přijímat nejnovější opravy a aktualizace systému.

Opravy obrázků

Microsoft zodpovídá za opravy základních imagí kvůli známým ohrožením zabezpečení. Aktualizace podporovaných imagí se vydávají každých dva týdny, přičemž nejnovější verze image neobsahuje žádné 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:

Další kroky