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:

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