Modellek üzembe helyezése REST használatával
Megtudhatja, hogyan helyezhet üzembe modelleket az Azure Machine Tanulás REST API használatával.
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. A REST API bármilyen olyan nyelvvel vagy eszközzel működik, amely HTTP-kéréseket tud küldeni. A REST egyszerű struktúrája jó választás a szkriptelési környezetekben és az MLOps automatizálásában.
Ebből a cikkből megtudhatja, hogyan használhatja az új REST API-kat a következőre:
- Gépi tanulási eszközök létrehozása
- Alapszintű betanítási feladat létrehozása
- Hiperparaméter-finomhangolási takarítási feladat létrehozása
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.
- Azure Machine Tanulás munkaterület.
- Egy szolgáltatásnév a munkaterületen. Rendszergazda a rendszerbiztonsági 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ű témakör lépéseit.
- A curl segédprogram. A curl program elérhető a Linuxos Windows-alrendszer vagy bármely UNIX-disztribúcióban. A PowerShellben a curl az Invoke-WebRequest aliasa, és
curl -d "key=val" -X POST uri
így leszInvoke-WebRequest -Body "key=val" -Method POST -Uri uri
.
Végpont nevének beállítása
Megjegyzés:
A végpontneveknek egyedinek kell lenniük az Azure-régió szintjén. A westus2-ben például csak egy végpont lehet a my-endpoint névvel.
export ENDPOINT_NAME=endpt-rest-`echo $RANDOM`
Azure Machine Tanulás online végpontok
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, valamint a Kubernetes-fürtöket. Ebben a cikkben létrehoz egy online végpontot és üzembe helyezést, és a meghívásával érvényesíti azt. Először azonban regisztrálnia kell az üzembe helyezéshez szükséges eszközöket, beleértve a modellt, a kódot és a környezetet.
Az Azure Machine Tanulás online végpontok számos módon hozhatók létre, beleértve az Azure CLI-t és vizuálisan a studióval. Az alábbi példa egy online végpont a REST API-val.
Gépi tanulási eszközök létrehozása
Először állítsa be az Azure Machine-Tanulás-eszközöket a feladat konfigurálásához.
A következő REST API-hívásokban helyőrzőket használunkSUBSCRIPTION_ID
LOCATION
RESOURCE_GROUP
WORKSPACE
. Helyettesítse a helyőrzőket a saját értékeivel.
Rendszergazda istrative REST szolgáltatásnév-hitelesítési jogkivonatot kér. Cserélje le TOKEN
a saját értékére. 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 az API-verziót változóként a 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ölteni őket egy tárfiókba. A tárfiók részletei elérhetők az adattárban. Ebben a példában a munkaterület alapértelmezett adattárát é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.
Az eszköz jq használatával 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 > regisztrálása
Most, hogy már rendelkezik az adattárkal, 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.
Más módszereket is használhat a feltöltéshez, például az Azure Portalt vagy az Azure Storage Explorert.
Miután feltöltötte a kódot, megadhatja a kódot EGY PUT kéréssel, és a következővel datastoreId
hivatkozhat az 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
A kódhoz hasonlóan töltse fel a modellfájlokat:
az storage blob upload-batch -d $AZUREML_DEFAULT_CONTAINER/model -s endpoints/online/model-1/model
Most 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. Konfigurálhatja a Docker-rendszerképet a Docker
conda-függőségekkel, és hozzáadhatja a következővel condaFile
: .
A következő kódrészletben egy Conda-környezet (YAML-fájl) tartalma beolvasva 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\": \"Standard_DS2_v2\"
},
\"properties\": {
\"endpointComputeType\": \"Managed\",
\"scaleSettings\": {
\"scaleType\": \"Default\"
},
\"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\"
}
}")
A végpont meghívása adatok pontozásához a modellel
A végpont meghívásához szükségünk 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')
A végpont hozzáférési jogkivonatának lekérése:
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')
Most hívja meg a végpontot a curl használatával:
curl --location --request POST $scoringUri \
--header "Authorization: Bearer $accessToken" \
--header "Content-Type: application/json" \
--data-raw @endpoints/online/model-1/sample-request.json
Ellenőrizze a naplókat
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 }"
A végpont törlése
Ha nem használja az üzemelő példányt, törölje az alábbi paranccsal (törli a végpontot és az összes mögöttes üzemelő példányt):
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
További lépések
- Megtudhatja, hogyan helyezheti üzembe a modellt az Azure CLI használatával.
- Megtudhatja, hogyan helyezheti üzembe a modellt a studióval.
- Útmutató az online végpontok üzembe helyezésének és pontozásának hibaelhárításához
- Megtudhatja, hogyan érheti el az Azure-erőforrásokat online végponttal és felügyelt identitással
- Megtudhatja, hogyan monitorozhat online végpontokat.
- Ismerje meg az online végpontok biztonságos bevezetésének elsajátítása.
- Az Azure Machine Tanulás felügyelt online végpont költségeinek megtekintése.
- Felügyelt online végpontok termékváltozatának listája.
- Ismerje meg az online végpontok korlátait.