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:

  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.

    Screenshot of the cloud shell environment dropdown.

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

    Screenshot of ADO Project.

  3. V projektu v části Project Nastavení (v levém dolním rohu stránky projektu) vyberte Service Připojení ions.

  4. Vyberte Vytvořit službu Připojení ion.

    Screenshot of ADO New Service connection button.

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

    Screenshot of Azure DevOps import repo first time.

  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

    Screenshot of Azure DevOps import MLOps demo repo.

  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. Screenshot of Azure DevOps permissions.

  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í

    Screenshot of Pipeline security.

  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

    Screenshot of Add security.

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

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

    Screenshot of Repo in 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 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í.

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

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

    Screenshot of ADO Pipelines.

  4. Vyberte Vytvořit kanál.

  5. Vyberte Git Azure Repos.

    Screenshot of ADO Where's your code.

  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

    Screenshot of Azure DevOps Pipeline page on configure step.

  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ě, 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.
  10. Teď je nasazená infrastruktura pro váš projekt MLOps. Screenshot of ADO Infra Pipeline screen.

    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

  1. Přechod na kanály ADO

    Screenshot of ADO Pipelines.

  2. Vyberte Nový kanál.

    Screenshot of ADO New Pipeline button.

  3. Vyberte Git Azure Repos.

    Screenshot of ADO Where's your code.

  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

    Screenshot of ADO Pipeline page on configure step.

  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

    Screenshot of ADO Pipelines.

  2. Vyberte Nový kanál.

    Screenshot of ADO New Pipeline button for endpoint.

  3. Vyberte Git Azure Repos.

    Screenshot of ADO Where's your code.

  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

    Screenshot of Azure DevOps Pipeline page on configure step.

  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.

    Screenshot of Azure DevOps batch deploy script.

    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:

    Screenshot of ADO Pipeline batch run result page.

  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 Učení.

Další kroky