ÉRVÉNYES:
Azure CLI ml-bővítmény v2 (aktuális)
Python SDK azure-ai-ml v2 (aktuális)
Az Azure Machine Learning többféle módot kínál az ML-betanítási feladatok beküldésére. Ebből a cikkből megtudhatja, hogyan küldhet be feladatokat az alábbi módszerekkel:
- Azure CLI-bővítmény gépi tanuláshoz: A
ml bővítmény, más néven CLI v2.
- Python SDK v2 az Azure Machine Learninghez.
- REST API: A CLI és az SDK által létrehozott API.
Előfeltételek
- Azure-előfizetés. Ha még nincs Azure-előfizetése, kezdés előtt hozzon létre egy ingyenes fiókot. Próbálja ki az Azure Machine Learning ingyenes vagy fizetős verzióját.
- Egy Azure Machine Learning-munkaterület. Ha nincs ilyenje, az erőforrások létrehozása című cikk lépéseit követve kezdheti el a cikket.
A REST API-információk használatához a következő elemekre van szüksége:
Egy szolgáltatásnév a munkaterületen.
Szolgáltatásnév-hitelesítés használata rendszergazdai REST-kérelmekhez.
Szolgáltatásnév hitelesítési jogkivonata. A jogkivonat beszerzé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.
Tipp.
A PowerShellben a curl egy alias a Invoke-WebRequest számára. A curl -d "key=val" -X POST uri parancs Invoke-WebRequest -Body "key=val" -Method POST -Uri uri lesz.
Bár a REST API meghívható a PowerShellből, a cikkben szereplő példák feltételezik, hogy Basht használ.
A JSON feldolgozására szolgáló jq segédprogram. Ezzel a segédprogrammal kinyerhet értékeket a REST API-hívások által visszaadott JSON-dokumentumokból.
A példák adattárának klónozása
A jelen cikkben szereplő kódrészletek az Azure Machine Learning-példák GitHub-adattárában található példákon alapulnak. Az adattár fejlesztői környezetbe való klónozásához használja a következő parancsot:
git clone --depth 1 https://github.com/Azure/azureml-examples
Tipp.
Csak a legújabb véglegesítés klónozására használható --depth 1 az adattárban, ami csökkenti a művelet befejezésének idejét.
Példafeladat
A cikkben szereplő példák az íriszvirág-adatkészletet használják egy MLFlow-modell betanítása érdekében.
Betanítása a felhőben
Amikor a felhőben tanít be, csatlakoznia kell az Azure Machine Learning-munkaterülethez, és ki kell választania egy számítási erőforrást a betanítási feladat futtatásához.
1. Csatlakozás a munkaterülethez
Tipp.
Az alábbi fülekkel kiválaszthatja a modell betanítása során használni kívánt módszert. Ha kiválaszt egy lapot, a cikk összes lapja automatikusan ugyanarra a lapra vált. Bármikor kijelölhet egy másik lapot.
A munkaterülethez való csatlakozáshoz azonosító paraméterekre van szükség – előfizetésre, erőforráscsoportra és munkaterület nevére. A MLClient névtérből származó azure.ai.ml részletek segítségével megszerezheti a szükséges Azure Machine Learning-munkaterülethez tartozó referencia-hozzáférést. A hitelesítéshez használja az alapértelmezett Azure-hitelesítést. A hitelesítő adatok konfigurálásáról és a munkaterülethez való csatlakozásról ebben a példában talál további információt.
#import required libraries
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential
#Enter details of your Azure Machine Learning workspace
subscription_id = '<SUBSCRIPTION_ID>'
resource_group = '<RESOURCE_GROUP>'
workspace = '<AZUREML_WORKSPACE_NAME>'
#connect to the workspace
ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group, workspace)
Az Azure CLI használatakor azonosító paraméterekre van szüksége – egy előfizetésre, egy erőforráscsoportra és a munkaterület nevére. Bár ezeket a paramétereket minden parancshoz megadhatja, beállíthatja az összes parancs által használt alapértelmezett értékeket is. Az alapértelmezett értékek beállításához használja az alábbi parancsokat. Cserélje le <subscription ID>a , <Azure Machine Learning workspace name>és <resource group> a konfiguráció értékeit:
az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>
A cikkben szereplő REST API-példák a helyőrzőket $SUBSCRIPTION_ID$RESOURCE_GROUPés $LOCATION a helyőrzőket használják$WORKSPACE. Cserélje le a helyőrzőket a saját értékeire az alábbiak szerint:
-
$SUBSCRIPTION_ID: Az Azure-előfizetés azonosítója.
-
$RESOURCE_GROUP: A munkaterületet tartalmazó Azure-erőforráscsoport.
-
$LOCATION: Az Azure-régió, ahol a munkaterület található.
-
$WORKSPACE: Az Azure Machine Learning-munkaterület neve.
-
$COMPUTE_NAME: Az Azure Machine Learning számítási fürt neve.
A felügyeleti REST-kérelmekhez szolgáltatásnévi hitelesítési jogkivonat szükséges. A következő paranccsal lekérhet egy jogkivonatot. A jogkivonat a $TOKEN környezeti változóban van tárolva:
TOKEN=$(az account get-access-token --query accessToken -o tsv)
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ő.
Ez a cikk Azure Resource Manager-végpontokat (management.azure.com) használ. Állítsa be API_VERSION az Azure Machine Learning Resource Manager aktuális verzióját:
API_VERSION="2025-09-01"
Ha Azure Machine Learning-adatsík API-kat használ, azok másik verziót használhatnak. Az Azure AI Assets adatsík-referenciája például a következőt használja 2024-04-01-preview: További információkért tekintse meg az Azure Machine Learning (Resource Manager) és az Azure AI Assets (adatsík) REST műveleti csoportjait.
Amikor a REST API használatával tanít be, adatokat és betanítási szkripteket kell feltöltenie egy tárfiókba, amelyhez a munkaterület hozzáférhet. Az alábbi példa lekéri a munkaterület tárolási adatait, és változókba menti őket, hogy később használhassa őket:
# 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')
2. Számítási erőforrás létrehozása betanításhoz
Az Azure Machine Learning számítási fürt egy teljes mértékben felügyelt számítási erőforrás, amellyel futtathatja a betanítási feladatot. Az alábbi példákban egy számítástechnikai fürtöt hoz létre, amelynek neve cpu-cluster.
from azure.ai.ml.entities import AmlCompute
# specify aml compute name.
cpu_compute_target = "cpu-cluster"
try:
ml_client.compute.get(cpu_compute_target)
except Exception:
print("Creating a new cpu compute target...")
compute = AmlCompute(
name=cpu_compute_target, size="STANDARD_D2_V2", min_instances=0, max_instances=4
)
ml_client.compute.begin_create_or_update(compute).result()
az ml compute create -n cpu-cluster --type amlcompute --min-instances 0 --max-instances 4
curl -X PUT \
"https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/computes/$COMPUTE_NAME?api-version=$API_VERSION" \
-H "Authorization:Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"location": "'$LOCATION'",
"properties": {
"computeType": "AmlCompute",
"properties": {
"vmSize": "Standard_D2_V2",
"vmPriority": "Dedicated",
"scaleSettings": {
"maxNodeCount": 4,
"minNodeCount": 0,
"nodeIdleTimeBeforeScaleDown": "PT30M"
}
}
}
}'
Tipp.
Bár a művelet néhány másodperc után választ ad vissza, ez a válasz csak a létrehozási kérés elfogadását jelzi. A fürt létrehozása több percet is igénybe vehet.
3. A betanítási feladat elküldése
A szkript futtatásához használjon egy command olyan parancsot, amely végrehajtja a main.py Alatt található ./sdk/python/jobs/single-step/lightgbm/iris/src/Python-szkriptet. A parancsot job formájában küldi el az Azure Machine Learningnek.
Feljegyzés
A kiszolgáló nélküli számítás használatához törölje compute="cpu-cluster" ezt a kódot.
from azure.ai.ml import command, Input
# define the command
command_job = command(
code="./src",
command="python main.py --iris-csv ${{inputs.iris_csv}} --learning-rate ${{inputs.learning_rate}} --boosting ${{inputs.boosting}}",
environment="AzureML-lightgbm-3.2-ubuntu18.04-py37-cpu@latest",
inputs={
"iris_csv": Input(
type="uri_file",
path="https://azuremlexamples.blob.core.windows.net/datasets/iris.csv",
),
"learning_rate": 0.9,
"boosting": "gbdt",
},
compute="cpu-cluster",
)
# submit the command
returned_job = ml_client.jobs.create_or_update(command_job)
# get a URL for the status of the job
returned_job.studio_url
Az előző példákban a következőt konfigurálta:
-
code - elérési út, ahol a parancs futtatásához szükséges kód található.
-
command - parancs, amelyet futtatni kell.
-
environment - a betanítási szkript futtatásához szükséges környezet. Ebben a példában az Azure Machine Learning által AzureML-lightgbm-3.3@latestbiztosított, válogatott vagy kész környezetet használjuk. Egyéni környezeteket is használhat egy alap docker-rendszerkép megadásával és egy conda yaml megadásával.
-
inputs - a parancshoz névérték párokat használó bemenetek szótára. A kulcs a feladat környezetében lévő bemenet neve, az érték pedig a bemeneti érték. A command kifejezés használatával hivatkozzon a ${{inputs.<input_name>}} bemenetekre. Ha fájlokat vagy mappákat szeretne bemenetként használni, használja az osztályt Input . További információ: SDK és CLI v2 kifejezések.
További információkért tekintse meg a referenciadokumentációt.
A feladat elküldésekor a szolgáltatás egy URL-címet ad vissza a feladat állapotához az Azure Machine Learning Studióban. A feladat előrehaladásának megtekintéséhez használja a studio felhasználói felületét. A feladat aktuális állapotát is returned_job.status ellenőrizheti.
A az ml job create példában szereplő parancshoz YAML-feladatdefiníciós fájl szükséges. A példában használt fájl a következő tartalmat tartalmazza:
Feljegyzés
A kiszolgáló nélküli számítás használatához törölje compute: azureml:cpu-cluster" ezt a kódot.
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
code: src
command: >-
python main.py
--iris-csv ${{inputs.iris_csv}}
inputs:
iris_csv:
type: uri_file
path: https://azuremlexamples.blob.core.windows.net/datasets/iris.csv
environment: azureml:AzureML-lightgbm-3.3@latest
compute: azureml:cpu-cluster
display_name: lightgbm-iris-example
experiment_name: lightgbm-iris-example
description: Train a LightGBM model on the Iris dataset.
Az előző YAML-ben a következőt konfigurálta:
-
code - elérési út, ahol a parancs futtatásához szükséges kód található.
-
command - futtatandó parancs.
-
inputs - a parancshoz névérték párokat használó bemenetek szótára. A kulcs a feladat környezetében lévő bemenet neve, az érték pedig a bemeneti érték. A command-ben a ${{inputs.<input_name>}} kifejezéssel hivatkozunk a bemenetekre. További információ: SDK és CLI v2 kifejezések.
-
environment - a betanítási szkript futtatásához szükséges környezet. Ebben a példában az Azure Machine Learning által AzureML-lightgbm-3.3@latestbiztosított, válogatott vagy kész környezetet használjuk. Egyéni környezeteket is használhat egy alap docker-rendszerkép megadásával és egy conda yaml megadásával.
A feladat elküldéséhez használja az alábbi parancsot. A betanítási feladat futtatási azonosítója (neve) a $run_id változóban van tárolva:
run_id=$(az ml job create -f jobs/single-step/lightgbm/iris/job.yml --query name -o tsv)
A tárolt futtatási azonosítóval adja vissza a feladat adatait. A --web paraméter megnyitja az Azure Machine Learning Studio webes felhasználói felületét, ahol részletezheti a feladat részleteit:
az ml job show -n $run_id --web
Feladat elküldésekor fel kell töltenie a betanítási szkripteket és az adatokat egy felhőbeli tárolóba, amelyhez az Azure Machine Learning-munkaterület fér hozzá.
A betanítási szkript feltöltéséhez használja az alábbi Azure CLI-parancsot. A parancs azt a könyvtárat adja meg, amely a betanításhoz szükséges fájlokat tartalmazza, nem pedig az egyes fájlokat. Ha inkább a REST használatával szeretné feltölteni az adatokat, tekintse meg a Blob elhelyezése hivatkozást:
az storage blob upload-batch -d $AZUREML_DEFAULT_CONTAINER/testjob -s cli/jobs/single-step/lightgbm/iris/src/ --account-name $AZURE_STORAGE_ACCOUNT
Hozzon létre egy verziószámozott hivatkozást a betanítási adatokra. Ebben a példában az adatok már a felhőben találhatók, és a következő helyen https://azuremlexamples.blob.core.windows.net/datasets/iris.csvtalálhatók: . További információ az adatokra való hivatkozásról: Adatok az Azure Machine Learningben:
DATA_VERSION=$RANDOM
curl --location --request PUT "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/data/iris-data/versions/$DATA_VERSION?api-version=$API_VERSION" \
--header "Authorization: Bearer $TOKEN" \
--header "Content-Type: application/json" \
--data-raw "{
\"properties\": {
\"description\": \"Iris dataset\",
\"dataType\": \"uri_file\",
\"dataUri\": \"https://azuremlexamples.blob.core.windows.net/datasets/iris.csv\"
}
}"
Regisztráljon egy verziószámozott hivatkozást a betanítási szkriptre a feladattal való használathoz. Ebben a példában a szkript helye az 1. lépésben feltöltött alapértelmezett tárfiók és tároló. A verziószámozott betanítási kód azonosítója a változóban $TRAIN_CODE lesz visszaadva és tárolva:
TRAIN_CODE=$(curl --location --request PUT "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/codes/train-lightgbm/versions/1?api-version=$API_VERSION" \
--header "Authorization: Bearer $TOKEN" \
--header "Content-Type: application/json" \
--data-raw "{
\"properties\": {
\"description\": \"Train code\",
\"codeUri\": \"https://$AZURE_STORAGE_ACCOUNT.blob.core.windows.net/$AZUREML_DEFAULT_CONTAINER/testjob\"
}
}" | jq -r '.id')
Hozza létre azt a környezetet, amelyet a fürt a betanítási szkript futtatásához használ. Ebben a példában az Azure Machine Learning által AzureML-lightgbm-3.3biztosított, válogatott vagy kész környezetet használjuk.
Az Azure Resource Manager nem támogatja a @latest környezeti azonosítók parancsikonjait. Az alábbi parancs felsorolja a környezeti verziókat, és kiválasztja a legutóbb módosított verzióazonosítót, amelyet aztán a $ENVIRONMENT változó tárol.
ENVIRONMENT_NAME="AzureML-lightgbm-3.3"
ENVIRONMENT=$(curl --location --request GET "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/environments/$ENVIRONMENT_NAME/versions?api-version=$API_VERSION" \
--header "Authorization: Bearer $TOKEN" | jq -r '.value | sort_by(.systemData.lastModifiedAt) | last | .id')
Végül küldje el a feladatot. Az alábbi példa bemutatja, hogyan küldheti el a feladatot, hivatkozhat a betanítási kód azonosítójára, a környezetazonosítóra, a bemeneti adatok URL-címére és a számítási fürt azonosítójára. A feladat kimeneti helyét a $JOB_OUTPUT következő változó tárolja:
Tipp.
A feladat nevének egyedinek kell lennie. Ebben a példában uuidgen a név egyedi értékének létrehozására szolgál.
Feljegyzés
Kiszolgáló nélküli számítás használatához törölje a \"computeId\": kód sorát.
run_id=$(uuidgen)
curl --location --request PUT "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/jobs/$run_id?api-version=$API_VERSION" \
--header "Authorization: Bearer $TOKEN" \
--header "Content-Type: application/json" \
--data-raw "{
\"properties\": {
\"jobType\": \"Command\",
\"codeId\": \"$TRAIN_CODE\",
\"command\": \"python main.py --iris-csv \$AZURE_ML_INPUT_iris\",
\"environmentId\": \"$ENVIRONMENT\",
\"inputs\": {
\"iris\": {
\"jobInputType\": \"uri_file\",
\"uri\": \"https://azuremlexamples.blob.core.windows.net/datasets/iris.csv\"
}
},
\"experimentName\": \"lightgbm-iris\",
\"computeId\": \"/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/computes/$COMPUTE_NAME\"
}
}"
A betanított modell regisztrálása
Az alábbi példák bemutatják, hogyan regisztrálhat modellt az Azure Machine Learning-munkaterületen.
Tipp.
A betanítási feladat visszaad egy tulajdonságot name . Használja ezt a nevet a modell elérési útjának részeként.
from azure.ai.ml.entities import Model
from azure.ai.ml.constants import AssetTypes
run_model = Model(
path="azureml://jobs/{}/outputs/artifacts/paths/model/".format(returned_job.name),
name="run-model-example",
description="Model created from run.",
type=AssetTypes.MLFLOW_MODEL
)
ml_client.models.create_or_update(run_model)
Tipp.
Használja a változóban $run_id tárolt nevet a modell elérési útjának részeként.
az ml model create -n sklearn-iris-example -v 1 -p runs:/$run_id/model --type mlflow_model
Tipp.
Használja a változóban $run_id tárolt nevet a modell elérési útjának részeként.
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\": {
\"modelType\": \"mlflow_model\",
\"modelUri\":\"runs:/$run_id/model\"
}
}"
Következő lépések
Most, hogy már rendelkezik egy betanított modellel, megtudhatja , hogyan helyezheti üzembe online végponttal.
További példákért tekintse meg az Azure Machine Learning-példák GitHub-adattárát.
A cikkben használt Azure CLI-parancsokkal, Python SDK-osztályokkal vagy REST API-kkal kapcsolatos további információkért tekintse meg a következő referenciadokumentációt: