set -x # TOKEN=$(az account get-access-token --query accessToken -o tsv) # # SUBSCRIPTION_ID=$(az account show --query id -o tsv) LOCATION=$(az ml workspace show --query location -o tsv) RESOURCE_GROUP=$(az group show --query name -o tsv) WORKSPACE=$(az configure -l --query "[?name=='workspace'].value" -o tsv) # # export ENDPOINT_NAME=endpoint-`echo $RANDOM` # # API_VERSION="2022-05-01" # echo -e "Using:\nSUBSCRIPTION_ID=$SUBSCRIPTION_ID\nLOCATION=$LOCATION\nRESOURCE_GROUP=$RESOURCE_GROUP\nWORKSPACE=$WORKSPACE" # define how to wait wait_for_completion () { operation_id=$1 status="unknown" if [[ $operation_id == "" || -z $operation_id || $operation_id == "null" ]]; then echo "operation id cannot be empty" exit 1 fi while [[ $status != "Succeeded" && $status != "Failed" ]] do echo "Getting operation status from: $operation_id" operation_result=$(curl --location --request GET $operation_id --header "Authorization: Bearer $TOKEN") # TODO error handling here status=$(echo $operation_result | jq -r '.status') echo "Current operation status: $status" sleep 5 done if [[ $status == "Failed" ]] then error=$(echo $operation_result | jq -r '.error') echo "Error: $error" fi } # # 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') # # az storage blob upload-batch -d $AZUREML_DEFAULT_CONTAINER/score -s cli/endpoints/online/model-1/onlinescoring --account-name $AZURE_STORAGE_ACCOUNT # # az deployment group create -g $RESOURCE_GROUP \ --template-file arm-templates/code-version.json \ --parameters \ workspaceName=$WORKSPACE \ codeAssetName="score-sklearn" \ codeUri="https://$AZURE_STORAGE_ACCOUNT.blob.core.windows.net/$AZUREML_DEFAULT_CONTAINER/score" # # az storage blob upload-batch -d $AZUREML_DEFAULT_CONTAINER/model -s cli/endpoints/online/model-1/model --account-name $AZURE_STORAGE_ACCOUNT # # az deployment group create -g $RESOURCE_GROUP \ --template-file arm-templates/model-version.json \ --parameters \ workspaceName=$WORKSPACE \ modelAssetName="sklearn" \ modelUri="azureml://subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/workspaces/$WORKSPACE/datastores/$AZUREML_DEFAULT_DATASTORE/paths/model/sklearn_regression_model.pkl" # # CONDA_FILE=$(cat cli/endpoints/online/model-1/environment/conda.yaml) # # ENV_VERSION=$RANDOM az deployment group create -g $RESOURCE_GROUP \ --template-file arm-templates/environment-version.json \ --parameters \ workspaceName=$WORKSPACE \ environmentAssetName=sklearn-env \ environmentAssetVersion=$ENV_VERSION \ dockerImage=mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04:20210727.v1 \ condaFile="$CONDA_FILE" # # az deployment group create -g $RESOURCE_GROUP \ --template-file arm-templates/online-endpoint.json \ --parameters \ workspaceName=$WORKSPACE \ onlineEndpointName=$ENDPOINT_NAME \ identityType=SystemAssigned \ authMode=AMLToken \ location=$LOCATION # # 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") operation_id=$(echo $response | jq -r '.properties.properties.AzureAsyncOperationUri') wait_for_completion $operation_id # # resourceScope="/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices" az deployment group create -g $RESOURCE_GROUP \ --template-file arm-templates/online-endpoint-deployment.json \ --parameters \ workspaceName=$WORKSPACE \ location=$LOCATION \ onlineEndpointName=$ENDPOINT_NAME \ onlineDeploymentName=blue \ codeId="$resourceScope/workspaces/$WORKSPACE/codes/score-sklearn/versions/1" \ scoringScript=score.py \ environmentId="$resourceScope/workspaces/$WORKSPACE/environments/sklearn-env/versions/$ENV_VERSION" \ model="$resourceScope/workspaces/$WORKSPACE/models/sklearn/versions/1" \ endpointComputeType=Managed \ skuName=Standard_F2s_v2 \ skuCapacity=1 # # response=$(curl --location --request GET "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") operation_id=$(echo $response | jq -r '.properties.properties.AzureAsyncOperationUri') wait_for_completion $operation_id scoringUri=$(echo $response | jq -r '.properties.scoringUri') # # 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') # # curl --location --request POST $scoringUri \ --header "Authorization: Bearer $accessToken" \ --header "Content-Type: application/json" \ --data-raw @cli/endpoints/online/model-1/sample-request.json # # 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 }" # # 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 #