CLI (v2) çekirdek YAML söz dizimi
ŞUNLAR IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v2 (geçerli)
Her Azure Machine Learning varlığının şeması oluşturulmuş bir YAML gösterimi vardır. YAML yapılandırma dosyasından veya .yaml
uzantısıyla yeni bir .yml
varlık oluşturabilirsiniz.
Bu makalede, bu YAML dosyalarını yapılandırırken karşılaşacağınız temel söz dizimi kavramlarına genel bir bakış sağlanır.
Azure Machine Learning varlığına başvurma
Azure Machine Learning, YAML dosyası yapılandırırken mevcut bir Azure Machine Learning varlığına başvurmak için bir başvuru söz dizimi (kısa ve uzun biçimli) sağlar. Örneğin, bir işin ortamı olarak kullanmak üzere çalışma alanınızdaki mevcut kayıtlı bir ortama başvurabilirsiniz.
Azure Machine Learning varlığına başvurma
Azure Machine Learning varlığına başvurmak için iki seçenek vardır (ortamlar, modeller, veriler ve bileşenler):
Bir varlığın açık bir sürümüne başvurma:
- Kısaltma söz dizimi:
azureml:<asset_name>:<asset_version>
- Varlığın Azure Resource Manager (ARM) kaynak kimliğini içeren uzun söz dizimi:
azureml:/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.MachineLearningServices/workspaces/<workspace-name>/environments/<environment-name>/versions/<environment-version>
- Kısaltma söz dizimi:
Bir varlığın en son sürümüne başvurun:
Bazı senaryolarda, gerçek sürüm dizesinin kendisini açıkça aramak ve belirtmek zorunda kalmadan bir varlığın en son sürümüne başvurmak isteyebilirsiniz. En son sürüm, bir varlığın belirli bir ad altında oluşturulan en son sürümü (en son olarak da bilinir) olarak tanımlanır.
Aşağıdaki söz dizimini kullanarak en son sürüme başvurabilirsiniz:
azureml:<asset_name>@latest
. Azure Machine Learning, çalışma alanında açık bir varlık sürümüne yapılan başvuruyu çözümler.
Azure Machine Learning kaynağına başvurma
Azure Machine Learning kaynağına (işlem gibi) başvurmak için aşağıdaki söz dizimlerinden birini kullanabilirsiniz:
- Kısaltma söz dizimi:
azureml:<resource_name>
- Kaynağın ARM kaynak kimliğini içeren uzun söz dizimi:
azureml:/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.MachineLearningServices/workspaces/<workspace-name>/computes/<compute-name>
Azure Machine Learning veri başvurusu URI'si
Azure Machine Learning, azure depolama hizmetindeki verileri işaret eden kullanışlı bir veri başvurusu URI biçimi sunar. Bu, YAML dosyanızda depolamadaki dosyalardan Azure Machine Learning modeli oluşturma veya işe giriş olarak geçirilecek verilere işaret etme gibi bir bulut depolama konumu belirtmeniz gereken senaryolar için kullanılabilir.
Bu veri URI biçimini kullanmak için, başvurmak istediğiniz depolama hizmetinin önce çalışma alanınızda bir veri deposu olarak kaydedilmesi gerekir. Azure Machine Learning, veri deposu oluşturma sırasında sağladığınız kimlik bilgilerini kullanarak veri erişimini işler.
Biçimi, geçerli çalışma alanında bir veri deposu ve veri deposundaki yolu işaret etmek istediğiniz dosya veya klasörden oluşur:
azureml://datastores/<datastore-name>/paths/<path-on-datastore>/
Örneğin:
azureml://datastores/workspaceblobstore/paths/example-data/
azureml://datastores/workspaceblobstore/paths/example-data/iris.csv
Azure Machine Learning veri başvurusu URI'sine ek olarak, Azure Machine Learning şu doğrudan depolama URI protokollerini de destekler: https
, wasbs
, abfss
ve adl
ve, ile genel http
ve https
URI'ler.
Azure Machine Learning işlerini ve bileşenlerini yapılandırmak için ifade söz dizimi
v2 işi ve bileşen YAML dosyaları, farklı senaryoların bağlamlarına bağlanmak için ifadelerin kullanılmasına olanak sağlar. Temel kullanım örneği, yapılandırmayı yazarken bilinmeyen ancak çalışma zamanında çözümlenmesi gereken bir değer için ifade kullanmaktır.
Azure Machine Learning'e bir ifadeyi dize olarak işlemek yerine değerlendirmesini bildirmek için aşağıdaki söz dizimini kullanın:
${{ <expression> }}
Desteklenen senaryolar aşağıda ele alınmıştır.
bir işin ve outputs
bağlamlarıyla parametresini parametreleştirme command
inputs
Sabit değerleri, URI yollarını ve kayıtlı Azure Machine Learning veri varlıklarını bir işe giriş olarak belirtebilirsiniz. command
daha sonra söz dizimi kullanılarak ${{inputs.<input_name>}}
bu girişlere başvurularla parametreleştirilebilir. Değişmez değer girişlerine yapılan başvurular çalışma zamanında değişmez değere çözümlenirken, veri girişlerine yapılan başvurular indirme yoluna veya bağlama yoluna (belirtilene bağlı olarak) mode
çözümlenir.
Benzer şekilde, işin çıkışlarına da içinde command
başvurulabilir. Sözlükte outputs
belirtilen her adlandırılmış çıktı için Azure Machine Learning, varsayılan veri deposunda dosyaları yazabileceğiniz bir çıkış konumu oluşturur. Adlandırılmış her çıkışın çıkış konumu şu şablonlu yolu temel alır: <default-datastore>/azureml/<job-name>/<output_name>/
. söz dizimi ile ${{outputs.<output_name>}}
parametresini command
parametreleştirmek, sistem tarafından oluşturulan yola yapılan başvuruyu çözümleyerek betiğinizin işten bu konuma dosya yazabilmesini sağlar.
Bir komut işi YAML dosyası için aşağıdaki örnekte, command
parametresi iki giriş, değişmez değer girişi ve veri girişi ve bir çıkış ile parametrelenmiştir. Çalışma zamanında, ${{inputs.learning_rate}}
ifade olarak 0.01
çözümlenir ve ${{inputs.iris}}
ifade dosyanın indirme yoluna iris.csv
çözümlenir. ${{outputs.model_dir}}
, çıkışa karşılık gelen sistem tarafından oluşturulan çıkış konumunun model_dir
bağlama yoluna çözümlenir.
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
code: ./src
command: python train.py --lr ${{inputs.learning_rate}} --training-data ${{inputs.iris}} --model-dir ${{outputs.model_dir}}
environment: azureml:AzureML-Minimal@latest
compute: azureml:cpu-cluster
inputs:
learning_rate: 0.01
iris:
type: uri_file
path: https://azuremlexamples.blob.core.windows.net/datasets/iris.csv
mode: download
outputs:
model_dir:
bir süpürme işinin search_space
bağlamıyla parametresini belirleme command
Hiper parametrelerin gerçek değerleri iş yazma zamanında bilinmediğinden, süpürme işi aracılığıyla hiper parametre ayarlaması yaparken de bu ifade söz dizimini kullanacaksınız. Süpürme işini çalıştırdığınızda, Azure Machine Learning her deneme için hiper parametre değerlerini temel alarak search_space
seçer. Eğitim betiğinizdeki bu değerlere erişmek için bunları betiğin komut satırı bağımsız değişkenleri aracılığıyla geçirmeniz gerekir. Bunu yapmak için içindeki söz dizimini trial.command
kullanın${{search_space.<hyperparameter>}}
.
Bir süpürme işi YAML dosyası için aşağıdaki örnekte ve ${{search_space.boosting}}
başvurularıtrial.command
, ${{search_space.learning_rate}}
deneme işi yürütme için gönderildiğinde her deneme için seçilen gerçek hiper parametre değerlerine çözümlenir.
$schema: https://azuremlschemas.azureedge.net/latest/sweepJob.schema.json
type: sweep
sampling_algorithm:
type: random
search_space:
learning_rate:
type: uniform
min_value: 0.01
max_value: 0.9
boosting:
type: choice
values: ["gbdt", "dart"]
objective:
goal: minimize
primary_metric: test-multi_logloss
trial:
code: ./src
command: >-
python train.py
--training-data ${{inputs.iris}}
--lr ${{search_space.learning_rate}}
--boosting ${{search_space.boosting}}
environment: azureml:AzureML-Minimal@latest
inputs:
iris:
type: uri_file
path: https://azuremlexamples.blob.core.windows.net/datasets/iris.csv
mode: download
compute: azureml:cpu-cluster
İşlem hattı işindeki adımlar arasında girişleri ve çıkışları bağlama
İfadeler, bir işlem hattı işindeki adımlar arasında girişleri ve çıkışları bağlamak için de kullanılır. Örneğin, bir işlem hattındaki bir işin (B işi) girişini başka bir işin (A işi) çıkışına bağlayabilirsiniz. Bu kullanım Azure Machine Learning'e işlem hattı grafiğinin bağımlılık akışını gösterir ve A işinin çıkışı B işi için giriş olarak gerekli olduğundan B işi A işinden sonra yürütülür.
bir işlem hattı işi YAML dosyası için, inputs
her alt işin ve outputs
bölümleri üst bağlam (üst düzey işlem hattı işi) içinde değerlendirilir. command
Öte yandan , geçerli bağlama (alt iş) çözümlenir.
İşlem hattı işinde girişleri ve çıkışları bağlamanın iki yolu vardır:
İşlem hattı işinin en üst düzey girişlerine ve çıkışlarına bağlama
Bir alt işin (işlem hattı adımı) girişlerini veya çıkışlarını, aşağıdaki söz dizimini kullanarak üst düzey üst işlem hattı işinin girişlerine/çıkışlarına bağlayabilirsiniz: ${{parent.inputs.<input_name>}}
veya ${{parent.outputs.<output_name>}}
. Bu başvuru bağlama çözümlenmiştir parent
; bu nedenle en üst düzey girişler/çıkışlar.
Aşağıdaki örnekte, ilk prep
adımın girişi (raw_data
) aracılığıyla ${{parent.inputs.input_data}}
üst düzey işlem hattı girişine bağlıdır. Son train
adımın çıktısı (model_dir
), aracılığıyla ${{parent.outputs.trained_model}}
en üst düzey işlem hattı işi çıkışına bağlıdır.
Başka bir alt işin girişlerine ve çıkışlarına bağlama (adım)
Bir adımın girişlerini/çıkışlarını başka bir adımın girişlerine/çıkışlarına bağlamak için aşağıdaki söz dizimini kullanın: ${{parent.jobs.<step_name>.inputs.<input_name>}}
veya ${{parent.jobs.<step_name>.outputs.<outputs_name>}}
. Bu başvuru üst bağlama çözümlenmiştir, bu nedenle ifade ile parent.jobs.<step_name>
başlamalıdır.
Aşağıdaki örnekte, adımın girişi (training_data
) train
aracılığıyla ${{parent.jobs.prep.outputs.clean_data}}
adımın çıkışına prep
(clean_data
) bağlıdır. Adımdan prep
hazırlanan veriler, adım için train
eğitim verileri olarak kullanılır.
Öte yandan, özellikler içindeki command
bağlam başvuruları geçerli bağlama çözümlenir. Örneğin, ${{inputs.raw_data}}
adımdaki prep
command
başvuru geçerli bağlamın girişlerine (alt iş) prep
çözümlenir. Arama üzerinde prep.inputs
yapılır, bu nedenle adlı raw_data
bir girişin orada tanımlanması gerekir.
$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
inputs:
input_data:
type: uri_folder
path: https://azuremlexamples.blob.core.windows.net/datasets/cifar10/
outputs:
trained_model:
jobs:
prep:
type: command
inputs:
raw_data: ${{parent.inputs.input_data}}
outputs:
clean_data:
code: src/prep
environment: azureml:AzureML-Minimal@latest
command: >-
python prep.py
--raw-data ${{inputs.raw_data}}
--prep-data ${{outputs.clean_data}}
compute: azureml:cpu-cluster
train:
type: command
inputs:
training_data: ${{parent.jobs.prep.outputs.clean_data}}
num_epochs: 1000
outputs:
model_dir: ${{parent.outputs.trained_model}}
code: src/train
environment: azureml:AzureML-Minimal@latest
command: >-
python train.py
--epochs ${{inputs.num_epochs}}
--training-data ${{inputs.training_data}}
--model-output ${{outputs.model_dir}}
compute: azureml:gpu-cluster
bir bileşenin command
inputs
ve outputs
bağlamlarıyla parametresini parametreleştirme
bir işinkine benzer şekildecommand
, command
bir bileşen için de ve outputs
bağlamlarına başvurularla inputs
parametreleştirilebilir. Bu durumda başvuru, bileşenin girişlerine ve çıkışlarına yöneliktir. Bileşen bir işte çalıştırıldığında, Azure Machine Learning ilgili bileşen girişleri ve çıkışları için belirtilen iş çalışma zamanı giriş ve çıkış değerlerine yapılan başvuruları çözümler. Aşağıda, bir komut bileşeni YAML belirtimi için bağlam söz dizimini kullanma örneği verilmiştir.
$schema: https://azuremlschemas.azureedge.net/latest/commandComponent.schema.json
name: train_data_component_cli
display_name: train_data
description: A example train component
tags:
author: azureml-sdk-team
type: command
inputs:
training_data:
type: uri_folder
max_epocs:
type: integer
optional: true
learning_rate:
type: number
default: 0.01
optional: true
learning_rate_schedule:
type: string
default: time-based
optional: true
outputs:
model_output:
type: uri_folder
code: ./train_src
environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
command: >-
python train.py
--training_data ${{inputs.training_data}}
$[[--max_epocs ${{inputs.max_epocs}}]]
$[[--learning_rate ${{inputs.learning_rate}}]]
$[[--learning_rate_schedule ${{inputs.learning_rate_schedule}}]]
--model_output ${{outputs.model_output}}
Komut satırında isteğe bağlı girişleri tanımlama
Giriş olarak optional = true
ayarlandığında, komut satırını girişlerle benimsemek için komutunu kullanmanız $[[]]
gerekir. Örneğin, $[[--input1 ${{inputs.input1}}]
. Çalışma zamanındaki komut satırında farklı girişler olabilir.
- Yalnızca gerekli
training_data
vemodel_output
parametreleri kullanıyorsanız komut satırı şöyle görünür:
python train.py --training_data some_input_path --learning_rate 0.01 --learning_rate_schedule time-based --model_output some_output_path
Çalışma zamanında learning_rate
hiçbir değer belirtilmezse ve learning_rate_schedule
varsayılan değeri kullanır.
- Tüm girişler/çıkışlar çalışma zamanı sırasında değerler sağlıyorsa komut satırı şöyle görünür:
python train.py --training_data some_input_path --max_epocs 10 --learning_rate 0.01 --learning_rate_schedule time-based --model_output some_output_path
Çıkış yolu ifadeleri
Aşağıdaki ifadeler işinizin çıkış yolunda kullanılabilir:
Önemli
Aşağıdaki ifadeler istemci tarafında değil sunucu tarafında çözümlenir. İş oluşturma zamanı ile iş gönderme süresinin farklı olduğu zamanlanmış işler için, iş gönderildiğinde ifadeler çözümlenir. Bu ifadeler sunucu tarafında çözümlendiğinden, zamanlanan işin oluşturulduğu çalışma alanının durumunu değil, çalışma alanının geçerli durumunu kullanırlar. Örneğin, zamanlanmış bir iş oluşturduktan sonra çalışma alanının varsayılan veri depolarını değiştirirseniz, ifade ${{default_datastore}}
zamanlanan iş oluşturulduğunda varsayılan veri deposuna değil yeni varsayılan veri deposuna çözümlenir.
Expression | Açıklama | Scope |
---|---|---|
${{default_datastore}} |
İşlem hattı varsayılan veri deposu yapılandırıldıysa, işlem hattı varsayılan veri deposu adı olarak çözümlenir; aksi takdirde çalışma alanı varsayılan veri deposu adı olarak çözümlenir. İşlem hattı varsayılan veri deposu kullanılarak pipeline_job.settings.default_datastore denetlenebilir. |
Tüm işlerde çalışır. İşlem hattı işlerinin yapılandırılabilir bir işlem hattı varsayılan veri deposu vardır. |
${{name}} |
İş adı. İşlem hatları için işlem hattı iş adı değil adım iş adıdır. | Tüm işler için çalışır |
${{output_name}} |
İş çıktı adı | Tüm işler için çalışır |
Örneğin, çıkış yolu olarak kullanılırsa azureml://datastores/${{default_datastore}}/paths/${{name}}/${{output_name}}
, çalışma zamanında yolu azureml://datastores/workspaceblobstore/paths/<job-name>/model_path
olarak çözümlenir.