Çalıştırma geçmişini başlatma, izleme ve izleme

Python için Azure Machine Learning SDK, Machine Learning CLIve Azure Machine Learning Studio, eğitim ve deneme için çalıştırmalarınızı izlemek, düzenlemek ve izlemek için çeşitli yöntemler sağlar. Çalışma ML geçmişiniz, açıklanabilir ve yinelenebilir bir geliştirme sürecinin önemli ML bir parçasıdır.

Bu makalede aşağıdaki görevlerin nasıl gerçekleştirlnleri gösterir:

  • Çalıştırma performansını izleme.
  • Çalıştırma görünen adı ekleyin.
  • Özel bir görünüm oluşturun.
  • Çalıştırma açıklaması ekleyin.
  • Çalıştırmaları etiketleme ve bulma.
  • Çalıştırma geçmişiniz üzerinde arama çalıştırın.
  • Çalıştırmaları iptal etme veya başarısız etme.
  • Alt çalıştırmalar oluşturma.
  • E-posta bildirimiyle çalıştırma durumunu izleme.

İpucu

Azure Machine Learning hizmetini ve ilişkili Azure hizmetlerini izleme hakkında bilgi arıyorsanız bkz.Azure Machine Learning. Web hizmetleri olarak dağıtılan modelleri izleme hakkında bilgi arıyorsanız bkz. Model verilerini toplama ve Application Analizler.

Önkoşullar

Aşağıdaki öğelere ihtiyacınız vardır:

Çalıştırma performansını izleme

  • Çalıştırmayı ve günlüğe kaydetme işlemini başlatma

    1. azureml.core paketinden ÇalışmaAlanı, Deneme, Çalıştırmave ScriptRunConfig sınıflarını içeri aktararak denemenizi ayarlayın.

      import azureml.core
      from azureml.core import Workspace, Experiment, Run
      from azureml.core import ScriptRunConfig
      
      ws = Workspace.from_config()
      exp = Experiment(workspace=ws, name="explore-runs")
      
    2. çalıştırmasını ve günlüğe kaydetme işlemini yöntemiyle start_logging() başlatma.

      notebook_run = exp.start_logging()
      notebook_run.log(name="message", value="Hello from run!")
      
  • Çalıştırmanın durumunu izleme

    • yöntemiyle bir çalıştırmanın durumunu get_status() almak.

      print(notebook_run.get_status())
      
    • Çalıştırma kimliği, yürütme süresi ve çalıştırmayla ilgili diğer ayrıntıları almak için yöntemini get_details() kullanın.

      print(notebook_run.get_details())
      
    • Çalıştırmanız başarıyla tamamlandığında, tamamlandı complete() olarak işaretlemek için yöntemini kullanın.

      notebook_run.complete()
      print(notebook_run.get_status())
      
    • Python'ın tasarım desenini kullanırsanız, çalıştırma kapsam dışında olduğunda otomatik olarak tamamlandı with...as olarak işaretlenir. Çalıştırmayı el ile tamamlandı olarak işaretlemeniz gerekmez.

      with exp.start_logging() as notebook_run:
          notebook_run.log(name="message", value="Hello from run!")
          print(notebook_run.get_status())
      
      print(notebook_run.get_status())
      

Görünen Adı Çalıştır

Çalıştırma görünen adı, çalıştırmanız için sağlanabilir isteğe bağlı ve özelleştirilebilir bir addır. Çalıştırma görünen adını düzenlemek için:

  1. Çalıştırmalar listesine gidin.

  2. Çalıştırma ayrıntıları sayfasında görünen adı düzenlemek için çalıştırmayı seçin.

  3. Çalıştır görünen adını düzenlemek için Düzenle düğmesini seçin.

Ekran görüntüsü: görünen adı düzenleme

Özel Görünüm

Studio'da çalıştırmalarınızı görüntülemek için:

  1. Denemeler sekmesine gidin.

  2. Bir denemenin tüm çalıştırmalarını görüntülemek için Tüm denemeler'i veya Çalışma Alanında gönderilen tüm çalıştırmaları görüntülemek için Tüm çalıştırmalar'ı seçin.

