Nasazení balíčků modelů do online koncových bodů (Preview)
Balíček modelu je funkce ve službě Azure Machine Learning, 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 Azure Machine Learning. 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 Learning.
Požadavky
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 Learning.
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 Služby Azure Machine Learning nebo vlastní roli. Další informace najdete v tématu Správa přístupu k pracovnímu prostoru Azure Machine Learning.
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řipojte se k pracovnímu prostoru Azure Machine Learning, ve kterém 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 Learning 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. V případě modelů MLflow azure Machine Learning 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ů.
Balíčky modelů vyžadují, aby byl model zaregistrovaný v pracovním prostoru nebo v registru služby Azure Machine Learning. 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ý.
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.
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. V případě modelů MLflow je základní prostředí volitelné, v takovém případě ho Azure Machine Learning 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
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
Spusťte operaci balíčku modelu:
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 Learning. Pokud chcete nasadit balíček do online koncového bodu, postupujte takto:
Vyberte název koncového bodu pro hostování nasazení balíčku a vytvořte ho:
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.
Spusťte nasazení:
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] ] }
Odeslání požadavku do koncového bodu