Nasazení balíčků modelů do online koncových bodů (Preview)

Balíček modelu je funkce ve službě Azure Machine Učení, která umožňuje shromažďovat všechny závislosti potřebné k nasazení modelu strojového učení na obslužnou platformu. Vytváření balíčků před nasazením modelů poskytuje robustní a spolehlivé nasazení a efektivnější pracovní postup MLOps. Balíčky je možné přesouvat mezi pracovními prostory a dokonce i mimo službu Azure Machine Učení. Další informace o balíčcích modelu (Preview)

Důležité

Tato funkce je v současné době ve verzi Public Preview. Tato verze Preview je poskytována bez smlouvy o úrovni služeb a nedoporučujeme ji pro produkční úlohy. Některé funkce se nemusí podporovat nebo mohou mít omezené možnosti.

Další informace najdete v dodatečných podmínkách použití pro verze Preview v Microsoft Azure.

V tomto článku se dozvíte, jak zabalit model a nasadit ho do online koncového bodu ve službě Azure Machine Učení.

Předpoklady

Než budete postupovat podle kroků v tomto článku, ujistěte se, že máte následující 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. Pokud ho nemáte, vytvořte si ho pomocí kroků v článku Správa pracovních prostorů.

  • Řízení přístupu na základě role v Azure (Azure RBAC) slouží k udělení přístupu k operacím ve službě Azure Machine Learning. Pokud chcete provést kroky v tomto článku, musí mít váš uživatelský účet přiřazenou roli vlastníka nebo přispěvatele pro pracovní prostor azure machine Učení nebo vlastní roli. Další informace najdete v tématu Správa přístupu k pracovnímu prostoru Azure Machine Učení.

O tomto příkladu

V tomto příkladu zabalíte model vlastního typu a nasadíte ho do online koncového bodu pro odvozování online.

Příklad v tomto článku vychází z ukázek kódu obsažených v úložišti azureml-examples . Pokud chcete příkazy spustit místně, aniž byste museli kopírovat nebo vkládat YAML a další soubory, nejprve naklonujte úložiště a pak změňte adresáře do složky:

git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples/cli

Tato část používá příklad v koncových bodech složky /online/deploy-packages/custom-model.

Připojení k pracovnímu prostoru

Připojení do pracovního prostoru Azure Machine Učení, kde budete pracovat.

az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>

Zabalení modelu

Balíčky modelů můžete vytvořit explicitně, abyste mohli řídit, jak se operace balení provádí. Balíčky modelu můžete vytvořit zadáním následujících:

  • Model, který se má zabalit: Každý balíček modelu může obsahovat pouze jeden model. Azure Machine Učení nepodporuje balení více modelů ve stejném balíčku modelu.
  • Základní prostředí: Prostředí slouží k označení základní image a v balíčcích Pythonu závislosti, které váš model potřebuje. U modelů MLflow azure Machine Učení automaticky vygeneruje základní prostředí. U vlastních modelů je potřeba ho zadat.
  • Obslužná technologie: Odvozovací zásobník použitý ke spuštění modelu.

Tip

Pokud je vaším modelem MLflow, nemusíte balíček modelu vytvářet ručně. Před nasazením můžeme balíčky automaticky zabalit. Viz Nasazení modelů MLflow do online koncových bodů.

  1. Balíčky modelů vyžadují, aby byl model zaregistrovaný v pracovním prostoru nebo v registru Učení Azure Machine. V tomto příkladu už máte místní kopii modelu v úložišti, takže potřebujete model publikovat jenom do registru v pracovním prostoru. Tuto část můžete přeskočit, pokud už je model, který se pokoušíte nasadit, zaregistrovaný.

    MODEL_NAME='sklearn-regression'
    MODEL_PATH='model'
    az ml model create --name $MODEL_NAME --path $MODEL_PATH --type custom_model
    
  2. Náš model vyžaduje, aby se spustily následující balíčky a máme je zadané v souboru conda:

    conda.yaml

    name: model-env
    channels:
      - conda-forge
    dependencies:
      - python=3.9
      - numpy=1.23.5
      - pip=23.0.1
      - scikit-learn=1.2.2
      - scipy=1.10.1
      - xgboost==1.3.3
    

    Poznámka:

    Všimněte si, jak jsou v conda YAML uvedené pouze požadavky modelu. Všechny balíčky vyžadované pro server odvozování budou zahrnuty operací balíčku.

    Tip

    Pokud váš model vyžaduje balíčky hostované v privátních informačních kanálech, můžete balíček nakonfigurovat tak, aby je zahrnoval. Přečtěte si balíček modelu, který má závislosti v privátních kanálech Pythonu.

  3. Vytvořte základní prostředí, které obsahuje požadavky na model a základní image. V základním prostředí jsou uvedené pouze závislosti vyžadované modelem. Pro modely MLflow je základní prostředí volitelné, v takovém případě je Azure Machine Učení automaticky vygeneruje za vás.

    Vytvořte základní definici prostředí:

    sklearn-regression-env.yml

    $schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
    name: sklearn-regression-env
    image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu22.04
    conda_file: conda.yaml
    description: An environment for models built with XGBoost and Scikit-learn.
    

    Pak vytvořte prostředí následujícím způsobem:

    az ml environment create -f environment/sklearn-regression-env.yml
    
  4. Vytvořte specifikaci balíčku:

    package-moe.yml

    $schema: http://azureml/sdk-2-0/ModelVersionPackage.json
    base_environment_source:
        type: environment_asset
        resource_id: azureml:sklearn-regression-env:1
    target_environment: sklearn-regression-online-pkg
    inferencing_server: 
        type: azureml_online
        code_configuration:
          code: src
          scoring_script: score.py
    
  5. Spusťte operaci balíčku modelu:

    az ml model package -n $MODEL_NAME -v $MODEL_VERSION --file package-moe.yml
    
  6. Výsledkem operace balíčku je prostředí.

Nasazení balíčku modelu

Balíčky modelů je možné nasadit přímo do online koncových bodů ve službě Azure Machine Učení. Pokud chcete nasadit balíček do online koncového bodu, postupujte takto:

  1. Vyberte název koncového bodu pro hostování nasazení balíčku a vytvořte ho:

    ENDPOINT_NAME="sklearn-regression-online"
    
    az ml online-endpoint create -n $ENDPOINT_NAME
    
  2. Vytvořte nasazení pomocí balíčku. Všimněte si, jak environment je nakonfigurovaný balíček, který jste vytvořili.

    deployment.yml

    $schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
    name: with-package
    endpoint_name: hello-packages
    environment: azureml:sklearn-regression-online-pkg@latest
    instance_type: Standard_DS3_v2
    instance_count: 1
    

    Tip

    Všimněte si, že v tomto příkladu nezadáte model ani bodovací skript. všechny jsou součástí balíčku.

  3. Spusťte nasazení:

    az ml online-deployment create -f deployment.yml
    
  4. V tomto okamžiku je nasazení připravené k použití. Způsob práce můžete otestovat vytvořením ukázkového souboru požadavku:

    sample-request.json

    {
        "data": [
            [1,2,3,4,5,6,7,8,9,10], 
            [10,9,8,7,6,5,4,3,2,1]
        ]
    }
    
  5. Odeslání požadavku do koncového bodu

    az ml online-endpoint invoke --name $ENDPOINT_NAME --deployment with-package -r sample-request.json
    

Další krok