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

Prostředí Azure Machine Učení 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 verze entit v pracovním prostoru machine Učení, které umožňují reprodukovatelné, auditovatelné a přenosné pracovní postupy strojového učení v různých cílových výpočetních prostředcích.

Objekt můžete použít Environment k:

  • Vyvíjejte trénovací skript.
  • Pro trénování modelů ve velkém měřítku znovu použijte stejné prostředí ve službě Azure Machine Učení Compute.
  • 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 of an environment in machine learning workflow

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 Učení 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 Azure Machine Učení Python SDK, Azure Machine Učení 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 Učení 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 Učení 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 Učení 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 Učení 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 of environment caching and Docker images

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.

Pokud chcete použít nově opravenou image, musíte aktualizovat přidružené prostředky azure machine Učení. 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ů Učení azure machine, které je používají.

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

Další kroky