Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a cikk azt ismerteti, hogyan helyezhet üzembe modelleket online végpontok használatával az Azure Machine Learning REST API használatával. Az online végpontok lehetővé teszik a modell üzembe helyezését anélkül, hogy létre kellene hoznia és kezelnie kellene a mögöttes infrastruktúrát és a Kubernetes-fürtöket. Az alábbi eljárások bemutatják, hogyan hozhat létre online végpontot és üzembe helyezést, és hogyan ellenőrizheti a végpontot a meghívásával.
Az Online Azure Machine Learning-végpontok számos módon hozhatók létre. Használhatja az Azure CLI-t, az Azure Machine Learning Studiót vagy a REST API-t. A REST API szabványos HTTP-parancsokat használ erőforrások létrehozásához, lekéréséhez, frissítéséhez és törléséhez. Minden olyan nyelvvel vagy eszközzel működik, amely HTTP-kéréseket tud küldeni. A REST API egyszerű struktúrája jó választás a szkriptelési környezetekben és a gépi tanulási műveletek automatizálásában.
Előfeltételek
Egy Azure-előfizetés , amelyhez rendszergazdai jogosultságokkal rendelkezik. Ha nem rendelkezik ilyen előfizetéssel, próbálja ki az ingyenes vagy fizetős személyes előfizetést.
Egy szolgáltatásnév a munkaterületen. A rendszergazdai REST-kérelmek szolgáltatásnév-hitelesítést használnak.
Szolgáltatásnév hitelesítési jogkivonata. A jogkivonat lekéréséhez kövesse a szolgáltatásnév-hitelesítési jogkivonat lekérése című szakaszban leírt lépéseket.
A curl segédprogram.
A Microsoft Windows 10 és a Windows 11 összes telepítése alapértelmezés szerint curl telepítve van. A PowerShellben a curl az Invoke-WebRequest aliasa
Invoke-WebRequest -Body "key=val" -Method POST -Uri uri
UNIX-platformok esetén a curl program elérhető a Linuxos Windows-alrendszer vagy bármely UNIX-disztribúcióban.
Végpont nevének beállítása
A végpontneveknek egyedinek kell lenniük az Azure-régió szintjén. Egy végpontnévnek, például a saját végpontnak kell lennie az egyetlen végpontnak, amelynek a neve egy adott régión belül található.
Hozzon létre egy egyedi végpontnevet a RANDOM
segédprogram meghívásával, amely egy véletlenszerű számot ad hozzá utótagként az értékhez endpt-rest
:
export ENDPOINT_NAME=endpt-rest-`echo $RANDOM`
Gépi tanulási eszközök létrehozása
Az üzembe helyezés előkészítéséhez állítsa be az Azure Machine Learning-eszközöket, és konfigurálja a feladatát. Regisztrálja az üzembe helyezéshez szükséges eszközöket, beleértve a modellt, a kódot és a környezetet.
Tipp.
A REST API-hívások az alábbi eljárásokban a , $SUBSCRIPTION_ID
, $RESOURCE_GROUP
(régió) és az Azure Machine Learning $LOCATION
függvényt használják $WORKSPACE
helyőrzőként bizonyos argumentumok esetében. Az üzembe helyezés kódjának megvalósításakor cserélje le az argumentumhelyőrzőket az adott üzembehelyezési értékekre.
A rendszergazdai REST szolgáltatásnév-hitelesítési jogkivonatot kér. Amikor implementálja az üzembe helyezés kódját, cserélje le a $TOKEN
helyőrző példányait az üzembe helyezés egyszerű szolgáltatásjogkivonatára. Ezt a jogkivonatot a következő paranccsal kérdezheti le:
response=$(curl -H "Content-Length: 0" --location --request POST "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/onlineEndpoints/$ENDPOINT_NAME/token?api-version=$API_VERSION" \
--header "Authorization: Bearer $TOKEN")
accessToken=$(echo $response | jq -r '.accessToken')
A szolgáltató az argumentum használatával biztosítja a api-version
kompatibilitást. Az api-version
argumentum szolgáltatásonként eltérő.
Állítsa be a változót a API_version
jövőbeli verziókhoz:
API_VERSION="2022-05-01"
Tárfiók adatainak lekérése
A modell és a kód regisztrálásához először fel kell töltenie ezeket az elemeket egy Azure Storage-fiókba. Az Azure Storage-fiók részletei elérhetők az adattárban. Ebben a példában a munkaterület alapértelmezett adattár- és Azure Storage-fiókját kapja meg. Kérje le a munkaterületet egy GET kéréssel, amely egy JSON-fájlt kér le az adatokkal.
A jq eszközzel elemezheti a JSON-eredményt, és lekérheti a szükséges értékeket. Az Azure Portallal is megtalálhatja ugyanazokat az információkat:
# Get values for storage account
response=$(curl --location --request GET "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/datastores?api-version=$API_VERSION&isDefault=true" \
--header "Authorization: Bearer $TOKEN")
AZUREML_DEFAULT_DATASTORE=$(echo $response | jq -r '.value[0].name')
AZUREML_DEFAULT_CONTAINER=$(echo $response | jq -r '.value[0].properties.containerName')
export AZURE_STORAGE_ACCOUNT=$(echo $response | jq -r '.value[0].properties.accountName')
Kód feltöltése és regisztrálása
Most, hogy már rendelkezik az adattárzal, feltöltheti a pontozási szkriptet. Az Azure Storage CLI használatával feltölthet egy blobot az alapértelmezett tárolóba:
az storage blob upload-batch -d $AZUREML_DEFAULT_CONTAINER/score -s endpoints/online/model-1/onlinescoring
Tipp.
A feltöltés befejezéséhez más módszereket is használhat, például az Azure Portalt vagy az Azure Storage Explorert.
A kód feltöltése után put kéréssel adhatja meg a kódot, és az azonosítóval együtt hivatkozhat az datastoreId
adattárra:
curl --location --request PUT "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/codes/score-sklearn/versions/1?api-version=$API_VERSION" \
--header "Authorization: Bearer $TOKEN" \
--header "Content-Type: application/json" \
--data-raw "{
\"properties\": {
\"codeUri\": \"https://$AZURE_STORAGE_ACCOUNT.blob.core.windows.net/$AZUREML_DEFAULT_CONTAINER/score\"
}
}"
Modell feltöltése és regisztrálása
Töltse fel a modellfájlokat egy hasonló REST API-hívással:
az storage blob upload-batch -d $AZUREML_DEFAULT_CONTAINER/model -s endpoints/online/model-1/model
A feltöltés befejezése után regisztrálja a modellt:
curl --location --request PUT "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/models/sklearn/versions/1?api-version=$API_VERSION" \
--header "Authorization: Bearer $TOKEN" \
--header "Content-Type: application/json" \
--data-raw "{
\"properties\": {
\"modelUri\":\"azureml://subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/workspaces/$WORKSPACE/datastores/$AZUREML_DEFAULT_DATASTORE/paths/model\"
}
}"
Környezet létrehozása
Az üzembe helyezésnek olyan környezetben kell futnia, amely rendelkezik a szükséges függőségekkel. Hozza létre a környezetet EGY PUT-kéréssel. Docker-rendszerkép használata a Microsoft Container Registryből. A Docker-rendszerképet konfigurálhatja a docker
paranccsal, és conda-függőségeket adhat hozzá a condaFile
parancshoz.
A következő kód beolvassa egy Conda-környezet (YAML-fájl) tartalmát egy környezeti változóba:
ENV_VERSION=$RANDOM
curl --location --request PUT "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/environments/sklearn-env/versions/$ENV_VERSION?api-version=$API_VERSION" \
--header "Authorization: Bearer $TOKEN" \
--header "Content-Type: application/json" \
--data-raw "{
\"properties\":{
\"condaFile\": \"$CONDA_FILE\",
\"image\": \"mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04:20210727.v1\"
}
}"
Végpont létrehozása
Hozza létre az online végpontot:
response=$(curl --location --request PUT "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/onlineEndpoints/$ENDPOINT_NAME?api-version=$API_VERSION" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer $TOKEN" \
--data-raw "{
\"identity\": {
\"type\": \"systemAssigned\"
},
\"properties\": {
\"authMode\": \"AMLToken\"
},
\"location\": \"$LOCATION\"
}")
Üzemelő példány létrehozása
Üzembe helyezés létrehozása a végpont alatt:
response=$(curl --location --request PUT "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/onlineEndpoints/$ENDPOINT_NAME/deployments/blue?api-version=$API_VERSION" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer $TOKEN" \
--data-raw "{
\"location\": \"$LOCATION\",
\"sku\": {
\"capacity\": 1,
\"name\": \"default\"
},
\"properties\": {
\"endpointComputeType\": \"Managed\",
\"instanceType\": \"Standard_DS3_v2\",
\"model\": \"/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/models/sklearn/versions/1\",
\"codeConfiguration\": {
\"codeId\": \"/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/codes/score-sklearn/versions/1\",
\"scoringScript\": \"score.py\"
},
\"environmentId\": \"/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/environments/sklearn-env/versions/$ENV_VERSION\"
}
}")
Végpont meghívása az adatok modellel való pontozásához
Az üzembehelyezési végpont meghívásához szüksége van a pontozó URI-ra és a hozzáférési jogkivonatra.
Először szerezze be a pontozó URI-t:
response=$(curl --location --request GET "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/onlineEndpoints/$ENDPOINT_NAME?api-version=$API_VERSION" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer $TOKEN")
scoringUri=$(echo $response | jq -r '.properties.scoringUri')
Ezután kérje le a végpont hozzáférési jogkivonatát:
response=$(curl -H "Content-Length: 0" --location --request POST "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/onlineEndpoints/$ENDPOINT_NAME/token?api-version=$API_VERSION" \
--header "Authorization: Bearer $TOKEN")
accessToken=$(echo $response | jq -r '.accessToken')
Végül hívja meg a végpontot a curl segédprogrammal:
curl --location --request POST $scoringUri \
--header "Authorization: Bearer $accessToken" \
--header "Content-Type: application/json" \
--data-raw @endpoints/online/model-1/sample-request.json
Üzembehelyezési naplók ellenőrzése
Ellenőrizze az üzembehelyezési naplókat:
curl --location --request POST "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/onlineEndpoints/$ENDPOINT_NAME/deployments/blue/getLogs?api-version=$API_VERSION" \
--header "Authorization: Bearer $TOKEN" \
--header "Content-Type: application/json" \
--data-raw "{ \"tail\": 100 }"
Végpont törlése
Ha nem fogja tovább használni az üzembe helyezést, törölje az erőforrásokat.
Futtassa a következő parancsot, amely törli a végpontot és az összes mögöttes üzembe helyezést:
curl --location --request DELETE "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/onlineEndpoints/$ENDPOINT_NAME?api-version=$API_VERSION" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer $TOKEN" || true