Megosztás a következőn keresztül:


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 online végponton az Azure Machine Learningben egyéni tároló használatával.

Az egyéni tárolótelepítések az Azure Machine Learning á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 Learning 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 Learning Következtetés minimális rendszerképe.

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 Learning Következtetés minimális rendszerképének kibővítésével.
minimális/egymodelles deploy-custom-container-minimal-single-model Egyetlen modell üzembe helyezése az Azure Machine Learning Következtetés minimális rendszerképének 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 Learning Következtetés minimális rendszerképének 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.
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 Learning 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ó: Az Azure Machine Learninghez készült Python SDK v2 telepítése.

  • Ö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 érdemes figyelembe venni:

Alaprendszerkép

Az alaprendszerkép paraméterként van megadva a környezetben, és docker.io/tensorflow/serving:latest ebben a példában használatos. A tároló vizsgálata során láthatja, hogy ez a kiszolgáló egy belépési pont szkriptjének elindítására használja ENTRYPOINT , amely felveszi az olyan környezeti változókat, mint MODEL_BASE_PATH például az és MODEL_NAME, és elérhetővé teszi az olyan portokat, mint a 8501. Ezek a részletek a kiválasztott kiszolgáló összes konkrét információi. A kiszolgáló ezen ismerete alapján meghatározhatja az üzemelő példány definiálását. Ha például környezeti változókat MODEL_BASE_PATH állít be az üzembehelyezési definícióhoz és MODEL_NAME a környezet definíciójában, a kiszolgáló (ebben az esetben a TF-kiszolgáló) a kiszolgáló indításához veszi az értékeket. Hasonlóképpen, ha beállítja az útvonalak 8501 portját az üzembehelyezési definícióban, a rendszer helyesen irányítja az ilyen útvonalakra irányuló felhasználói kérést a TF kiszolgálóra.

Vegye figyelembe, hogy ez a konkrét példa a TF-kiszolgálói eseten alapul, de bármilyen tárolót használhat, amely továbbra is naprakész marad, és válaszol az élethez, a felkészültséghez és a pontozási útvonalakhoz érkező kérésekre. További példákra is hivatkozhat, és megtekintheti, hogyan jön létre a dockerfile (például ahelyettENTRYPOINT), CMD hogy létrehozza a tárolókat.

Következtetés konfigurációja

A következtetési konfiguráció egy paraméter a környezetben, és az útvonal 3 típusának portját és elérési útját adja meg: az élőképességet, a készültséget és a pontozási útvonalat. Következtetési konfigurációra van szükség, ha saját tárolót szeretne futtatni felügyelt online végponttal.

Készültségi útvonal és élőség útvonala

A választott API-kiszolgáló módot biztosíthat a kiszolgáló állapotának ellenőrzésére. Az útvonalnak két típusa van: az élőség és a felkészültség. 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ási következtetés kontextusában a kiszolgáló a modell betöltése előtt 200 OK-ra válaszolhatott egy élességi kérelemre, a kiszolgáló pedig csak a modell memóriába való betöltése után tudott válaszolni a 200 OK-ra.

Az élettel és a készültségi mintavételekkel kapcsolatos további információkért tekintse meg a Kubernetes dokumentációját.

Az élettartamot és a készültségi útvonalakat az Ön által választott API-kiszolgáló határozza meg, amint azt a tároló helyi tesztelésekor azonosította volna a korábbi lépésben. Vegye figyelembe, hogy a cikkben szereplő példatelepíté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. Az útvonalak meghatározásához tekintse meg a különböző mintákra vonatkozó egyéb példákat.

Pontozási útvonal

A választott API-kiszolgáló módot adna a hasznos adatok fogadására, hogy működjenek. A gépi tanulási következtetés kontextusában a kiszolgáló egy adott útvonalon kapja meg a bemeneti adatokat. Azonosítsa ezt az útvonalat az API-kiszolgálóhoz, amikor a tárolót helyileg teszteli a korábbi lépésben, és adja meg, amikor meghatározza a létrehozandó üzembe helyezést. Vegye figyelembe, hogy az üzembe helyezés sikeres létrehozása a végpont scoring_uri paraméterét is frissíti, amelyet ellenőrizheti az ml online-endpoint show -n <name> --query scoring_uri.

A csatlakoztatott modell keresése

Amikor online végpontként helyez üzembe egy modellt, az Azure Machine Learning 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:

A helyi könyvtárszerkezet fanézetét bemutató diagram.

É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:

Az üzembehelyezési könyvtár szerkezetének fanézetét bemutató ábra.

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:

Az üzembehelyezési könyvtár szerkezetének fanézetét ábrázoló diagram mount_model_path használatakor.

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:

az ml online-endpoint delete --name tfserving-endpoint