ŞUNLAR IÇIN GEÇERLIDIR:
Azure CLI ml uzantısı v2 (geçerli)
Python SDK azure-ai-ml v2 (geçerli)
Azure Machine Learning, ML eğitim işlerini göndermek için birden fazla yol sağlar. Bu makalede, aşağıdaki yöntemleri kullanarak işleri göndermeyi öğreneceksiniz:
- Makine öğrenmesi için Azure CLI uzantısı:
ml CLI v2 olarak da adlandırılan uzantı.
- Azure Machine Learning için Python SDK v2.
- REST API: CLI ve SDK'nın üzerinde oluşturulduğu API.
Önkoşullar
- Azure aboneliği. Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun. Azure Machine Learning'in ücretsiz veya ücretli sürümünü deneyin.
- Azure Machine Learning çalışma alanı. Kaynağınız yoksa Başlamak için kaynak oluşturma makalesindeki adımları kullanabilirsiniz.
SDK'yı kullanmak için Python için Azure Machine Learning SDK v2'yi yükleyin.
REST API bilgilerini kullanmak için aşağıdaki öğelere ihtiyacınız vardır:
Çalışma alanınızdaki bir hizmet sorumlusu. Yönetim REST istekleri için hizmet sorumlusu kimlik doğrulamasını kullanın.
Hizmet sorumlusu kimlik doğrulama belirteci. Bu belirteci almak için Hizmet sorumlusu kimlik doğrulama belirtecini alma bölümünde yer alan adımları izleyin.
Curl yardımcı programı. Curl programı Linux için Windows Alt Sistemi veya herhangi bir UNIX dağıtımında kullanılabilir.
İpucu
PowerShell'de, curl için Invoke-WebRequestbir diğer addır. komutu curl -d "key=val" -X POST uri olur Invoke-WebRequest -Body "key=val" -Method POST -Uri uri.
Rest API'yi PowerShell'den çağırmak mümkün olsa da, bu makaledeki örneklerde Bash kullandığınız varsayılır.
JSON işlemek için jq yardımcı programı. REST API çağrılarının döndüreceği JSON belgelerindeki değerleri ayıklamak için bu yardımcı programı kullanın.
Örnek deposunu kopyalama
Bu makaledeki kod parçacıkları, Azure Machine Learning örnekleri GitHub deposundaki örnekleri temel alır. Depoyu geliştirme ortamınıza kopyalamak için aşağıdaki komutu kullanın:
git clone --depth 1 https://github.com/Azure/azureml-examples
İpucu
Yalnızca en son commit'i depoya kopyalamak için --depth 1 kullanın; bu, işlemin tamamlanma süresini kısaltır.
Örnek iş
Bu makaledeki örneklerde MLFlow modelini eğitmek için iris çiçek veri kümesi kullanılır.
Bulutta eğitin
Bulutta eğitim yaparken Azure Machine Learning çalışma alanınıza bağlanmanız ve eğitim işini çalıştırmak için bir işlem kaynağı seçmeniz gerekir.
1. Çalışma alanına bağlanma
İpucu
Modeli eğitmek için kullanmak istediğiniz yöntemi seçmek için aşağıdaki sekmeleri kullanın. Sekme seçildiğinde, bu makaledeki tüm sekmeler otomatik olarak aynı sekmeye geçer. İstediğiniz zaman başka bir sekme seçebilirsiniz.
Çalışma alanına bağlanmak için tanımlayıcı parametrelerine (abonelik, kaynak grubu ve çalışma alanı adı) ihtiyacınız vardır. Azure Machine Learning çalışma alanına erişmek için MLClient ad alanındaki azure.ai.ml'yı kullanarak bu ayrıntıları edinin. Kimlik doğrulaması yapmak için varsayılan Azure kimlik doğrulamasını kullanın. Kimlik bilgilerini yapılandırma ve çalışma alanına bağlanma hakkında daha fazla bilgi için bu örne bakın.
#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)
Azure CLI'yı kullandığınızda, tanımlayıcı parametrelerine (abonelik, kaynak grubu ve çalışma alanı adı) ihtiyacınız vardır. Her komut için bu parametreleri belirtebilirsiniz ancak tüm komutların kullandığı varsayılan değerleri de ayarlayabilirsiniz. Varsayılan değerleri ayarlamak için aşağıdaki komutları kullanın. , <subscription ID>ve <Azure Machine Learning workspace name> değerlerini yapılandırmanızın değerleriyle değiştirin<resource group>:
az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>
Bu makaledeki REST API örnekleri , $SUBSCRIPTION_ID, $RESOURCE_GROUPve $LOCATION yer tutucularını kullanır$WORKSPACE. Yer tutucuları aşağıdaki gibi kendi değerlerinizle değiştirin:
-
$SUBSCRIPTION_ID: Azure abonelik kimliğiniz.
-
$RESOURCE_GROUP: Çalışma alanınızı içeren Azure kaynak grubu.
-
$LOCATION: Çalışma alanınızın bulunduğu Azure bölgesi.
-
$WORKSPACE: Azure Machine Learning çalışma alanınızın adı.
-
$COMPUTE_NAME: Azure Machine Learning işlem kümenizin adı.
Yönetim REST istekleri için bir hizmet sorumlusu kimlik doğrulama belirteci gerekir. Aşağıdaki komutla bir belirteç alabilirsiniz. Belirteç, ortam değişkeninde $TOKEN depolanır:
TOKEN=$(az account get-access-token --query accessToken -o tsv)
Hizmet sağlayıcısı, uyumluluğu sağlamak için bağımsız değişkenini api-version kullanır. Bağımsız api-version değişken hizmetten hizmete değişir.
Bu makalede Azure Resource Manager uç noktaları (management.azure.com kullanılır. Azure Machine Learning Resource Manager'ın mevcut sürümüne ayarlayın: API_VERSION
API_VERSION="2025-09-01"
Azure Machine Learning veri düzlemi API'lerini kullanıyorsanız, farklı bir sürüm kullanabilirler. Örneğin, Azure AI Varlıklar veri düzlemi referansını kullanır 2024-04-01-preview. Daha fazla bilgi için bkz. Azure Machine Learning (Resource Manager) ve Azure AI Varlıkları (veri düzlemi) için REST işlem grupları.
REST API kullanarak eğitirken, çalışma alanının erişebileceği bir depolama hesabına veri ve eğitim betikleri yüklemeniz gerekir. Aşağıdaki örnek, çalışma alanınızın depolama bilgilerini alır ve daha sonra kullanabilmeniz için bunları değişkenlere kaydeder:
# 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. Eğitim için işlem kaynağı oluşturma
Azure Machine Learning işlem kümesi, eğitim işini çalıştırmak için kullanabileceğiniz tam olarak yönetilen bir işlem kaynağıdır. Aşağıdaki örneklerde adlı cpu-clusterbir işlem kümesi oluşturursunuz.
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"
}
}
}
}'
İpucu
İşlem birkaç saniye sonra bir yanıt döndürür ancak bu yanıt yalnızca oluşturma isteğinin kabul edildiğine işaret eder. Küme oluşturma işleminin tamamlanması birkaç dakika sürebilir.
3. Eğitim işini gönderme
Bu betiği çalıştırmak için altında commandbulunan main.py Python betiğini yürüten bir ./sdk/python/jobs/single-step/lightgbm/iris/src/ kullanın. Komutunu Azure Machine Learning'e olarak job gönderirsiniz.
Not
Sunucusuz işlem kullanmak için bu kodda silincompute="cpu-cluster".
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
Yukarıdaki örneklerde şunları yapılandırmışsınız:
-
code - komutu çalıştırılacak kodun bulunduğu yol.
-
command - çalışması gereken komut.
-
environment - eğitim betiğini çalıştırmak için gereken ortam. Bu örnekte, Azure Machine Learning tarafından sağlanan AzureML-lightgbm-3.3@latest adlı, seçilmiş veya hazır bir ortam kullanın. Temel bir docker görüntüsü belirterek ve üzerine bir conda yaml belirterek de özel ortamları kullanabilirsiniz.
-
inputs - komutuna ad değer çiftleri kullanan girişlerin sözlüğü. anahtar, iş bağlamında girişin adı ve değer giriş değeridir. ifadesini kullanarak command içindeki girişlere ${{inputs.<input_name>}} başvuruda bulunun. Girdi olarak dosya veya klasör kullanmak için sınıfını Input kullanın. Daha fazla bilgi için bkz . SDK ve CLI v2 ifadeleri.
Daha fazla bilgi için başvuru belgelerine bakın.
İşi gönderdiğinizde hizmet, Azure Machine Learning studio'daki iş durumunun URL'sini döndürür. İş ilerleme durumunu görüntülemek için stüdyo kullanıcı arabirimini kullanın. İşin geçerli durumunu denetlemek için de kullanabilirsiniz returned_job.status .
az ml job create Bu örnekteki komut bir YAML iş tanımı dosyası gerektirir. Bu örnekte kullanılan dosya aşağıdaki içeriği içerir:
Not
Sunucusuz işlem kullanmak için bu kodda silincompute: azureml:cpu-cluster".
$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.
Önceki YAML'de şunları yapılandırmışsınız:
-
code - komutu çalıştırılacak kodun bulunduğu yol.
-
command - çalıştırılması gereken komut.
-
inputs - komutuna ad değer çiftleri kullanan girişlerin sözlüğü. anahtar, iş bağlamında girişin adı ve değer giriş değeridir. Girişlere command içindeki ${{inputs.<input_name>}} ifadesi kullanılarak referans alınır. Daha fazla bilgi için bkz . SDK ve CLI v2 ifadeleri.
-
environment - eğitim betiğini çalıştırmak için gereken ortam. Bu örnekte, Azure Machine Learning tarafından sağlanan AzureML-lightgbm-3.3@latest adlı, seçilmiş veya hazır bir ortam kullanın. Temel bir docker görüntüsü belirterek ve üzerine bir conda yaml belirterek de özel ortamları kullanabilirsiniz.
İşi göndermek için aşağıdaki komutu kullanın. Eğitim işinin çalıştırma kimliği (adı) değişkeninde $run_id depolanır:
run_id=$(az ml job create -f jobs/single-step/lightgbm/iris/job.yml --query name -o tsv)
Görev hakkındaki bilgileri döndürmek için depolanan çalıştırma kimliğini kullanın. parametresi, --web işte ayrıntılarına inebileceğiniz Azure Machine Learning stüdyosu web kullanıcı arabirimini açar:
az ml job show -n $run_id --web
Bir iş gönderdiğinizde, eğitim betiklerini ve verilerini Azure Machine Learning çalışma alanınızın erişebileceği bir bulut depolama konumuna yüklemeniz gerekir.
Eğitim betiğini karşıya yüklemek için aşağıdaki Azure CLI komutunu kullanın. komutu, tek bir dosyayı değil eğitim için gereken dosyaları içeren dizini belirtir. Bunun yerine verileri karşıya yüklemek için REST kullanmak istiyorsanız bkz: Put Blob referansı.
az storage blob upload-batch -d $AZUREML_DEFAULT_CONTAINER/testjob -s cli/jobs/single-step/lightgbm/iris/src/ --account-name $AZURE_STORAGE_ACCOUNT
Eğitim verilerine sürümlenmiş bir başvuru oluşturun. Bu örnekte veriler zaten buluttadır ve konumundadır https://azuremlexamples.blob.core.windows.net/datasets/iris.csv. Verilere başvurma hakkında daha fazla bilgi için bkz . Azure Machine Learning'de veriler:
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\"
}
}"
İşle kullanmak üzere eğitim betiğine sürümlü bir başvuru kaydedin. Bu örnekte betik konumu, 1. adımda karşıya yüklediğiniz varsayılan depolama hesabı ve kapsayıcıdır. Sürümlenmiş eğitim kodunun kimliği döndürülür ve değişkende $TRAIN_CODE depolanır:
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')
Kümenin eğitim betiğini çalıştırmak için kullandığı ortamı oluşturun. Bu örnekte, Azure Machine Learning tarafından sağlanan AzureML-lightgbm-3.3 adlı, seçilmiş veya hazır bir ortam kullanın.
Azure Resource Manager, ortam kimlikleri için bir @latest kısayolu desteklemez. Aşağıdaki komut ortam sürümlerini listeler ve daha sonra değişkende $ENVIRONMENT depolanan en son değiştirilen sürüm kimliğini seçer.
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')
Son olarak, işi gönderin. Aşağıdaki örnekte işin nasıl gönderilip eğitim kodu kimliğine, ortam kimliğine, giriş verilerinin URL'sine ve işlem kümesinin kimliğine nasıl başvuracakları gösterilmektedir. İş çıktı konumu değişkeninde $JOB_OUTPUT depolanır:
İpucu
İş adı benzersiz olmalıdır. Bu örnekte, uuidgen ad için benzersiz bir değer oluşturmak için kullanılır.
Not
Sunucusuz işlem kullanmak için bu koddaki \"computeId\": satırı silin.
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\"
}
}"
Eğitilen modeli kaydetme
Aşağıdaki örneklerde, Azure Machine Learning çalışma alanınıza nasıl model kaydedilecek gösterilmektedir.
İpucu
Eğitim işi bir name özelliği döndürür. Modelin yolunun bir parçası olarak bu adı kullanın.
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)
İpucu
Model yolunun $run_id bir parçası olarak değişkende depolanan adı kullanın.
az ml model create -n sklearn-iris-example -v 1 -p runs:/$run_id/model --type mlflow_model
İpucu
Model yolunun $run_id bir parçası olarak değişkende depolanan adı kullanın.
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\"
}
}"
Sonraki adımlar
Artık eğitilmiş bir modeliniz olduğuna göre, çevrimiçi uç nokta kullanarak nasıl dağıtacağınızı öğrenin.
Daha fazla örnek için bkz . Azure Machine Learning örnekleri GitHub deposu.
Bu makalede kullanılan Azure CLI komutları, Python SDK sınıfları veya REST API'leri hakkında daha fazla bilgi için aşağıdaki başvuru belgelerine bakın: