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 Učení.
Vlastní nasazení kontejnerů můžou používat jiné webové servery než výchozí server Python Flask používaný službou Azure Machine Učení. Uživatelé těchto nasazení můžou i nadále využívat integrované monitorování, škálování, upozorňování a ověřování služby Azure Machine Učení.
Následující tabulka uvádí různé příklady nasazení, které používají vlastní kontejnery, jako je TensorFlow Serving, TorchServe, Triton Inference Server, balíček Plumber R a image Azure Machine Učení Inference Minimal.
Příklad | Skript (CLI) | Popis |
---|---|---|
minimal/multimodel | deploy-custom-container-minimal-multimodel | Nasazením více modelů do jednoho nasazení rozšířením image Minimální odvozování Učení počítače Azure. |
minimal/single-model | deploy-custom-container-minimal-single-model | Nasaďte jeden model rozšířením image Minimální odvozování počítače Azure Učení. |
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í počítače Azure Učení minimální image odvozování. |
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 jednoduchý 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 jednoduchý model Half Plus Two pomocí vlastního kontejneru TensorFlow 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, abyste použili výchozí image nebo některou z imagí, kterou 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 Azure Machine Učení 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 Učení.
Vy nebo instanční objekt, který používáte, musíte mít
Contributor
přístup ke skupině prostředků Azure, která obsahuje váš pracovní prostor. Pokud jste pracovní prostor nakonfigurovali pomocí článku rychlý start, budete mít takovou skupinu prostředků.Pokud chcete nasadit místně, musíte mít modul Docker spuštěný místně. Tento krok se důrazně doporučuje. Pomůže vám s laděním problémů.
Stažení zdrojového kódu
Pokud chcete postupovat podle tohoto kurzu, stáhněte si níže uvedený zdrojový kód.
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 ipř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 živém stavu a sondách připravenosti najdete v dokumentaci 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 Učení 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
pak se váš model bude nacházet /var/azureml-app/azureml-models/tfserving-deployment/1
v rámci vašeho nasazení:
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 bude nacházet /var/tfserving-model-mount/tfserving-deployment/1
ve vašem nasazení. Všimněte si, že už není pod azureml-app/azureml-models
položkou , ale pod zadanou cestou připojení:
Vytvoření koncového bodu a nasazení
Teď, když jste pochopili, 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