CLI (v2) çekirdek YAML söz dizimi

ŞUNUN 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>
    
  • 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, abfssve adlve, 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 commandinputs

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 commandbaş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_spaceseç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.commandkullanı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 prepcommand başvuru geçerli bağlamın girişlerine (alt iş) prep çözümlenir. Arama üzerinde prep.inputsyapı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 commandinputs 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
version: 9
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.0/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 = trueayarlandığı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 ve model_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_datastoredenetlenebilir.
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_patholarak çözümlenir.

Sonraki adımlar