Öğretici: Bulut iş istasyonunda model geliştirme

Azure Machine Learning bulut iş istasyonunda not defteriyle eğitim betiği geliştirmeyi öğrenin. Bu öğreticide, kullanmaya başlamak için ihtiyacınız olan temel bilgiler yer alır:

  • Bulut iş istasyonunu ayarlama ve yapılandırma. Bulut iş istasyonunuz, çeşitli model geliştirme gereksinimlerinizi desteklemek için ortamlarla önceden yapılandırılmış bir Azure Machine Learning işlem örneği tarafından desteklenir.
  • Bulut tabanlı geliştirme ortamlarını kullanın.
  • Model ölçümlerinizi bir not defteri içinden izlemek için MLflow kullanın.

Ön koşullar

Azure Machine Learning'i kullanmak için öncelikle bir çalışma alanı gerekir. Bir çalışma alanınız yoksa, çalışma alanı oluşturmaya başlamak ve bu çalışma alanını kullanma hakkında daha fazla bilgi edinmek için ihtiyacınız olan kaynakları oluşturma'yı tamamlayın.

Not Defterleri ile başlama

Çalışma alanınızdaki Not Defterleri bölümü, Azure Machine Learning ve özellikleri hakkında bilgi edinmeye başlamak için iyi bir yerdir. Burada işlem kaynaklarına bağlanabilir, bir terminalle çalışabilir ve Jupyter Not Defterlerini ve betiklerini düzenleyip çalıştırabilirsiniz.

  1. Azure Machine Learning stüdyosu oturum açın.

  2. Henüz açık değilse çalışma alanınızı seçin.

  3. Sol gezinti bölmesinde Not Defterleri'ni seçin.

  4. İşlem örneğiniz yoksa ekranın ortasında İşlem oluştur'u görürsünüz. İşlem oluştur'u seçin ve formu doldurun. Tüm varsayılan değerleri kullanabilirsiniz. (Zaten bir işlem örneğiniz varsa, bunun yerine Terminal o noktada. Bu öğreticinin ilerleyen bölümlerinde Terminal'i kullanacaksınız.)

    Screenshot shows how to create a compute instance.

Prototip oluşturmak için yeni bir ortam ayarlama (isteğe bağlı)

Betiğinizin çalışması için, kodun beklediği bağımlılıklar ve kitaplıklarla yapılandırılmış bir ortamda çalışıyor olmanız gerekir. Bu bölüm, kodunuz için uyarlanmış bir ortam oluşturmanıza yardımcı olur. Not defterinizin bağlandığı yeni Jupyter çekirdeğini oluşturmak için bağımlılıkları tanımlayan bir YAML dosyası kullanacaksınız.

  • Dosyayı karşıya yükleyin.

    Karşıya yüklediğiniz dosyalar bir Azure dosya paylaşımında depolanır ve bu dosyalar her işlem örneğine bağlanır ve çalışma alanı içinde paylaşılır.

    1. Sağ üstteki Ham dosyayı indir düğmesini kullanarak workstation_env.yml olan bu conda ortam dosyasını bilgisayarınıza indirin.
    1. Dosya ekle'yi ve ardından Dosyaları karşıya yükle'yi seçerek çalışma alanınıza yükleyin.

      Screenshot shows how to upload files to your workspace.

    2. Gözat'ı seçin ve dosyaları seçin.

    3. İndirdiğiniz workstation_env.yml dosyasını seçin.

    4. Yükle'yi seçin.

    Dosyalar sekmesinde kullanıcı adı klasörünüzün altında workstation_env.yml dosyasını görürsünüz. Önizlemesini görüntülemek için bu dosyayı seçin ve hangi bağımlılıkları belirttiğine bakın. Şunun gibi içerikleri görürsünüz:

    name: workstation_env
    # This file serves as an example - you can update packages or versions to fit your use case
    dependencies:
      - python=3.8
      - pip=21.2.4
      - scikit-learn=0.24.2
      - scipy=1.7.1
      - pandas>=1.1,<1.2
      - pip:
        - mlflow-skinny 
        - azureml-mlflow
        - psutil>=5.8,<5.9
        - ipykernel~=6.0
        - matplotlib
    
  • Çekirdek oluşturma.

    Şimdi workstation_env.yml dosyasını temel alan yeni bir Jupyter çekirdeği oluşturmak için Azure Machine Learning terminalini kullanın.

    1. Terminal penceresi açmak için Terminal'i seçin. Terminali sol komut çubuğundan da açabilirsiniz:

      Screenshot shows open terminal tool in notebook toolbar.

    2. İşlem örneği durdurulduysa İşlemi başlat'ı seçin ve çalışana kadar bekleyin.

      Screenshot shows how to start compute if it's stopped.

    3. İşlem çalıştırıldıktan sonra terminalde bir karşılama iletisi görürsünüz ve komutları yazmaya başlayabilirsiniz.

    4. Geçerli conda ortamlarınızı görüntüleyin. Etkin ortam * ile işaretlenir.

      conda env list
      
    5. Bu öğretici için bir alt klasör oluşturduysanız, cd şimdi bu klasöre gidin.

    6. Sağlanan conda dosyasını temel alarak ortamı oluşturun. Bu ortamın oluşturulması birkaç dakika sürer.

      conda env create -f workstation_env.yml
      
      
    7. Yeni ortamı etkinleştirin.

       conda activate workstation_env
      
    8. Doğru ortamın etkin olduğunu doğrulayın ve *ile işaretlenmiş ortamı yeniden arayın.

      conda env list
      
    9. Etkin ortamınızı temel alan yeni bir Jupyter çekirdeği oluşturun.

      python -m ipykernel install --user --name workstation_env --display-name "Tutorial Workstation Env" 
      
    10. Terminal penceresini kapatın.

Artık yeni bir çekirdeğiniz var. Ardından bir not defteri açıp bu çekirdeği kullanacaksınız.

Not defteri oluşturma

  1. Dosya ekle'yi seçin ve Yeni dosya oluştur'u seçin.

    Screenshot: Create new file.

  2. Yeni not defterinize develop-tutorial.ipynb adını verin (veya tercih ettiğiniz adı girin).

  3. İşlem örneği durdurulduysa İşlemi başlat'ı seçin ve çalışana kadar bekleyin.

    Screenshot shows how to start compute if it's stopped.

  4. Not defterinin sağ üstteki varsayılan çekreğe bağlı olduğunu görürsünüz. Çekirdeği oluşturduysanız Öğretici İş İstasyonu Env çekirdeğini kullanmaya geçin.

Eğitim betiği geliştirme

Bu bölümde, UCI veri kümesinden hazırlanan test ve eğitim veri kümelerini kullanarak kredi kartı varsayılan ödemelerini tahmin eden bir Python eğitim betiği geliştirin.

Bu kod, ölçümleri günlüğe kaydetmek için eğitim ve MLflow için kullanır sklearn .

  1. Eğitim betiğinde kullanacağınız paketleri ve kitaplıkları içeri aktaran kodla başlayın.

    import os
    import argparse
    import pandas as pd
    import mlflow
    import mlflow.sklearn
    from sklearn.ensemble import GradientBoostingClassifier
    from sklearn.metrics import classification_report
    from sklearn.model_selection import train_test_split
  2. Ardından bu denemenin verilerini yükleyip işleyin. Bu öğreticide, İnternet'teki bir dosyadan verileri okuyacaksınız.

    # load the data
    credit_df = pd.read_csv(
        "https://azuremlexamples.blob.core.windows.net/datasets/credit_card/default_of_credit_card_clients.csv",
        header=1,
        index_col=0,
    )
    
    train_df, test_df = train_test_split(
        credit_df,
        test_size=0.25,
    )
  3. Verileri eğitim için hazırlayın:

    # Extracting the label column
    y_train = train_df.pop("default payment next month")
    
    # convert the dataframe values to array
    X_train = train_df.values
    
    # Extracting the label column
    y_test = test_df.pop("default payment next month")
    
    # convert the dataframe values to array
    X_test = test_df.values
  4. ile otomatik kaydetmeye MLflowbaşlamak için kod ekleyin, böylece ölçümleri ve sonuçları izleyebilirsiniz. Model geliştirmenin yinelemeli yapısıyla, MLflow model parametrelerini ve sonuçlarını günlüğe kaydetmenize yardımcı olur. Modelinizin performansını karşılaştırmak ve anlamak için bu çalıştırmalara geri dönün. Günlükler ayrıca Azure Machine Learning'de geliştirme aşamasından iş akışlarınızın eğitim aşamasına geçmeye hazır olduğunuzda bağlam sağlar.

    # set name for logging
    mlflow.set_experiment("Develop on cloud tutorial")
    # enable autologging with MLflow
    mlflow.sklearn.autolog()
  5. Modeli eğitin.

    # Train Gradient Boosting Classifier
    print(f"Training with data of shape {X_train.shape}")
    
    mlflow.start_run()
    clf = GradientBoostingClassifier(n_estimators=100, learning_rate=0.1)
    clf.fit(X_train, y_train)
    
    y_pred = clf.predict(X_test)
    
    print(classification_report(y_test, y_pred))
    # Stop logging for this model
    mlflow.end_run()

    Dekont

    Mlflow uyarılarını yoksayabilirsiniz. İzlemeniz gereken tüm sonuçları almaya devam edersiniz.

Yineleme

Artık model sonuçlarınız olduğuna göre, bir şeyi değiştirmek ve yeniden denemek isteyebilirsiniz. Örneğin, farklı bir sınıflandırıcı tekniği deneyin:

# Train  AdaBoost Classifier
from sklearn.ensemble import AdaBoostClassifier

print(f"Training with data of shape {X_train.shape}")

mlflow.start_run()
ada = AdaBoostClassifier()

ada.fit(X_train, y_train)

y_pred = ada.predict(X_test)

print(classification_report(y_test, y_pred))
# Stop logging for this model
mlflow.end_run()

Dekont

Mlflow uyarılarını yoksayabilirsiniz. İzlemeniz gereken tüm sonuçları almaya devam edersiniz.

Sonuçları inceleme

İki farklı modeli denediğinize göre, hangi modelin daha iyi olduğuna karar vermek için tarafından MLFfow izlenen sonuçları kullanın. Doğruluk gibi ölçümlere veya senaryolarınız için en önemli olan diğer göstergelere başvurabilirsiniz. tarafından MLflowoluşturulan işlere bakarak bu sonuçları daha ayrıntılı olarak inceleyebilirsiniz.

  1. Sol gezinti bölmesinde İşler'i seçin.

    Screenshot shows how to select Jobs in the navigation.

  2. Bulutta geliştirme öğreticisi bağlantısını seçin.

  3. Denediğiniz modellerin her biri için bir tane olan iki farklı iş gösterilir. Bu adlar otomatik olarak oluşturulur. Bir adın üzerine geldiğinizde, adı yeniden adlandırmak istiyorsanız adın yanındaki kalem aracını kullanın.

  4. İlk işin bağlantısını seçin. Ad en üstte görünür. Burada kalem aracıyla da yeniden adlandırabilirsiniz.

  5. Sayfada işin özellikler, çıkışlar, etiketler ve parametreler gibi ayrıntıları gösterilir. Etiketler'in altında modelin türünü açıklayan estimator_name görürsünüz.

  6. tarafından MLflowgünlüğe kaydedilen ölçümleri görüntülemek için Ölçümler sekmesini seçin. (Farklı bir eğitim kümeniz olduğundan sonuçlarınızın farklı olmasını bekleyin.)

    Screenshot shows metrics for a job.

  7. tarafından MLflowoluşturulan görüntüleri görüntülemek için Resimler sekmesini seçin.

    Screenshot shows images for a job.

  8. Geri dönün ve diğer modelin ölçümlerini ve görüntülerini gözden geçirin.

Python betiği oluşturma

Şimdi model eğitimi için not defterinizden bir Python betiği oluşturun.

  1. Not defteri araç çubuğunda menüyü seçin.

  2. Python olarak> dışarı aktar'ı seçin.

    Screenshot shows exporting a Python file from the notebook.

  3. Dosyayı train.py olarak adlandırın.

  4. Bu dosyaya bakın ve eğitim betiğinde istemediğiniz kodu silin. Örneğin, kullanmak istediğiniz modelin kodunu tutun ve istemediğiniz modelin kodunu silin.

    • Otomatik olarak kaydetmeyemlflow.sklearn.autolog() () başlayan kodu tuttuğunuzdan emin olun.
    • Otomatik oluşturulan açıklamaları silmek ve kendi açıklamalarınızdan daha fazlasını eklemek isteyebilirsiniz.
    • Python betiğini etkileşimli olarak çalıştırdığınızda (terminalde veya not defterinde), deneme adını (mlflow.set_experiment("Develop on cloud tutorial")) tanımlayan satırı tutabilirsiniz. Hatta İşler bölümünde farklı bir giriş olarak görmek için farklı bir ad verin. Ancak bir eğitim işi için betiği hazırladığınızda bu satır çalışmaz ve atlanması gerekir; iş tanımı deneme adını içerir.
    • Tek bir modeli eğittiğinizde, çalıştırmayı (mlflow.start_run() ve ) başlatmak ve mlflow.end_run()sonlandırmak için çizgiler de gerekli değildir (hiçbir etkisi olmaz), ancak isterseniz içinde bırakılabilir.
  5. Düzenlemelerinizi tamamladığınızda dosyayı kaydedin.

Artık tercih ettiğiniz modeli eğitmek için kullanabileceğiniz bir Python betiğiniz var.

Python betiğini çalıştırma

Şimdilik bu kodu Azure Machine Learning geliştirme ortamınız olan işlem örneğinizde çalıştırıyorsunuz. Öğretici: Modeli eğitme, bir eğitim betiğini daha güçlü işlem kaynakları üzerinde daha ölçeklenebilir bir şekilde çalıştırmayı gösterir.

  1. Sol tarafta Terminali aç'ı seçerek bir terminal penceresi açın.

    Screenshot shows how to open a terminal window.

  2. Geçerli conda ortamlarınızı görüntüleyin. Etkin ortam * ile işaretlenir.

    conda env list
    
  3. Yeni bir çekirdek oluşturduysanız şimdi etkinleştirin:

    conda activate workstation_env
    
  4. Bu öğretici için bir alt klasör oluşturduysanız, cd şimdi bu klasöre gidin.

  5. Eğitim betiğinizi çalıştırın.

    python train.py
    

Dekont

Mlflow uyarılarını yoksayabilirsiniz. Otomatik kaydetme işleminden tüm ölçümleri ve görüntüleri almaya devam edersiniz.

Betik sonuçlarını inceleme

Eğitim betiğinizin sonuçlarını görmek için İşler'e geri dönün. Eğitim verilerinin her bölmede değiştiğini, dolayısıyla sonuçların çalıştırmalar arasında da farklılık gösterdiğini unutmayın.

Kaynakları temizleme

Şimdi diğer öğreticilere devam etmek istiyorsanız Sonraki adımlar'a atlayın.

İşlem örneğini durdurma

Şimdi kullanmayacaksanız işlem örneğini durdurun:

  1. Stüdyoda, sol gezinti alanında İşlem'i seçin.
  2. Üst sekmelerde İşlem örnekleri'ni seçin
  3. Listeden işlem örneğini seçin.
  4. Üst araç çubuğunda Durdur'u seçin.

Tüm kaynakları silme

Önemli

Oluşturduğunuz kaynaklar, diğer Azure Machine Learning öğreticileri ve nasıl yapılır makaleleri için önkoşul olarak kullanılabilir.

Oluşturduğunuz kaynaklardan hiçbirini kullanmayı planlamıyorsanız, ücret ödememek için bunları silin:

  1. Azure portalının en sol tarafındaki Kaynak gruplarını seçin.

  2. Listeden, oluşturduğunuz kaynak grubunu seçin.

  3. Kaynak grubunu sil'i seçin.

    Screenshot of the selections to delete a resource group in the Azure portal.

  4. Kaynak grubu adını girin. Ardından Sil'i seçin.

Sonraki adımlar

Aşağıdakiler hakkında daha fazla bilgi edinin:

Bu öğreticide, kodun bulunduğu makinede prototip oluşturma, model oluşturmanın ilk adımları gösterildi. Üretim eğitiminiz için bu eğitim betiğini daha güçlü uzak işlem kaynaklarında kullanmayı öğrenin: