Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
ŞUNLAR 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 esneklik sağlar ve yeniden kullanımı etkinleştirir. Azure Machine Learning işlem hatları YAML'de tanımlanabilir ve CLI'dan çalıştırılabilir, Python'da yazılabilir veya sürükle bırak kullanıcı arabirimi aracılığıyla Azure Machine Learning Studio Tasarımcısı'nda oluşturulabilir. Bu makale CLI'ya odaklanır.
Önkoşullar
Bir Azure aboneliği. Hesabınız yoksa başlamadan önce ücretsiz bir hesap oluşturun. Azure Machine Learning'in ücretsiz veya ücretli sürümünü deneyin.
Machine Learning için Azure CLI uzantısı, yüklü ve ayarlanmıştır.
Örnek deposunun bir kopyası. Depoyu kopyalamak için şu komutları kullanabilirsiniz:
git clone https://github.com/Azure/azureml-examples --depth 1 cd azureml-examples/cli/jobs/pipelines-with-components/basics
Önerilen ön okuma
Bileşenlerle ilk işlem hattınızı oluşturma
İlk olarak, bir örnek kullanarak bileşenlerle bir işlem hattı oluşturacaksınız. Bunu yaptığınızda azure machine learning'de işlem hattı ve bileşenin nasıl göründüğüne ilişkin bir ilk izlenim edinebilirsiniz.
Deponun cli/jobs/pipelines-with-components/basics dizininde azureml-examplesalt 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. Tam makine öğrenmesi görevinin çok adımlı bir iş akışına nasıl bölündiği açıklanır. Örneğin, bir satış tahmini modelini eğitmek için geçmiş verileri kullanmanın basit makine öğrenmesi görevini göz önünde bulundurun. Veri işleme, model eğitimi ve model değerlendirme adımlarını içeren 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ğlanyacağı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çirilir.
component.yml. Bu YAML dosyaları bileşenleri tanımlar. Bunlar aşağıdaki bilgileri içerir:
- 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 eğitim verilerini ve dönem sayısını giriş olarak 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. komutu, bileşeni çalıştırmak 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. Bunlar, belirli bileşenler için kaynak kod dizinleridir. Bunlar, bileşende çalıştırılacak kaynak kodunu içerir. Python, R ve diğerleri dahil olmak üzere tercih ettiğiniz dili kullanabilirsiniz. Kod bir shell komutu ile çalıştırılmalıdır. Kaynak kodu, bu adımın nasıl çalıştırıldığını 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ı ve 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 3b_pipeline_with_data örneğini kullanarak bir işlem hattı oluşturacaksınız. Her dosya aşağıdaki bölümlerde daha ayrıntılı olarak açıklanmıştır.
İlk olarak, aşağıdaki komutu kullanarak kullanılabilir işlem kaynaklarınızı listeleyin:
az ml compute list
Bu kümeye sahip değilseniz şu komutu ç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 komutu çalıştırarak 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. Muhtemelen bu noktada Preparing olacaktır. |
İşlem hattının services.Studio.endpoint görselleştirmesini görmek için URL'ye gidin:
YAML işlem hattı tanımını anlama
Şimdi 3b_pipeline_with_data/pipeline.yml dosyasında işlem hattı tanımına bakacaksınız.
Not
Sunucusuz işlem kullanmak için değerini bu dosyada ile default_compute: azureml:cpu-cluster değiştirindefault_compute: azureml:serverless.
$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
Aşağıdaki 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.
| Tuş | Açıklama |
|---|---|
type |
Gerekli. İş türü.
pipeline işlem hattı işleri için olmalıdır. |
display_name |
Stüdyo kullanıcı arabirimindeki işlem hattı görevinin görünen adı. Stüdyo kullanıcı arabiriminde düzenlenebilir. Çalışma alanı içindeki tüm işlerde benzersiz olması gerekmez. |
jobs |
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. Geçerli sürümde, işlem hattında desteklenen iş türleri command ve sweep şeklindedir. |
inputs |
İşlem hattı görevi için bir giriş sözlüğü. Anahtar, iş bağlamında girişin adıdır ve değer giriş değeridir. İşlem hattının belirli bir adımındaki işin girişlerine, işlem hattı girişlerine ${{ parent.inputs.<input_name> }} ifadesini kullanarak başvurabilirsiniz. |
outputs |
İşlem hattı işinin çıkış yapılandırmalarının sözlüğü. Anahtar, işin bağlamında çıkışın adıdır ve değer çıkış yapılandırmasıdır.
${{ parents.outputs.<output_name> }} ifadesini kullanarak işlemler zincirindeki belirli bir adımın çıktılarına göre bu işlem hattı çıktıları referans alınabilir. |
3b_pipeline_with_data örneği üç adımlı bir işlem hattı içerir.
- Üç adım altında
jobstanımlanır. Üç adım dacommandtipindedir. Her adımın tanımı karşılık gelencomponent*.ymlbir dosyada yer alır. Bileşen YAML dosyalarını 3b_pipeline_with_data dizininde görebilirsiniz.componentA.ymlsonraki bölümde açıklanmıştır. - Bu işlem hattı, gerçek dünya işlem hatlarında yaygın olarak kullanılan veri bağımlılığına sahiptir. Bileşen A, (satır 18-21) altındaki
./datayerel bir klasörden veri girişi alır ve çıktısını B bileşenine (29. satır) geçirir. Bileşen A'nın çıkışı${{parent.jobs.component_a.outputs.component_a_output}}olarak referans verilebilir. -
default_computeişlem hattı için varsayılan işlem değerini tanımlar. altındakijobsbir bileşen farklı bir işlem tanımlarsa, bileşene özgü ayarlara uyulur.
İşlem hattındaki verileri okuma ve yazma
Yaygın senaryolardan biri, işlem hattındaki verileri okumak ve yazmaktır. Azure Machine Learning'de tüm iş türlerine (işlem hattı işleri, komut işleri ve süpürme işleri) yönelik verileri okumak ve yazmak için aynı şemayı kullanırsınız. Yaygın senaryolar için işlem hatlarında veri kullanma örnekleri aşağıda verilmiştir:
- Yerel veriler
- Genel URL'si olan web dosyası
- Azure Machine Learning veri deposu ve yolu
- Azure Machine Learning veri varlığı
YAML bileşen tanımını anlama
Bir bileşeni tanımlayan YAML örneği olan componentA.yml dosyası aşağıda verilmişti:
$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}}
Bu tablo, BILEŞEN YAML'nin en yaygın kullanılan alanlarını tanımlar. Daha fazla bilgi edinmek için tam bileşen YAML şemasına bakın.
| Tuş | Açıklama |
|---|---|
name |
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 çizgilere (_) izin verilir. Uzunluk üst sınırı 255 karakterdir. |
display_name |
Studio kullanıcı arabirimindeki bileşenin görünen adı. Çalışma alanı içinde benzersiz olması gerekmez. |
command |
Gerekli. Çalıştırılacak komut. |
code |
Yüklenecek ve bileşen için kullanılacak kaynak kod dizininin yerel yolu. |
environment |
Gerekli. Bileşeni çalıştırmak için kullanılan ortam. |
inputs |
Bileşen girişlerinin sözlüğü. anahtar, bileşen bağlamında girişin adıdır ve değer de bileşen giriş tanımıdır.
${{ inputs.<input_name> }} ifadesini kullanarak komuttaki girişlere başvurabilirsiniz. |
outputs |
Bileşen çıkışları sözlüğü. Anahtar, bileşen bağlamındaki çıkışın adıdır ve değer bileşen çıkış tanımıdır. Komuttaki çıktılara ${{ outputs.<output_name> }} ifadesini kullanarak başvurabilirsiniz. |
is_deterministic |
Bileşen girişleri değişmezse önceki işin sonucunun yeniden kullanılıp yeniden kullanılmayacağı. Varsayılan değer şudur: true. Bu ayar varsayılan olarak yeniden kullanım olarak da bilinir. olarak ayarlandığında false yaygın senaryo, verileri bulut depolama alanından veya URL'den yeniden yüklemeye zorlamaktır. |
3b_pipeline_with_data/componentA.yml'deki örnekte, A bileşeninin bir veri girişi ve bir veri çıkışı vardır ve bu giriş üst işlem hattındaki diğer adımlara bağlanabilir. İş hattı görevi gönderildiğinde, bileşenin YAML bölümündeki tüm dosyalar code Azure Machine Learning'e yüklenir. Bu örnekte, ./componentA_src altındaki dosyalar karşıya yüklenecek. (satır 16 componentA.yml.) Karşıya yüklenen kaynak kodunu stüdyo kullanıcı arabiriminde görebilirsiniz: Aşağıdaki ekran görüntüsünde gösterildiği gibi grafikte componentA adımına çift tıklayın ve Kod sekmesine gidin. Basit bir yazdırma işlemi yapan bir hello-world betiği olduğunu ve geçerli tarih ve saati componentA_output yola yazdığını görebilirsiniz. Bileşen girişi alır ve komut satırı aracılığıyla çıkış sağlar.
hello.py aracılığıyla argparse işlenir.
Girdi ve çıktı
Giriş ve çıkış, bir bileşenin arabirimini tanımlar. Giriş ve çıkış, (string, number, integer veya boolean türünde) değişmez değerler ya da bir giriş şeması içeren bir nesne olabilir.
Nesne girişi (uri_file, uri_folder, mltable, mlflow_model veya custom_model türünde) üst işlem hattı işindeki diğer adımlara bağlanarak verileri/modelleri diğer adımlara geçirmek için kullanılabilir. İşlem hattı grafiğinde, nesne türü girişi bağlantı noktası olarak görüntülenir.
Değişmez değer girişleri (string, number, integer, boolean) çalışma zamanında bileşene geçirebileceğiniz parametrelerdir. "Literal girdiler için default alanına varsayılan bir değer ekleyebilirsiniz."
number ve integer türleri için, min ve max alanlarını kullanarak minimum ve maksimum değerleri de ekleyebilirsiniz. Giriş değeri en düşük değerden küçükse veya maksimum değerden fazlaysa işlem hattı doğrulama sırasında başarısız olur. Doğrulama, işlem hattı işi göndermeden önce gerçekleşir ve bu da zaman kazandırabilir. 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ı arabirimindeki bir doğrulama örneği gösterilmektedir. Benzer şekilde, enum alanlarında izin verilen değerleri tanımlayabilirsiniz.
Bir bileşene giriş eklemek istiyorsanız, üç yerde düzenleme yapmanız gerekir:
-
inputsYAML bileşenindeki alan. -
commandYAML bileşenindeki alan. - Komut satırı girişini işlemek için bileşen kaynak kodunda.
Bu konumlar, önceki ekran görüntüsünde yeşil kutularla işaretlenir.
Girişler ve çıkışlar hakkında daha fazla bilgi edinmek için bkz. Bileşenler ve işlem hatları için girişleri ve çıkışları yönetme.
Ortam
Ortam, bileşenin çalıştığı ortamdır. 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:
-
Kayıtlı Azure Machine Learning ortam varlığı. Bileşende
azureml:<environment-name>:<environment-version>sözdizimi ile çevreye referans verilir. - 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 kullanmaktan ve paylaşmaktan gelir. Bir bileşeni yeniden kullanılabilir hale getirmek için Machine Learning çalışma alanınıza kaydedebilirsiniz. Kayıtlı bileşenler otomatik sürüm oluşturma desteği sunar, böylece bileşeni güncelleştirebilirsiniz ancak eski bir sürüm gerektiren işlem hatlarının çalışmaya devam edeceğinden emin olabilirsiniz.
azureml-examples deposunda cli/jobs/pipelines-with-components/basics/1b_e2e_registered_components dizinine 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, Varlıkların>Bileşenleri altında Studio'daki 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 sekmesi bileşen adı, onu oluşturan kişi ve sürüm gibi temel bilgileri gösterir. Etiketler ve Açıklama için düzenlenebilir alanlar vardır. Arama anahtar sözcükleri eklemek için etiketleri kullanabilirsiniz. Açıklama alanı Markdown biçimlendirmesini destekler. Bileşeninizin işlevselliğini ve temel kullanımını açıklamak için bunu kullanmalısınız.
İşler sekmesinde, 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
Şimdi 1b_e2e_registered_components, işlem hattı YAML'de kayıtlı bileşenin nasıl kullanılacağını gösteren bir örnek olarak kullanacaksınız. Dizine 1b_e2e_registered_components gidin ve dosyayı açın pipeline.yml . ve inputs alanlarındaki outputs anahtarlar ve değerler, daha önce tartışılanlara benzer. Tek önemli fark, girişlerdeki component alanın değeridirjobs.<job_name>.component.
component değer azureml:<component_name>:<component_version> şeklindedir.
train-job Örneğin tanım, kayıtlı bileşenin my_train en son sürümünün kullanılması gerektiğini 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şenleri yönetebilirsiniz. Bileşen komutları hakkında ayrıntılı yönergeler 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.
| Komut | Açıklama |
|---|---|
az ml component create |
Bir bileşen oluşturun. |
az ml component list |
Çalışma alanında bileşenleri listeleme. |
az ml component show |
Bir bileşenin ayrıntılarını gösterin. |
az ml component update |
Bir bileşeni güncelleştirme. Yalnızca birkaç alan (açıklama, display_name) güncelleştirmeyi destekler. |
az ml component archive |
Bir bileşen kapsayıcısı arşivleyin. |
az ml component restore |
Arşivlenmiş bir bileşeni geri yükleme. |
Sonraki adım
- CLI v2 bileşeni örneğini deneyin