Tüm çalıştırmalar sayfasında çalışmanızı daha iyi düzenlemek ve kapsamına eklemek için çalıştırma listesini etiketlere, denemelere, işlem hedefine ve daha birçok hedefe göre filtreleyebilirsiniz.

  1. Karşılaştırmak, grafik eklemek veya filtre uygulamak için çalıştırmaları seçerek sayfada özelleştirmeler yapma. Bu değişiklikler özel görünüm olarak kaydedilebilir, böylece çalışmanıza kolayca geri dönebilirsiniz. Çalışma alanı izinlerine sahip kullanıcılar özel görünümü düzenleyebilir veya görüntüleyemez. Ayrıca, Görünüm paylaş'ı seçerek gelişmiş işbirliği için özel görünümü ekip üyeleriyle paylaşın.

  2. Çalıştırma günlüklerini görüntülemek için belirli bir çalıştırmayı seçin ve Çıkışlar + günlükler sekmesinde çalıştırmanıza yönelik tanılama ve hata günlüklerini bulabilirsiniz.

Ekran görüntüsü: özel görünüm oluşturma

Çalıştırma açıklaması

Çalıştırmaya daha fazla bağlam ve bilgi sağlamak için çalıştırma açıklaması bir çalıştırmaya eklenebilir. Ayrıca çalıştırmalar listesinden bu açıklamaları arayabilir ve çalıştırma açıklamasını çalıştırmalar listesine sütun olarak ekleyebilirsiniz.

Çalıştırmanıza ilişkin Çalıştırma Ayrıntıları sayfasına gidin ve çalıştırmanıza açıklama eklemek, düzenlemek veya silmek için düzenleme veya kalem simgesini seçin. Değişiklikleri çalıştırmalar listesinde kalıcı yapmak için değişiklikleri mevcut Özel Görünüm veya yeni bir Özel Görünüme kaydedin. Markdown biçimi, aşağıda gösterildiği gibi görüntülerin ekli ve ayrıntılı bağlamaya olanak sağlayan çalıştırma açıklamaları için de desteklenmiştir.

Ekran görüntüsü: Çalıştırma açıklaması oluşturma

Çalıştırmaları etiketleme ve bulma

Bu Azure Machine Learning, önemli bilgiler için çalıştırmalarınızı düzenlemenize ve sorgulamanıza yardımcı olmak üzere özellikleri ve etiketleri kullanabilirsiniz.

  • Özellik ve etiket ekleme

    Çalıştırmalarınıza aranabilir meta veriler eklemek için yöntemini add_properties() kullanın. Örneğin, aşağıdaki kod "author" çalıştırmaya özelliğini ekler:

    local_run.add_properties({"author":"azureml-user"})
    print(local_run.get_properties())
    

    Özellikler sabittir, bu nedenle denetim amacıyla kalıcı bir kayıt oluşturabilirler. Yukarıdaki kodda özellik değeri olarak zaten eklenmiz nedeniyle aşağıdaki "azureml-user" kod "author" örneği bir hatayla sonuç verir:

    try:
        local_run.add_properties({"author":"different-user"})
    except Exception as e:
        print(e)
    

    Özelliklerden farklı olarak etiketler değiştirme özelliğine sahiptir. Denemenizin tüketicilerine aranabilir ve anlamlı bilgiler eklemek için yöntemini tag() kullanın.

    local_run.tag("quality", "great run")
    print(local_run.get_tags())
    
    local_run.tag("quality", "fantastic run")
    print(local_run.get_tags())
    

    Basit dize etiketleri de ekebilirsiniz. Bu etiketler, etiket sözlüğünde anahtar olarak görüntü olduğunda değerine sahip None olur.

    local_run.tag("worth another look")
    print(local_run.get_tags())
    
  • Sorgu özellikleri ve etiketleri

    Belirli özellikler ve etiketlerle eşan çalıştırmaların listesini dönmek için deneme içindeki çalıştırmaları sorguabilirsiniz.

    list(exp.get_runs(properties={"author":"azureml-user"},tags={"quality":"fantastic run"}))
    list(exp.get_runs(properties={"author":"azureml-user"},tags="worth another look"))
    

