Sdílet prostřednictvím


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 Learning 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 Learning
  • 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 Learning k nastavení kompletního kanálu MLOps, který spouští lineární regresi pro predikci jízdy 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 Learning 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 Learning.
  • 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í služby Azure Machine Learning, 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:

  1. Spusťte Azure Cloud Shell.

    Tip

    Při prvním spuštění Cloud Shellu se zobrazí výzva k vytvoření účtu úložiště pro Cloud Shell.

  2. 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.

    Snímek obrazovky s rozevíracím seznamem prostředí Cloud Shell

  3. 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."
    
  4. Zkopírujte upravené příkazy do Azure Shellu a spusťte je (Ctrl + Shift + v).

  5. 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>"
    }
    
  6. 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.

  7. Po vytvoření instančních objektů zavřete Cloud Shell.

Nastavení služby Azure DevOps

  1. Přejděte do Azure DevOps.

  2. Vyberte vytvořit nový projekt (pojmenujte projekt mlopsv2 pro účely tohoto kurzu).

    Snímek obrazovky s projektem ADO

  3. V projektu v části Nastavení projektu (v levém dolním rohu stránky projektu) vyberte Připojení služeb.

  4. Vyberte Vytvořit připojení služby.

    Snímek obrazovky s tlačítkem Připojení k nové službě ADO

  5. 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
  6. Pojmenujte připojení služby Azure-ARM-Prod.

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

  1. Otevřete projekt, který jste vytvořili v Azure DevOps.

  2. Otevřete oddíl Úložiště a vyberte Importovat úložiště.

    Snímek obrazovky s úložištěm importu Azure DevOps poprvé

  3. Zadejte https://github.com/Azure/mlops-v2-ado-demo do pole Adresa URL klonování. Výběr importu v dolní části stránky

    Snímek obrazovky s ukázkovým úložištěm MLOps importem Azure DevOps

  4. Otevření nastavení projectu v dolní části levého navigačního podokna

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

  6. 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. Snímek obrazovky s oprávněními Azure DevOps

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

    Snímek obrazovky se zabezpečením kanálu

  8. V části Uživatelé vyberte účet služby sestavení mlopsv2 pro váš projekt. Změna oprávnění Upravit kanál buildu na Povolit

    Snímek obrazovky s možností Přidat zabezpečení

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 Learning vytvořeného 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

  1. Přejděte do úložiště mlops-v2-ado-demoa vyberte soubor config-infra-prod.yml .

    Důležité

    Ujistěte se, že jste vybrali hlavní větev úložiště.

    Snímek obrazovky s úložištěm v ADO

    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 úlohu hlubokého učení, jako je CV nebo NLP, ujistěte se, že je výpočetní prostředí GPU dostupné ve vaší zóně nasazení.

  2. Vyberte Potvrdit a nasdílení kódu, abyste tyto hodnoty získali do kanálu.

  3. Přechod do části Kanály

    Snímek obrazovky s kanály ADO

  4. Vyberte Vytvořit kanál.

  5. Vyberte Git Azure Repos.

    Snímek obrazovky S kódem ADO Where

  6. Vyberte úložiště, ve které jste naklonovali v předchozí části. mlops-v2-ado-demo

  7. Výběr existujícího souboru YAML služby Azure Pipelines

    Snímek obrazovky se stránkou kanálu Azure DevOps v kroku konfigurace

  8. main Vyberte větev a pak mlops/devops-pipelines/cli-ado-deploy-infra.ymlvyberte Pokračovat.

  9. 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ě, služby Container Registry, Application Insights, keyvaultu a samotného pracovního prostoru služby Azure Machine Learning.
    • V pracovním prostoru je také vytvořený výpočetní cluster.
  10. Teď je nasazená infrastruktura pro váš projekt MLOps. Snímek obrazovky s kanálem infra kanálu ADO

    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 .csv souborů)
  • 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 Learning

Nasazení kanálu trénování modelu

  1. Přechod na kanály ADO

    Snímek obrazovky s kanály ADO

  2. Vyberte Nový kanál.

    Snímek obrazovky s tlačítkem Nový kanál ADO

  3. Vyberte Git Azure Repos.

    Snímek obrazovky S kódem ADO Where

  4. Vyberte úložiště, ve které jste naklonovali v předchozí části. mlopsv2

  5. Výběr existujícího souboru YAML služby Azure Pipelines

    Snímek obrazovky se stránkou kanálu ADO v kroku konfigurace

  6. Vyberte main jako větev a zvolte /mlops/devops-pipelines/deploy-model-training-pipeline.ymla pak vyberte Pokračovat.

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

  1. Přechod na kanály ADO

    Snímek obrazovky s kanály ADO

  2. Vyberte Nový kanál.

    Snímek obrazovky s tlačítkem Nový kanál ADO pro koncový bod

  3. Vyberte Git Azure Repos.

    Snímek obrazovky S kódem ADO Where

  4. Vyberte úložiště, ve které jste naklonovali v předchozí části. mlopsv2

  5. Výběr existujícího souboru YAML služby Azure Pipelines

    Snímek obrazovky se stránkou kanálu Azure DevOps v kroku konfigurace

  6. Vyberte main jako větev a zvolte Spravovaný online koncový bod /mlops/devops-pipelines/deploy-online-endpoint-pipeline.yml a pak vyberte Pokračovat.

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

    Snímek obrazovky se skriptem nasazení služby Azure DevOps batch

    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)]

  8. Po dokončení spuštění uvidíte výstup podobný následujícímu obrázku:

    Snímek obrazovky se stránkou výsledků dávkového spuštění kanálu ADO

  9. 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ů

  1. Pokud kanál dál nepoužíváte, odstraňte projekt Azure DevOps.
  2. Na webu Azure Portal odstraňte skupinu prostředků a instanci služby Azure Machine Learning.

Další kroky