Nastavení MLOps pomocí Azure DevOps
PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)Python SDK azure-ai-ml v2 (aktuální)
Azure Machine Učení umožňuje integraci s kanálem Azure DevOps a automatizovat životní cyklus strojového učení. Mezi operace, které můžete automatizovat, patří:
- Nasazení infrastruktury služby Azure Machine Učení
- Příprava dat (extrakce, transformace, operace načítání)
- Trénování modelů strojového učení se škálováním na vyžádání a vertikálním navýšením kapacity
- Nasazení modelů strojového učení jako veřejných nebo privátních webových služeb
- Monitorování nasazených modelů strojového učení (například pro analýzu výkonu)
V tomto článku se dozvíte o použití služby Azure Machine Učení k nastavení kompletního kanálu MLOps, který spouští lineární regresi, která předpovídá jízdné taxíkem v NYC. Kanál se skládá z komponent, z nichž každá obsluhuje různé funkce, které se dají zaregistrovat v pracovním prostoru, verzích a opakovaně používat s různými vstupy a výstupy. K rychlému nastavení projektu MLOps ve službě Azure Machine Učení použijete doporučenou architekturu Azure pro MLOps a akcelerátor řešení AzureMLOps (v2).
Tip
Před implementací jakéhokoli řešení doporučujeme porozumět některým z doporučených architektur Azure pro MLOps. Pro daný projekt strojového učení budete muset vybrat tu nejlepší architekturu.
Požadavky
- Předplatné Azure. Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet. Vyzkoušejte bezplatnou nebo placenou verzi služby Azure Machine Učení.
- Pracovní prostor služby Azure Machine Learning.
- Git běží na místním počítači.
- Organizace v Azure DevOps.
- Projekt Azure DevOps, který bude hostovat zdrojová úložiště a kanály.
- Rozšíření Terraform pro Azure DevOps , pokud ke zformování infrastruktury používáte Azure DevOps + Terraform
Poznámka:
Vyžaduje se Git verze 2.27 nebo novější. Další informace o instalaci příkazu Git najdete v části https://git-scm.com/downloads a výběru operačního systému.
Důležité
Příkazy rozhraní příkazového řádku v tomto článku byly testovány pomocí bashe. Pokud používáte jiné prostředí, může dojít k chybám.
Nastavení ověřování pomocí Azure a DevOps
Než budete moct nastavit projekt MLOps pomocí Učení Azure Machine, musíte nastavit ověřování pro Azure DevOps.
Vytvoření instančního objektu
Pro použití ukázky se vyžaduje vytvoření jednoho nebo dvou principů služby v závislosti na tom, na kolik prostředích chcete pracovat (Dev, Prod nebo Obojí). Tyto principy lze vytvořit pomocí jedné z následujících metod:
-
Tip
Při prvním spuštění Cloud Shellu se zobrazí výzva k vytvoření účtu úložiště pro Cloud Shell.
Pokud se zobrazí výzva, zvolte Bash jako prostředí použité v Cloud Shellu. Prostředí můžete také změnit v rozevíracím seznamu na horním navigačním panelu.
Zkopírujte následující příkazy Bash do počítače a aktualizujte proměnné projectName, subscriptionId a environment s hodnotami pro váš projekt. Pokud vytváříte vývojové i prodové prostředí, budete muset tento skript spustit jednou pro každé prostředí a vytvořit instanční objekt pro každé prostředí. Tento příkaz také udělí roli Přispěvatel instančnímu objektu v zadaném předplatném. To se vyžaduje, aby Služba Azure DevOps správně používala prostředky v tomto předplatném.
projectName="<your project name>" roleName="Contributor" subscriptionId="<subscription Id>" environment="<Dev|Prod>" #First letter should be capitalized servicePrincipalName="Azure-ARM-${environment}-${projectName}" # Verify the ID of the active subscription echo "Using subscription ID $subscriptionID" echo "Creating SP for RBAC with name $servicePrincipalName, with role $roleName and in scopes /subscriptions/$subscriptionId" az ad sp create-for-rbac --name $servicePrincipalName --role $roleName --scopes /subscriptions/$subscriptionId echo "Please ensure that the information created here is properly save for future use."
Zkopírujte upravené příkazy do Azure Shellu a spusťte je (Ctrl + Shift + v).
Po spuštění těchto příkazů se zobrazí informace související s instančním objektem. Uložte tyto informace do bezpečného umístění, použije se později v ukázce ke konfiguraci Azure DevOps.
{ "appId": "<application id>", "displayName": "Azure-ARM-dev-Sample_Project_Name", "password": "<password>", "tenant": "<tenant id>" }
Pokud vytváříte instanční objekty pro vývojová a prodová prostředí, zopakujte krok 3 . Pro tuto ukázku vytvoříme pouze jedno prostředí, což je Prod.
Po vytvoření instančních objektů zavřete Cloud Shell.
Nastavení služby Azure DevOps
Přejděte do Azure DevOps.
Vyberte vytvořit nový projekt (pojmenujte projekt
mlopsv2
pro účely tohoto kurzu).V projektu v části Project Nastavení (v levém dolním rohu stránky projektu) vyberte Service Připojení ions.
Vyberte Vytvořit službu Připojení ion.
Vyberte Azure Resource Manager, vyberte Další, vyberte Instanční objekt (ruční), vyberte Další a vyberte Předplatné na úrovni oboru.
- Název předplatného – Použijte název předplatného, ve kterém je uložený instanční objekt.
- ID předplatného – Jako ID předplatného použijte
subscriptionId
id předplatného, které jste použili v kroku 1 . - ID instančního objektu – Jako ID instančního objektu
appId
použijte výstup z kroku 1 . - Klíč instančního objektu
password
– Jako instanční klíč použijte výstup z kroku 1 . - ID tenanta – Použití výstupu
tenant
z kroku 1 jako ID tenanta
Pojmenujte připojení služby Azure-ARM-Prod.
Vyberte Udělit oprávnění pro přístup ke všem kanálům a pak vyberte Ověřit a Uložit.
Instalace Azure DevOps se úspěšně dokončila.
Nastavení zdrojového úložiště pomocí Azure DevOps
Otevřete projekt, který jste vytvořili v Azure DevOps.
Otevřete oddíl Úložiště a vyberte Importovat úložiště.
Zadejte https://github.com/Azure/mlops-v2-ado-demo do pole Adresa URL klonování. Výběr importu v dolní části stránky
Otevření nastavení projectu v dolní části levého navigačního podokna
V části Úložiště vyberte Úložiště. Vyberte úložiště, které jste vytvořili v předchozím kroku, vyberte kartu Zabezpečení .
V části Uživatelská oprávnění vyberte uživatele služby sestavení mlopsv2. Změňte oprávnění Přispívat oprávnění na Povolit a Vytvořit větev oprávnění povolit.
Otevřete oddíl Kanály v levém navigačním podokně a vyberte 3 svislé tečky vedle tlačítka Vytvořit kanály. Výběr možnosti Spravovat zabezpečení
V části Uživatelé vyberte účet služby sestavení mlopsv2 pro váš projekt. Změna oprávnění Upravit kanál buildu na Povolit
Poznámka:
Tím se dokončí část předpokladů a odpovídajícím způsobem může dojít k nasazení akcelerátoru řešení.
Nasazení infrastruktury prostřednictvím Azure DevOps
Tento krok nasadí trénovací kanál do pracovního prostoru Azure Machine Učení vytvořený v předchozích krocích.
Tip
Než si prohlédnete úložiště MLOps v2 a nasadíte infrastrukturu, ujistěte se, že rozumíte vzorům architektury akcelerátoru řešení. V příkladech použijete klasický typ projektu ML.
Spuštění kanálu infrastruktury Azure
Přejděte do úložiště
mlops-v2-ado-demo
a vyberte soubor config-infra-prod.yml .Důležité
Ujistěte se, že jste vybrali hlavní větev úložiště.
Tento konfigurační soubor používá obor názvů a přípony hodnoty názvů artefaktů k zajištění jedinečnosti. Aktualizujte následující část v konfiguraci podle svých představ.
namespace: [5 max random new letters] postfix: [4 max random new digits] location: eastus
Poznámka:
Pokud používáte hloubkovou Učení úlohu, jako je CV nebo NLP, ujistěte se, že je výpočetní výkon GPU dostupný ve vaší zóně nasazení.
Vyberte Potvrdit a nasdílení kódu, abyste tyto hodnoty získali do kanálu.
Přechod do části Kanály
Vyberte Vytvořit kanál.
Vyberte Git Azure Repos.
Vyberte úložiště, ve které jste naklonovali v předchozí části.
mlops-v2-ado-demo
Výběr existujícího souboru YAML služby Azure Pipelines
main
Vyberte větev a pakmlops/devops-pipelines/cli-ado-deploy-infra.yml
vyberte Pokračovat.Spuštění kanálu; Dokončení bude trvat několik minut. Kanál by měl vytvořit následující artefakty:
- Skupina prostředků pro váš pracovní prostor, včetně účtu úložiště, registru kontejnerů, Přehledy aplikací, služby Keyvault a samotného pracovního prostoru Učení Azure.
- V pracovním prostoru je také vytvořený výpočetní cluster.
Teď je nasazená infrastruktura pro váš projekt MLOps.
Poznámka:
Upozornění typu Nejde přesunout a znovu použít existující úložiště k požadovanému umístění se může ignorovat.
Ukázkový scénář trénování a nasazení
Akcelerátor řešení obsahuje kód a data pro ukázkový kompletní kanál strojového učení, který spouští lineární regresi, která předpovídá jízdu taxíkem v NYC. Kanál se skládá z komponent, z nichž každá obsluhuje různé funkce, které se dají zaregistrovat v pracovním prostoru, verzích a opakovaně používat s různými vstupy a výstupy. Ukázkové kanály a pracovní postupy pro scénáře Počítačové zpracování obrazu a NLP budou mít různé kroky a kroky nasazení.
Tento trénovací kanál obsahuje následující kroky:
Příprava dat
- Tato komponenta přebírá několik datových sad taxi (žluté a zelené) a slučuje/filtruje data a připraví datové sady pro trénování/val a vyhodnocení.
- Vstup: Místní data v souboru ./data/ (více souborů .csv)
- Výstup: Jedna připravená datová sada (.csv) a trénování/val/testování datových sad
Trénování modelu
- Tato komponenta trénuje lineární regresor s trénovací sadou.
- Vstup: Trénovací datová sada
- Výstup: Trénovaný model (formát pickle)
Vyhodnocení modelu
- Tato komponenta používá natrénovaný model k predikci jízdného taxislužby na testovací sadě.
- Vstup: Model ML a testovací datová sada
- Výstup: Výkon modelu a příznak nasazení bez ohledu na to, jestli se má nasadit nebo ne.
- Tato komponenta porovnává výkon modelu se všemi předchozími nasazenými modely v nové testovací datové sadě a rozhoduje, jestli se má model zvýšit nebo ne do produkčního prostředí. Podpora modelu do produkčního prostředí probíhá registrací modelu v pracovním prostoru AML.
Registrace modelu
- Tato komponenta vyhodnocí model na základě toho, jak přesné předpovědi jsou v testovací sadě.
- Vstup: Natrénovaný model a příznak nasazení.
- Výstup: Registrovaný model ve službě Azure Machine Učení
Nasazení kanálu trénování modelu
Přechod na kanály ADO
Vyberte Nový kanál.
Vyberte Git Azure Repos.
Vyberte úložiště, ve které jste naklonovali v předchozí části.
mlopsv2
Výběr existujícího souboru YAML služby Azure Pipelines
Vyberte
main
jako větev a zvolte/mlops/devops-pipelines/deploy-model-training-pipeline.yml
a pak vyberte Pokračovat.Uložení a spuštění kanálu
Poznámka:
V tomto okamžiku je infrastruktura nakonfigurovaná a nasadí se smyčka vytváření prototypů architektury MLOps. Jste připraveni přejít na náš natrénovaný model do produkčního prostředí.
Nasazení natrénovaného modelu
Tento scénář zahrnuje předem připravené pracovní postupy pro dva přístupy k nasazení natrénovaného modelu, dávkového vyhodnocování nebo nasazení modelu do koncového bodu pro bodování v reálném čase. Spuštěním obou těchto pracovních postupů můžete otestovat výkon modelu v pracovním prostoru Azure ML. V tomto příkladu budeme používat bodování v reálném čase.
Nasazení koncového bodu modelu ML
Přechod na kanály ADO
Vyberte Nový kanál.
Vyberte Git Azure Repos.
Vyberte úložiště, ve které jste naklonovali v předchozí části.
mlopsv2
Výběr existujícího souboru YAML služby Azure Pipelines
Vyberte
main
jako větev a zvolte Spravovaný online koncový bod/mlops/devops-pipelines/deploy-online-endpoint-pipeline.yml
a pak vyberte Pokračovat.Názvy online koncových bodů musí být jedinečné, proto přejděte
taxi-online-$(namespace)$(postfix)$(environment)
na jiný jedinečný název a pak vyberte Spustit. Pokud nedojde k selhání, nemusíte výchozí nastavení měnit.Důležité
Pokud se spuštění nezdaří kvůli existujícímu názvu online koncového bodu, znovu vytvořte kanál, jak je popsáno výše, a změňte [název_koncového_bodu] na [název_koncového_bodu (náhodné číslo)]
Po dokončení spuštění uvidíte výstup podobný následujícímu obrázku:
Pokud chcete toto nasazení otestovat, přejděte v pracovním prostoru AzureML na kartu Koncové body , vyberte koncový bod a klikněte na kartu Test . K otestování koncového bodu můžete použít ukázková vstupní data umístěná v klonovaném úložišti
/data/taxi-request.json
.
Vyčištění prostředků
- Pokud kanál dál nepoužíváte, odstraňte projekt Azure DevOps.
- Na webu Azure Portal odstraňte skupinu prostředků a instanci služby Azure Machine Učení.
Další kroky
- Instalace a nastavení sady Python SDK v2
- Instalace a nastavení Python CLI v2
- Akcelerátor řešení Azure MLOps (v2) na GitHubu
- Školicí kurz o MLOps pomocí strojového Učení
- Další informace o Službě Azure Pipelines s využitím služby Azure Machine Učení
- Další informace o GitHub Actions s využitím služby Azure Machine Učení
- Nasazení MLOps v Azure za méně než hodinu – video akcelerátoru Community MLOps V2