Çalıştırmaları iptal etme veya başarısız etme

Bir hata fark eder veya çalıştırmanın bitme işlemi çok uzun zaman alıyorsa çalıştırmayı iptal edebilirsiniz.

SDK kullanarak bir çalıştırmayı iptal etmek için yöntemini cancel() kullanın:

src = ScriptRunConfig(source_directory='.', script='hello_with_delay.py')
local_run = exp.submit(src)
print(local_run.get_status())

local_run.cancel()
print(local_run.get_status())

Çalıştırmanız tamam ancak hata içeriyorsa (örneğin, yanlış eğitim betiği kullanıldı), başarısız olarak işaretlemek fail() için yöntemini kullanabilirsiniz.

local_run = exp.submit(src)
local_run.fail()
print(local_run.get_status())

Alt çalıştırmalar oluşturma

Farklı hiperparametre ayarlama yinelemeleri gibi ilgili çalıştırmaları birlikte gruplama için alt çalıştırmalar oluşturun.

Not

Alt çalıştırmalar yalnızca SDK kullanılarak oluşturulabilir.

Bu kod örneği, yöntemini kullanarak gönderilen çalıştırmanın içinde beş alt hello_with_children.py çalıştırmadan toplu iş oluşturmak için betiği child_run() kullanır:

!more hello_with_children.py
src = ScriptRunConfig(source_directory='.', script='hello_with_children.py')

local_run = exp.submit(src)
local_run.wait_for_completion(show_output=True)
print(local_run.get_status())

with exp.start_logging() as parent_run:
    for c,count in enumerate(range(5)):
        with parent_run.child_run() as child:
            child.log(name="Hello from child run", value=c)

Not

Kapsamdan çıkarılırken alt çalıştırmalar otomatik olarak tamamlandı olarak işaretlenir.

Çok sayıda alt çalıştırmayı verimli bir şekilde oluşturmak için yöntemini create_children() kullanın. Her oluşturma bir ağ çağrısıyla sonuç olduğundan, toplu çalıştırmalar oluşturmak, bunları tek tek oluşturmaktan daha verimlidir.

Alt çalıştırmaları gönderme

Alt çalıştırmalar bir üst çalıştırmadan da gönder olabilir. Bu, üst ve alt çalıştırmaların hiyerarşilerini oluşturmanıza olanak sağlar. Üst öğesiz alt çalıştırma oluşturamazsınız: Üst çalıştırma yalnızca alt çalıştırmaları başlatsa bile hiyerarşi oluşturmak yine de gereklidir. Tüm çalıştırmaların durumları bağımsızdır: Bir veya daha fazla alt çalıştırma iptal edilmiş veya başarısız olsa bile üst öğe "Completed" başarılı durumda olabilir.

Alt çalıştırmaların, üst çalıştırmadan farklı bir çalıştırma yapılandırması kullanmasını da istensin. Örneğin, alt öğeniz için GPU tabanlı yapılandırmaları kullanırken üst öğe için daha az güçlü, CPU tabanlı bir yapılandırma kullanabilirsiniz. Bir diğer yaygın durum ise her alt bağımsız değişkenin ve verinin başarılı olmasını ifade etmektir. Bir alt çalıştırmayı özelleştirmek için alt çalıştırma ScriptRunConfig için bir nesnesi oluşturun.

Önemli

Uzak işlemdeki bir üst çalıştırmadan alt çalıştırma göndermek için önce üst çalıştırma kodundaki çalışma alanında oturum açabilirsiniz. Varsayılan olarak, uzak çalıştırmada çalıştırma bağlamı nesnesinin alt çalıştırmaları göndermek için kimlik bilgileri yok. Oturum açma için bir hizmet sorumlusu veya yönetilen kimlik kimlik bilgileri kullanın. Kimlik doğrulaması hakkında daha fazla bilgi için bkz. kimlik doğrulamasını ayarlama.

Aşağıdaki kod:

  • Çalışma alanında adlı bir "gpu-cluster" işlem kaynağını alır ws
  • Diğer nesnelere geçirilen farklı bağımsız değişken değerlerini ScriptRunConfig tekrarlar
  • Özel işlem kaynağını ve bağımsız değişkenlerini kullanarak yeni bir alt çalıştırma oluşturur ve gönderebilirsiniz
  • Tüm alt çalıştırmalar tamamlandıktan sonra bloklar
# parent.py
# This script controls the launching of child scripts
from azureml.core import Run, ScriptRunConfig

compute_target = ws.compute_targets["gpu-cluster"]

run = Run.get_context()

child_args = ['Apple', 'Banana', 'Orange']
for arg in child_args: 
    run.log('Status', f'Launching {arg}')
    child_config = ScriptRunConfig(source_directory=".", script='child.py', arguments=['--fruit', arg], compute_target=compute_target)
    # Starts the run asynchronously
    run.submit_child(child_config)

# Experiment will "complete" successfully at this point. 
# Instead of returning immediately, block until child runs complete

for child in run.get_children():
    child.wait_for_completion()

Aynı yapılandırmalara, bağımsız değişkenlere ve girişlere sahip birçok alt çalıştırmayı verimli bir şekilde oluşturmak için yöntemini create_children() kullanın. Her oluşturma bir ağ çağrısıyla sonuç olduğundan, toplu çalıştırmalar oluşturmak, bunları tek tek oluşturmaktan daha verimlidir.

Alt çalıştırmanın içinde üst çalıştırma kimliğini görüntüabilirsiniz:

## In child run script
child_run = Run.get_context()
child_run.parent.id

Alt çalıştırmaları sorgulama

Belirli bir üst öğenin alt çalıştırmalarını sorgulamak için yöntemini get_children() kullanın. bağımsız recursive = True değişkeni, iç içe geçmiş bir alt ve alt ağaç sorgulamaya olanak sağlar.

print(parent_run.get_children())

Üst veya kök çalıştırmada oturum açma

Geçerli alt Run.parent çalıştırmayı başlatan çalıştırmaya erişmek için alanını kullanabilirsiniz. günlük sonuçlarını tek bir yerde Run.parent birleştirmek, kullanım için yaygın bir kullanım örneğindir. Alt çalıştırmalar zaman uyumsuz olarak yürütülür ve üst öğenin alt çalıştırmalarının tamamlandıktan sonra beklemesi dışında sıralama veya eşitleme garantisi yoktur.

# in child (or even grandchild) run

def root_run(self : Run) -> Run :
    if self.parent is None : 
        return self
    return root_run(self.parent)

current_child_run = Run.get_context()
root_run(current_child_run).log("MyMetric", f"Data from child run {current_child_run.id}")

E-posta bildirimiyle çalıştırma durumunu izleme

  1. Giriş Azure portalsol gezinti çubuğunda İzleyici sekmesini seçin.

  2. Tanılama ayarları'ı ve ardından + Tanılama ayarı ekle'yi seçin.

    E-posta bildirimi için tanılama ayarlarının ekran görüntüsü

  3. Tanılama Ayarında,

    1. Kategori ayrıntıları altında AmlRunStatusChangedEvent öğesini seçin.
    2. Hedef ayrıntılarında Log Analytics'e Gönder çalışma alanını seçin ve Abonelik ve Log Analytics çalışma alanını belirtin.

    Not

    Azure Log Analytics Çalışma Alanı, Hizmet Çalışma Alanı'Azure Machine Learning farklı türde bir Azure Kaynağıdır. Bu listede seçenek yoksa bir Log Analytics Çalışma Alanı oluşturabilirsiniz.

    E-posta bildiriminin kaydedilmesi gereken yer

  4. Günlükler sekmesinde yeni bir uyarı kuralı ekleyin.

    Yeni uyarı kuralı

  5. Günlük uyarılarını oluşturmak ve yönetmek için bkz. Azure İzleyici.

Örnek not defterleri

Aşağıdaki not defterleri bu makaledeki kavramları gösteriyor:

  • Günlük API'leri hakkında daha fazla bilgi edinmek için bkz. günlüğe kaydetme API'si not defteri.

  • Azure Machine Learning SDK ile çalıştırmaları yönetme hakkında daha fazla bilgi için çalıştırmaları yönetme not defterine bakın.

Sonraki adımlar