Použití vlastního kontejneru k nasazení modelu do online koncového bodu
PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)Python SDK azure-ai-ml v2 (aktuální)
Zjistěte, jak pomocí vlastního kontejneru nasadit model do online koncového bodu ve službě Azure Machine Learning.
Vlastní nasazení kontejnerů můžou používat jiné webové servery než výchozí server Python Flask používaný službou Azure Machine Learning. Uživatelé těchto nasazení můžou stále využívat integrované monitorování, škálování, upozorňování a ověřování služby Azure Machine Learning.
Následující tabulka uvádí různé příklady nasazení, které používají vlastní kontejnery, jako jsou TensorFlow Serving, TorchServe, Triton Inference Server, balíček Plumber R a minimální image odvozování služby Azure Machine Learning.
Příklad | Skript (CLI) | Popis |
---|---|---|
minimal/multimodel | deploy-custom-container-minimal-multimodel | Nasazení více modelů do jednoho nasazení rozšířením minimální image odvozování služby Azure Machine Learning |
minimal/single-model | deploy-custom-container-minimal-single-model | Nasaďte jeden model rozšířením minimální image odvozování služby Azure Machine Learning. |
mlflow/multideployment-scikit | deploy-custom-container-mlflow-multideployment-scikit | Nasaďte dva modely MLFlow s různými požadavky Pythonu na dvě samostatná nasazení za jedním koncovým bodem pomocí minimální image odvozování ve službě Azure Machine Learning. |
r/multimodel-plumber | deploy-custom-container-r-multimodel-plumber | Nasazení tří regresních modelů do jednoho koncového bodu pomocí balíčku Plumber R |
tfserving /half-plus-two | deploy-custom-container-tfserving-half-plus-two | Nasaďte model Half Plus Two pomocí vlastního kontejneru TensorFlow obsluhující vlastní kontejner pomocí standardního procesu registrace modelu. |
tfserving /half-plus-two-integrated | deploy-custom-container-tfserving-half-plus-two-integrated | Nasaďte model Half Plus Two pomocí tensorFlow obsluhující vlastní kontejner s modelem integrovaným do image. |
torchserve / hustá síť | deploy-custom-container-torchserve-densenet | Nasaďte jeden model pomocí vlastního kontejneru TorchServe. |
torchserve/huggingface-textgen | deploy-custom-container-torchserve-huggingface-textgen | Nasaďte modely Hugging Face do online koncového bodu a postupujte podle příkladu Hugging Face Transformers TorchServe. |
triton/single-model | deploy-custom-container-triton-single-model | Nasazení modelu Triton pomocí vlastního kontejneru |
Tento článek se zaměřuje na obsluhu modelu TensorFlow s obsluhou TensorFlow (TF).
Upozorňující
Microsoft nemusí pomoct s řešením problémů způsobených vlastní imagí. Pokud narazíte na problémy, můžete být požádáni o použití výchozí image nebo jedné z imagí, které Microsoft poskytuje, abyste zjistili, jestli je problém specifický pro váš obrázek.
Požadavky
Než budete postupovat podle kroků v tomto článku, ujistěte se, že máte následující požadavky:
Pracovní prostor služby Azure Machine Learning. Pokud ho nemáte, vytvořte ho pomocí kroků v rychlém startu : Vytvoření článku o prostředcích pracovního prostoru.
Azure CLI a
ml
rozšíření nebo sada Azure Machine Learning Python SDK v2:Pokud chcete nainstalovat Azure CLI a rozšíření, přečtěte si téma Instalace, nastavení a použití rozhraní příkazového řádku (v2).
Důležité
Příklady rozhraní příkazového řádku v tomto článku předpokládají, že používáte prostředí Bash (nebo kompatibilní). Například ze systému Linux nebo Subsystém Windows pro Linux.
K instalaci sady Python SDK v2 použijte následující příkaz:
pip install azure-ai-ml azure-identity
Pokud chcete aktualizovat existující instalaci sady SDK na nejnovější verzi, použijte následující příkaz:
pip install --upgrade azure-ai-ml azure-identity
Další informace najdete v tématu Instalace sady Python SDK v2 pro Azure Machine Learning.
Vy nebo instanční objekt, který používáte, musíte mít přístup přispěvatele ke skupině prostředků Azure, která obsahuje váš pracovní prostor. Takovou skupinu prostředků máte, pokud jste pracovní prostor nakonfigurovali pomocí článku rychlý start.
Pokud chcete nasadit místně, musíte mít modul Docker spuštěný místně. Tento krok se důrazně doporučuje. Pomáhá ladit problémy.
Stažení zdrojového kódu
Pokud chcete postupovat podle tohoto kurzu, naklonujte zdrojový kód z GitHubu.
git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples/cli
Inicializace proměnných prostředí
Definování proměnných prostředí:
BASE_PATH=endpoints/online/custom-container/tfserving/half-plus-two
AML_MODEL_NAME=tfserving-mounted
MODEL_NAME=half_plus_two
MODEL_BASE_PATH=/var/azureml-app/azureml-models/$AML_MODEL_NAME/1
Stažení modelu TensorFlow
Stáhněte a rozbalte model, který rozdělí vstup dvěma a přidá 2 do výsledku:
wget https://aka.ms/half_plus_two-model -O $BASE_PATH/half_plus_two.tar.gz
tar -xvf $BASE_PATH/half_plus_two.tar.gz -C $BASE_PATH
Místní spuštění image služby TF Pro otestování, že funguje
Pomocí Dockeru spusťte image místně pro účely testování:
docker run --rm -d -v $PWD/$BASE_PATH:$MODEL_BASE_PATH -p 8501:8501 \
-e MODEL_BASE_PATH=$MODEL_BASE_PATH -e MODEL_NAME=$MODEL_NAME \
--name="tfserving-test" docker.io/tensorflow/serving:latest
sleep 10
Zkontrolujte, že na obrázek můžete odesílat žádosti o živé a bodovací hodnocení.
Nejprve zkontrolujte, jestli je kontejner aktivní, což znamená, že proces uvnitř kontejneru stále běží. Měla by se zobrazit odpověď 200 (OK).
curl -v http://localhost:8501/v1/models/$MODEL_NAME
Pak zkontrolujte, že můžete získat předpovědi o neoznačeném datech:
curl --header "Content-Type: application/json" \
--request POST \
--data @$BASE_PATH/sample_request.json \
http://localhost:8501/v1/models/$MODEL_NAME:predict
Zastavení obrázku
Teď, když jste testovali místně, zastavte image:
docker stop tfserving-test
Nasazení online koncového bodu do Azure
Dále nasaďte online koncový bod do Azure.
Vytvoření souboru YAML pro koncový bod a nasazení
Cloudové nasazení můžete nakonfigurovat pomocí YAML. Podívejte se na ukázkový YAML pro tento příklad:
tfserving-endpoint.yml
$schema: https://azuremlsdk2.blob.core.windows.net/latest/managedOnlineEndpoint.schema.json
name: tfserving-endpoint
auth_mode: aml_token
tfserving-deployment.yml
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: tfserving-deployment
endpoint_name: tfserving-endpoint
model:
name: tfserving-mounted
version: {{MODEL_VERSION}}
path: ./half_plus_two
environment_variables:
MODEL_BASE_PATH: /var/azureml-app/azureml-models/tfserving-mounted/{{MODEL_VERSION}}
MODEL_NAME: half_plus_two
environment:
#name: tfserving
#version: 1
image: docker.io/tensorflow/serving:latest
inference_config:
liveness_route:
port: 8501
path: /v1/models/half_plus_two
readiness_route:
port: 8501
path: /v1/models/half_plus_two
scoring_route:
port: 8501
path: /v1/models/half_plus_two:predict
instance_type: Standard_DS3_v2
instance_count: 1
V tomto parametru YAML/Python je potřeba si všimnout několika důležitých konceptů:
Trasa připravenosti vs. trasa aktivity
Server HTTP definuje cesty pro živou i připravenost. Trasa liveness slouží ke kontrole, jestli je server spuštěný. Trasa připravenosti se používá ke kontrole, jestli je server připravený k práci. Při odvozování strojového učení může server odpovědět 200 OK na žádost o liveness před načtením modelu. Server může na požadavek připravenosti odpovědět 200 OK až po načtení modelu do paměti.
Další informace o testech aktivity a připravenosti najdete v dokumentaci k Kubernetes.
Všimněte si, že toto nasazení používá stejnou cestu pro živou i připravenost, protože služba TF Obsluha definuje pouze trasu aktivity.
Vyhledání připojeného modelu
Když model nasadíte jako online koncový bod, Azure Machine Learning připojí váš model ke koncovému bodu. Připojení modelu umožňuje nasadit nové verze modelu, aniž byste museli vytvářet novou image Dockeru. Ve výchozím nastavení by se model zaregistrovaný s názvem foo a verzí 1 nacházel v následující cestě uvnitř nasazeného kontejneru: /var/azureml-app/azureml-models/foo/1
Pokud máte například adresářovou strukturu /azureml-examples/cli/endpoints/online/custom-container na místním počítači, kde má model název half_plus_two:
A tfserving-deployment.yml obsahuje:
model:
name: tfserving-mounted
version: 1
path: ./half_plus_two
Váš model se pak bude ve vašem nasazení nacházet v umístění /var/azureml-app/azureml-models/tfserving-deployment/1 :
Volitelně můžete nakonfigurovat model_mount_path
. Umožňuje změnit cestu, ve které je model připojený.
Důležité
Musí model_mount_path
to být platná absolutní cesta v Linuxu (operační systém image kontejneru).
V tfserving-deployment.yml můžete model_mount_path
mít například parametr:
name: tfserving-deployment
endpoint_name: tfserving-endpoint
model:
name: tfserving-mounted
version: 1
path: ./half_plus_two
model_mount_path: /var/tfserving-model-mount
.....
Pak se váš model ve vašem nasazení nachází v umístění /var/tfserving-model-mount/tfserving-deployment/1 . Všimněte si, že už není v rámci azureml-app/azureml-models, ale pod zadanou cestou připojení:
Vytvoření koncového bodu a nasazení
Teď, když rozumíte tomu, jak byl YAML vytvořen, vytvořte koncový bod.
az ml online-endpoint create --name tfserving-endpoint -f endpoints/online/custom-container/tfserving-endpoint.yml
Vytvoření nasazení může trvat několik minut.
az ml online-deployment create --name tfserving-deployment -f endpoints/online/custom-container/tfserving-deployment.yml --all-traffic
Vyvolání koncového bodu
Po dokončení nasazení se podívejte, jestli můžete provést žádost o bodování do nasazeného koncového bodu.
RESPONSE=$(az ml online-endpoint invoke -n $ENDPOINT_NAME --request-file $BASE_PATH/sample_request.json)
Odstranění koncového bodu
Teď, když jste úspěšně získali skóre pomocí koncového bodu, můžete ho odstranit:
az ml online-endpoint delete --name tfserving-endpoint