Modell online végponton történő üzembe helyezése egyéni tároló használatával
ÉRVÉNYES:Azure CLI ml-bővítmény v2 (aktuális)Python SDK azure-ai-ml v2 (aktuális)
Megtudhatja, hogyan helyezhet üzembe egy modellt egy egyéni tároló használatával egy online végponton az Azure Machine Tanulás.
Az egyéni tárolótelepítések az Azure Machine Tanulás által használt alapértelmezett Python Flask-kiszolgálótól eltérő webkiszolgálókat is használhatnak. Ezen üzemelő példányok felhasználói továbbra is kihasználhatják az Azure Machine Tanulás beépített monitorozási, skálázási, riasztási és hitelesítési előnyeit.
Az alábbi táblázat olyan egyéni tárolókat használó üzembe helyezési példákat sorol fel, mint a TensorFlow-kiszolgáló, a TorchServe, a Triton Inference Server, a Plumber R-csomag és az Azure Machine Tanulás Következtetési minimális rendszerkép.
Példa | Szkript (CLI) | Leírás |
---|---|---|
minimális/többmodelles | deploy-custom-container-minimal-multimodel | Több modell üzembe helyezése egyetlen üzembe helyezéshez az Azure Machine Tanulás Következtetési minimális rendszerkép kibővítésével. |
minimális/egymodelles | deploy-custom-container-minimal-single-model | Egyetlen modell üzembe helyezése az Azure Machine Tanulás Következtetési minimális rendszerkép kibővítésével. |
mlflow/multideployment-scikit | deploy-custom-container-mlflow-multideployment-scikit | Helyezzen üzembe két különböző Python-követelményeket tartalmazó MLFlow-modellt két különálló üzembe helyezésre egyetlen végpont mögött az Azure Machine Tanulás Következtetési minimális rendszerkép használatával. |
r/többmodelles vízvezeték-szerelő | deploy-custom-container-r-multimodel-plumber | Három regressziós modell üzembe helyezése egy végponton a Plumber R csomag használatával |
tfserving/half-plus-two | deploy-custom-container-tfserving-half-plus-two | Egy Half Plus Két modell üzembe helyezése egyéni TensorFlow-tárolóval a standard modellregisztrációs folyamattal. |
tfserving/half-plus-two-integrated | deploy-custom-container-tfserving-half-plus-two-integrated | Egy Half Plus Two modell üzembe helyezése egy Egyéni TensorFlow-tároló használatával a modell képbe integrált használatával. |
torchserve/densenet | deploy-custom-container-torchserve-densenet | Egyetlen modell üzembe helyezése egyéni TorchServe-tárolóval. |
torchserve/huggingface-textgen | deploy-custom-container-torchserve-huggingface-textgen | Az Ölelő arcmodellek üzembe helyezése egy online végponton, és kövesse az Ölelő arcformálók TorchServe példáját. |
triton/egymodell | deploy-custom-container-triton-single-model | Triton-modell üzembe helyezése egyéni tároló használatával |
Ez a cikk egy TensorFlow-modell és a TensorFlow (TF) szolgáltatással való kiszolgálására összpontosít.
Figyelmeztetés
Előfordulhat, hogy a Microsoft nem tud segíteni az egyéni rendszerképek által okozott problémák elhárításában. Ha problémákat tapasztal, előfordulhat, hogy az alapértelmezett rendszerkép vagy a Microsoft által biztosított képek egyikének használatával állapítja meg, hogy a probléma az Ön képére vonatkozik-e.
Előfeltételek
A cikkben ismertetett lépések végrehajtása előtt győződjön meg arról, hogy rendelkezik a következő előfeltételekkel:
Egy Azure Machine Learning-munkaterület. Ha nincs ilyenje, a gyorsútmutató lépéseit követve hozzon létre egyet a munkaterület erőforrásainak létrehozása című cikkben.
Az Azure CLI és a
ml
bővítmény vagy az Azure Machine Tanulás Python SDK v2:Az Azure CLI és a bővítmény telepítéséhez lásd a parancssori felület (v2) telepítését, beállítását és használatát.
Fontos
A jelen cikkben szereplő CLI-példák feltételezik, hogy a Bash (vagy kompatibilis) rendszerhéjat használja. Például linuxos rendszerből vagy Linuxos Windows-alrendszer.
A Python SDK v2 telepítéséhez használja a következő parancsot:
pip install azure-ai-ml azure-identity
Ha frissíteni szeretné az SDK meglévő telepítését a legújabb verzióra, használja a következő parancsot:
pip install --upgrade azure-ai-ml azure-identity
További információ: A Python SDK v2 telepítése az Azure Machine Tanulás.
Önnek vagy a használt szolgáltatásnévnek közreműködői hozzáféréssel kell rendelkeznie a munkaterületet tartalmazó Azure-erőforráscsoporthoz. Ilyen erőforráscsoporttal rendelkezik, ha a gyorsútmutató-cikk használatával konfigurálta a munkaterületet.
A helyi üzembe helyezéshez helyileg kell futtatnia a Docker-motort . Ez a lépés erősen ajánlott. Segít a hibák hibakeresésében.
Forráskód letöltése
Az oktatóanyagot követve klónozza a forráskódot a GitHubról.
git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples/cli
Környezeti változók inicializálása
Környezeti változók definiálása:
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
TensorFlow-modell letöltése
Töltse le és bontsa ki azt a modellt, amely két bemenettel osztja el a bemenetet, és 2-et ad hozzá az eredményhez:
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
TF-kiszolgáló lemezképének helyi futtatása annak ellenőrzéséhez, hogy működik-e
A docker használatával helyileg futtathatja a rendszerképet teszteléshez:
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
Ellenőrizze, hogy küldhet-e élősséget és pontozási kéréseket a képre
Először ellenőrizze, hogy a tároló életben van-e, ami azt jelenti, hogy a tárolón belüli folyamat továbbra is fut. 200 (OK) választ kell kapnia.
curl -v http://localhost:8501/v1/models/$MODEL_NAME
Ezután ellenőrizze, hogy kaphat-e előrejelzéseket a címkézetlen adatokról:
curl --header "Content-Type: application/json" \
--request POST \
--data @$BASE_PATH/sample_request.json \
http://localhost:8501/v1/models/$MODEL_NAME:predict
A kép leállítása
Most, hogy helyileg tesztelt, állítsa le a képet:
docker stop tfserving-test
Az online végpont üzembe helyezése az Azure-ban
Ezután helyezze üzembe az online végpontot az Azure-ban.
YAML-fájl létrehozása a végponthoz és az üzembe helyezéshez
A felhőbeli üzembe helyezést a YAML használatával konfigurálhatja. Tekintse meg a példához tartozó YAML-mintát:
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
Ebben a YAML/Python-paraméterben néhány fontos fogalmat kell megfigyelni:
Készültségi útvonal és élőség útvonala
A HTTP-kiszolgálók az élethez és a felkészültséghez is meghatározzák az elérési utakat. A rendszer egy élőségi útvonalat használ annak ellenőrzésére, hogy a kiszolgáló fut-e. A rendszer készenléti útvonalat használ annak ellenőrzésére, hogy a kiszolgáló készen áll-e a munkára. A gépi tanulás következtetése szerint a kiszolgáló 200 OK-ra válaszolhat egy élességi kérelemre, mielőtt betöltené a modellt. A kiszolgáló csak a modell memóriába való betöltése után tud válaszolni a 200 OK-ra egy felkészültségi kérésre.
Az élőséggel és a készültségi mintavételekkel kapcsolatos további információkért tekintse meg a Kubernetes dokumentációját.
Figyelje meg, hogy ez az üzembe helyezés ugyanazt az útvonalat használja mind az élőség, mind a felkészültség szempontjából, mivel a TF-kiszolgáló csak egy élőségi útvonalat határoz meg.
A csatlakoztatott modell keresése
Amikor online végpontként helyez üzembe egy modellt, az Azure Machine Tanulás csatlakoztatja a modellt a végponthoz. A modell csatlakoztatása lehetővé teszi a modell új verzióinak üzembe helyezését anélkül, hogy új Docker-lemezképet kellene létrehoznia. Alapértelmezés szerint a foo névvel és az 1. verzióval regisztrált modell a következő elérési úton található az üzembe helyezett tárolóban: /var/azureml-app/azureml-models/foo/1
Ha például a /azureml-examples/cli/endpoints/online/custom-container könyvtárstruktúrája van a helyi gépen, ahol a modell neve half_plus_two:
És tfserving-deployment.yml a következőket tartalmazza:
model:
name: tfserving-mounted
version: 1
path: ./half_plus_two
Ezután a modell a /var/azureml-app/azureml-models/tfserving-deployment/1 területen található az üzembe helyezés során:
Igény szerint konfigurálhatja a .model_mount_path
Lehetővé teszi a modell csatlakoztatási útvonalának módosítását.
Fontos
Az model_mount_path
elérési útnak érvényes abszolút elérési útnak kell lennie Linuxon (a tárolórendszerkép operációs rendszerének).
Például rendelkezhet model_mount_path
paramétert a tfserving-deployment.yml:
name: tfserving-deployment
endpoint_name: tfserving-endpoint
model:
name: tfserving-mounted
version: 1
path: ./half_plus_two
model_mount_path: /var/tfserving-model-mount
.....
Ezután a modell a /var/tfserving-model-mount/tfserving-deployment/1 helyen található az üzembe helyezésben. Vegye figyelembe, hogy már nem az azureml-app/azureml-models alatt van, hanem a megadott csatlakoztatási útvonal alatt:
A végpont és az üzembe helyezés létrehozása
Most, hogy megismerte a YAML létrehozásának módját, hozza létre a végpontot.
az ml online-endpoint create --name tfserving-endpoint -f endpoints/online/custom-container/tfserving-endpoint.yml
Az üzembe helyezés létrehozása eltarthat néhány percig.
az ml online-deployment create --name tfserving-deployment -f endpoints/online/custom-container/tfserving-deployment.yml --all-traffic
A végpont meghívása
Az üzembe helyezés befejezése után ellenőrizze, hogy tud-e pontozási kérelmet küldeni az üzembe helyezett végpontra.
RESPONSE=$(az ml online-endpoint invoke -n $ENDPOINT_NAME --request-file $BASE_PATH/sample_request.json)
A végpont törlése
Most, hogy sikeresen pontszámot szerzett a végponttal, törölheti azt: