Azure Machine Learning CLI ile bileşenleri kullanarak makine öğrenmesi işlem hatları oluşturma ve çalıştırma
ŞUNUN IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v2 (geçerli)
Bu makalede, Azure CLI ve bileşenleri kullanarak makine öğrenmesi işlem hatları oluşturmayı ve çalıştırmayı öğreneceksiniz. Bileşenleri kullanmadan işlem hatları oluşturabilirsiniz, ancak bileşenler en fazla esneklik ve yeniden kullanım sunar. Azure Machine Learning İşlem Hatları YAML'de tanımlanabilir ve CLI'dan çalıştırılabilir, Python'da yazılabilir veya sürükleyip bırakma kullanıcı arabirimiyle Azure Machine Learning stüdyosu Tasarım Aracı oluşturulabilir. Bu belge CLI'ya odaklanır.
Önkoşullar
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ı. Çalışma alanı kaynakları oluşturun.
Machine Learning için Azure CLI uzantısını yükleyin ve ayarlayın.
Örnek deposunu kopyalayın:
git clone https://github.com/Azure/azureml-examples --depth 1 cd azureml-examples/cli/jobs/pipelines-with-components/basics
Önerilen ön okuma
Bileşenle ilk işlem hattınızı oluşturma
Şimdi bir örnek kullanarak bileşenlerle ilk işlem hattınızı oluşturalım. Bu bölüm, bir işlem hattının ve bileşenin Azure Machine Learning'de nasıl göründüğüne ilişkin ilk izlenimi size somut bir örnekle sunmayı amaçlamaktadır.
Deponun cli/jobs/pipelines-with-components/basics
dizininden azureml-examples
alt dizine 3b_pipeline_with_data
gidin. Bu dizinde üç tür dosya vardır. Bunlar, kendi işlem hattınızı oluştururken oluşturmanız gereken dosyalardır.
pipeline.yml: Bu YAML dosyası, makine öğrenmesi işlem hattını tanımlar. Bu YAML dosyasında, tam makine öğrenmesi görevinin çok adımlı bir iş akışına nasıl bölündiği açıklanır. Örneğin, geçmiş verileri kullanarak satış tahmini modelini eğitmeye yönelik basit bir makine öğrenmesi görevini göz önünde bulundurarak, veri işleme, model eğitimi ve model değerlendirme adımlarıyla sıralı bir iş akışı oluşturmak isteyebilirsiniz. Her adım, iyi tanımlanmış bir arabirime sahip olan ve bağımsız olarak geliştirilebilen, test edilebilen ve iyileştirilebilen bir bileşendir. İşlem hattı YAML, alt adımların işlem hattındaki diğer adımlara nasıl bağlanacağını da tanımlar; örneğin, model eğitim adımı bir model dosyası oluşturur ve model dosyası bir model değerlendirme adımına geçer.
component.yml: Bu YAML dosyası bileşeni tanımlar. Aşağıdaki bilgileri paketler:
- Meta veriler: ad, görünen ad, sürüm, açıklama, tür vb. Meta veriler, bileşeni açıklamaya ve yönetmeye yardımcı olur.
- Arabirim: girişler ve çıkışlar. Örneğin, bir model eğitim bileşeni giriş olarak eğitim verilerini ve dönem sayısını alır ve çıktı olarak eğitilmiş bir model dosyası oluşturur. Arabirim tanımlandıktan sonra, farklı ekipler bileşeni bağımsız olarak geliştirebilir ve test edebilir.
- Komut, kod ve ortam: bileşeni çalıştırmak için komut, kod ve ortam. Komut, bileşeni yürütmek için kullanılan kabuk komutudur. Kod genellikle bir kaynak kod dizinine başvurur. Ortam bir Azure Machine Learning ortamı (seçilmiş veya müşteri tarafından oluşturulmuş), docker görüntüsü veya conda ortamı olabilir.
component_src: Bu, belirli bir bileşenin kaynak kod dizinidir. Bileşende yürütülen kaynak kodunu içerir. Tercih ettiğiniz dili (Python, R...) kullanabilirsiniz. Kod bir kabuk komutuyla yürütülmelidir. Kaynak kodu, bu adımın nasıl yürütüleceğini denetlemek için kabuk komut satırından birkaç giriş alabilir. Örneğin, bir eğitim adımı eğitim sürecini denetlemek için eğitim verilerini, öğrenme oranını, dönem sayısını alabilir. Bir kabuk komutunun bağımsız değişkeni, koda girişleri ve çıkışları geçirmek için kullanılır.
Şimdi örneği kullanarak 3b_pipeline_with_data
bir işlem hattı oluşturalım. Her dosyanın ayrıntılı anlamını aşağıdaki bölümlerde açıklıyoruz.
İlk olarak aşağıdaki komutla kullanılabilir işlem kaynaklarınızı listeleyin:
az ml compute list
Bu kümeye sahip değilseniz, komutunu çalıştırarak adlı cpu-cluster
bir küme oluşturun:
Not
Sunucusuz işlem kullanmak için bu adımı atlayın.
az ml compute create -n cpu-cluster --type amlcompute --min-instances 0 --max-instances 10
Şimdi aşağıdaki komutla pipeline.yml dosyasında tanımlanan bir işlem hattı işi oluşturun. İşlem hedefini pipeline.yml dosyasında olarak başvurulur azureml:cpu-cluster
. İşlem hedefiniz farklı bir ad kullanıyorsa pipeline.yml dosyasında güncelleştirmeyi unutmayın.
az ml job create --file pipeline.yml
İşlem hattı işi hakkında aşağıdaki bilgileri içeren bir JSON sözlüğü almanız gerekir:
Tuş | Açıklama |
---|---|
name |
İşin GUID tabanlı adı. |
experiment_name |
İşlerin stüdyoda düzenlendiği ad. |
services.Studio.endpoint |
İşlem hattı işini izlemek ve gözden geçirmek için bir URL. |
status |
İşin durumu. Bu büyük olasılıkla bu noktada olacaktır Preparing . |
İşlem hattının services.Studio.endpoint
grafik görselleştirmesini görmek için URL'yi açın.
YAML işlem hattı tanımını anlama
şimdi 3b_pipeline_with_data/pipeline.yml dosyasındaki işlem hattı tanımına göz atalım.
Not
Sunucusuz işlem kullanmak için değerini bu dosyada ile default_compute: azureml:serverless
değiştirindefault_compute: azureml:cpu-cluster
.
$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
display_name: 3b_pipeline_with_data
description: Pipeline with 3 component jobs with data dependencies
settings:
default_compute: azureml:cpu-cluster
outputs:
final_pipeline_output:
mode: rw_mount
jobs:
component_a:
type: command
component: ./componentA.yml
inputs:
component_a_input:
type: uri_folder
path: ./data
outputs:
component_a_output:
mode: rw_mount
component_b:
type: command
component: ./componentB.yml
inputs:
component_b_input: ${{parent.jobs.component_a.outputs.component_a_output}}
outputs:
component_b_output:
mode: rw_mount
component_c:
type: command
component: ./componentC.yml
inputs:
component_c_input: ${{parent.jobs.component_b.outputs.component_b_output}}
outputs:
component_c_output: ${{parent.outputs.final_pipeline_output}}
# mode: upload
Tabloda, işlem hattı YAML şemasının en yaygın kullanılan alanları açıklanmaktadır. Daha fazla bilgi edinmek için tüm işlem hattı YAML şemasına bakın.
anahtar | açıklama |
---|---|
Tür | Gerekli. İş türü işlem hattı işleri için olmalıdır pipeline . |
display_name | Studio kullanıcı arabiriminde işlem hattı işinin görünen adı. Studio kullanıcı arabiriminde düzenlenebilir. Çalışma alanı içindeki tüm işlerde benzersiz olması gerekmez. |
Işleri | Gerekli. İşlem hattı içinde adım olarak çalıştırılacak tek tek işler kümesinin sözlüğü. Bu işler, üst işlem hattı işinin alt işleri olarak kabul edilir. Bu sürümde işlem hattında desteklenen iş türleri şunlardır command : ve sweep |
Giriş | İşlem hattı işine girişlerin sözlüğü. anahtar, iş bağlamında girişin adı ve değer giriş değeridir. Bu işlem hattı girişlerine$ {{ parent.inputs kullanılarak işlem hattındaki tek bir adımlı işin girişleri tarafından başvurulabilir.<> }} ifadesini input_name. |
Çıkış | İşlem hattı işinin çıkış yapılandırmaları sözlüğü. Anahtar, iş bağlamındaki çıkışın adıdır ve değer çıkış yapılandırmasıdır. Bu işlem hattı çıkışlarına$ {{ parents.outputs kullanılarak işlem hattındaki tek bir adımlı işin çıkışları tarafından başvurulabilir.<> output_name }} ifadesi. |
3b_pipeline_with_data örnekte üç adımlı bir işlem hattı oluşturduk.
- Üç adım altında
jobs
tanımlanır. Üç adım türü de komut işidir. Her adımın tanımı ilgilicomponent.yml
dosyadadır. bileşen YAML dosyalarını 3b_pipeline_with_data dizinin altında görebilirsiniz. sonraki bölümde componentA.yml açıklayacağız. - Bu işlem hattı, çoğu gerçek işlem hattında yaygın olan veri bağımlılığına sahiptir. Component_a yerel klasörden
./data
(satır 17-20) altındaki veri girişini alır ve çıktısını componentB'ye (29. satır) geçirir. Component_a çıktısı olarak${{parent.jobs.component_a.outputs.component_a_output}}
başvurulabilir. - ,
compute
bu işlem hattı için varsayılan işlem değerini tanımlar. altındakijobs
bir bileşen bu bileşen için farklı bir işlem tanımlıyorsa, sistem bileşene özgü ayara saygı gösterir.
İşlem hattında verileri okuma ve yazma
Yaygın senaryolardan biri, işlem hattınızdaki verileri okumak ve yazmaktır. Azure Machine Learning'de her tür iş (işlem hattı işi, komut işi ve süpürme işi) için verileri okumak ve yazmak için aynı şemayı kullanırız. Yaygın senaryolar için verileri kullanmaya yönelik işlem hattı işi örnekleri aşağıda verilmiştir.
- yerel veriler
- genel URL'ye sahip web dosyası
- Azure Machine Learning veri deposu ve yolu
- Azure Machine Learning veri varlığı
YAML bileşen tanımını anlama
Şimdi bileşen tanımı YAML'yi anlamak için örnek olarak componentA.yml bakalım.
$schema: https://azuremlschemas.azureedge.net/latest/commandComponent.schema.json
type: command
name: component_a
display_name: componentA
version: 1
inputs:
component_a_input:
type: uri_folder
outputs:
component_a_output:
type: uri_folder
code: ./componentA_src
environment:
image: python
command: >-
python hello.py --componentA_input ${{inputs.component_a_input}} --componentA_output ${{outputs.component_a_output}}
YAML bileşeninin en yaygın kullanılan şeması tabloda açıklanmıştır. Daha fazla bilgi edinmek için tam bileşen YAML şemasına bakın.
anahtar | açıklama |
---|---|
Adı | Gerekli. Bileşenin adı. Azure Machine Learning çalışma alanında benzersiz olmalıdır. Küçük harfle başlamalıdır. Küçük harflere, sayılara ve alt çizgiye(_) izin verin. Uzunluk üst sınırı 255 karakterdir. |
display_name | Studio kullanıcı arabiriminde bileşenin görünen adı. Çalışma alanı içinde nonunique olabilir. |
komut | Komutun yürütülmesini gerekli kılın |
kod | Yüklenecek ve bileşen için kullanılacak kaynak kod dizinine yönelik yerel yol. |
ortamı | Gerekli. Bileşeni yürütmek için kullanılan ortam. |
Giriş | Bileşen girişlerinin sözlüğü. anahtar, bileşen bağlamında girişin adı ve değer de bileşen giriş tanımıdır. Komutta ${{ girişleri kullanılarak girişlere başvurulabilir.<> }} ifadesini input_name. |
Çıkış | Bileşen çıkışlarının sözlüğü. Anahtar, bileşen bağlamındaki çıkışın adıdır ve değer bileşen çıkış tanımıdır. Çıkışlara komutta ${{ çıkışları kullanılarak başvurulabilir.<> output_name }} ifadesi. |
is_deterministic | Bileşen girişleri değişmediyse önceki işin sonucunun yeniden kullanılıp yeniden kullanılmayacağı. Varsayılan değer, true varsayılan olarak yeniden kullanım olarak da bilinir. Olarak false ayarlandığında yaygın senaryo, verileri bir bulut depolama alanından veya URL'den yeniden yüklemeye zorlamaktır. |
3b_pipeline_with_data/componentA.yml örneğinde componentA'nın bir veri girişi ve bir veri çıkışı vardır ve bu giriş üst işlem hattındaki diğer adımlara bağlanabilir. Bileşen YAML'deki bölümün altındaki code
tüm dosyalar işlem hattı işi gönderilirken Azure Machine Learning'e yüklenir. Bu örnekte, altındaki ./componentA_src
dosyalar karşıya yüklenir (componentA.yml 16. satır). Karşıya yüklenen kaynak kodunu Studio kullanıcı arabiriminde görebilirsiniz: Aşağıdaki ekran görüntüsünde gösterildiği gibi ComponentA adımını çift seçin ve Anlık Görüntü sekmesine gidin. Basit bir yazdırma işlemi yapan ve geçerli tarih saatlerini componentA_output
yola yazan bir hello-world betiği olduğunu görebiliriz. Bileşen, komut satırı bağımsız değişkeni aracılığıyla giriş ve çıkış alır ve kullanılarak argparse
hello.py işlenir.
Girdi ve çıktı
Giriş ve çıkış, bir bileşenin arabirimini tanımlar. Giriş ve çıkış değişmez değerlerden (türü string
,number
,integer
veya ) veya boolean
giriş şeması içeren bir nesne olabilir.
Nesne girişi (, uri_folder
,mltable
,,mlflow_model
custom_model
türündeuri_file
), üst işlem hattı işindeki diğer adımlara bağlanabilir ve bu nedenle verileri/modeli diğer adımlara geçirebilir. İşlem hattı grafında, nesne türü girişi bir bağlantı noktası olarak işlenir.
Değişmez değer girişleri (string
,number
,,boolean
integer
), çalışma zamanında bileşene geçirebileceğiniz parametrelerdir. Alanın altına default
değişmez değer girişlerinin varsayılan değerini ekleyebilirsiniz. ve integer
türü içinnumber
, ve max
alanlarını kullanarak min
kabul edilen değerin en düşük ve en yüksek değerini de ekleyebilirsiniz. Giriş değeri min ve max değerlerini aşarsa işlem hattı doğrulama sırasında başarısız olur. Doğrulama, zaman kazanmak için işlem hattı işi göndermeden önce gerçekleşir. Doğrulama CLI, Python SDK ve tasarımcı kullanıcı arabirimi için çalışır. Aşağıdaki ekran görüntüsünde tasarımcı kullanıcı arabiriminde bir doğrulama örneği gösterilmektedir. Benzer şekilde, alanda izin verilen değerleri enum
tanımlayabilirsiniz.
Bir bileşene giriş eklemek istiyorsanız üç yeri düzenlemeyi unutmayın:
inputs
yaml bileşenindeki alancommand
alanını seçin.- Komut satırı girişini işlemek için bileşen kaynak kodu. Önceki ekran görüntüsünde yeşil kutuda işaretlenmiştir.
Girişler ve çıkışlar hakkında daha fazla bilgi edinmek için bkz . Bileşen ve işlem hattı girişlerini ve çıkışlarını yönetme.
Ortam
Ortam, bileşeni yürütmek için ortamı tanımlar. Bir Azure Machine Learning ortamı (seçilmiş veya özel kayıtlı), docker görüntüsü veya conda ortamı olabilir. Aşağıdaki örneklere bakın.
- Azure Machine Learning kayıtlı ortam varlığı. Söz diziminde belirtilen bileşende
azureml:<environment-name>:<environment-version>
başvurulur. - genel docker görüntüsü
- conda dosyası Conda dosyasının temel görüntüyle birlikte kullanılması gerekir.
Bileşeni yeniden kullanmak ve paylaşmak için kaydetme
Bazı bileşenler belirli bir işlem hattına özgü olsa da, bileşenlerin gerçek avantajı yeniden kullanım ve paylaşımdır. Yeniden kullanılabilir hale getirmek için Machine Learning çalışma alanınıza bir bileşen kaydedin. Kayıtlı bileşenler, bileşeni güncelleştirebilmeniz için otomatik sürüm oluşturma desteği sunar, ancak daha eski bir sürüm gerektiren işlem hatlarının çalışmaya devam edeceğinden emin olabilirsiniz.
azureml-examples deposunda dizinine cli/jobs/pipelines-with-components/basics/1b_e2e_registered_components
gidin.
Bir bileşeni kaydetmek için komutunu az ml component create
kullanın:
az ml component create --file train.yml
az ml component create --file score.yml
az ml component create --file eval.yml
Bu komutlar tamamlandıktan sonra, Studio'da Varlık -> Bileşenler altında bileşenleri görebilirsiniz:
Bir bileşen seçin. Bileşenin her sürümü için ayrıntılı bilgiler görürsünüz.
Ayrıntılar sekmesinde, bileşenin ad, oluşturan, sürüm vb. gibi temel bilgilerini görürsünüz. Etiketler ve Açıklama için düzenlenebilir alanlar görürsünüz. Etiketler, hızlı bir şekilde aranan anahtar sözcükler eklemek için kullanılabilir. Açıklama alanı Markdown biçimlendirmesini destekler ve bileşeninizin işlevselliğini ve temel kullanımını açıklamak için kullanılmalıdır.
İşler sekmesinde, bu bileşeni kullanan tüm işlerin geçmişini görürsünüz.
İşlem hattı işi YAML dosyasında kayıtlı bileşenleri kullanma
İşlem hattı YAML'de kayıtlı bileşenin nasıl kullanılacağını tanıtım olarak kullanmak için kullanalım 1b_e2e_registered_components
. Dizine 1b_e2e_registered_components
gidin, dosyayı açın pipeline.yml
. ve outputs
alanlarındaki inputs
anahtarlar ve değerler, daha önce tartışılanlara benzer. Tek önemli fark, girişlerdeki jobs.<JOB_NAME>.component
alanın değeridircomponent
. component
Değer biçimindedirazureml:<COMPONENT_NAME>:<COMPONENT_VERSION>
. train-job
Örneğin tanım, kayıtlı bileşenin my_train
kullanılması gereken en son sürümü belirtir:
type: command
component: azureml:my_train@latest
inputs:
training_data:
type: uri_folder
path: ./data
max_epocs: ${{parent.inputs.pipeline_job_training_max_epocs}}
learning_rate: ${{parent.inputs.pipeline_job_training_learning_rate}}
learning_rate_schedule: ${{parent.inputs.pipeline_job_learning_rate_schedule}}
outputs:
model_output: ${{parent.outputs.pipeline_job_trained_model}}
services:
my_vscode:
Bileşenleri yönetme
CLI (v2) kullanarak bileşen ayrıntılarını denetleyebilir ve bileşeni yönetebilirsiniz. Bileşen komutuyla ilgili ayrıntılı yönergeleri almak için kullanın az ml component -h
. Aşağıdaki tabloda tüm kullanılabilir komutlar listelenir. Azure CLI başvurusundaki diğer örneklere bakın.
komutlar | açıklama |
---|---|
az ml component create |
Bileşen oluşturma |
az ml component list |
Çalışma alanında bileşenleri listeleme |
az ml component show |
Bileşenin ayrıntılarını gösterme |
az ml component update |
Bir bileşeni güncelleştirme. Yalnızca birkaç alan (açıklama, display_name) desteği güncelleştirmesi |
az ml component archive |
Bileşen kapsayıcısı arşivle |
az ml component restore |
Arşivlenmiş bileşeni geri yükleme |