Aracılığıyla paylaş


Öğretici 3: Yinelenen gerçekleştirmeyi etkinleştirme ve toplu çıkarım çalıştırma

Bu öğretici serisi, özelliklerin makine öğrenmesi yaşam döngüsünün tüm aşamalarını sorunsuz bir şekilde tümleştirmesini gösterir: prototip oluşturma, eğitim ve operasyonelleştirme.

İlk öğreticide özel dönüştürmelerle özellik kümesi belirtiminin nasıl oluşturulacağı gösterildi. Daha sonra eğitim verileri oluşturmak, gerçekleştirmeyi etkinleştirmek ve bir geri doldurma gerçekleştirmek için bu özellik kümesinin nasıl kullanılacağını gösterdi. İkinci öğreticide, gerçekleştirmenin nasıl etkinleştirileceği ve bir geri doldurmanın nasıl gerçekleştirileceği gösterildi. Ayrıca model performansını geliştirmenin bir yolu olarak özelliklerle denemeler yapmayı da gösterdi.

Bu öğreticide, aşağıdaki işlemlerin nasıl yapılacağı açıklanmaktadır:

  • Özellik kümesi için yinelenen gerçekleştirmeyi transactions etkinleştirin.
  • Kayıtlı modelde bir toplu çıkarım işlem hattı çalıştırın.

Önkoşullar

Bu öğreticiye devam etmeden önce, serideki ilk ve ikinci öğreticileri tamamladığınızdan emin olun.

Ayarlama

  1. Azure Machine Learning Spark not defterini yapılandırın.

    Bu öğreticiyi çalıştırmak için yeni bir not defteri oluşturabilir ve yönergeleri adım adım yürütebilirsiniz. Ayrıca 3 adlı mevcut not defterini açıp çalıştırabilirsiniz. Yinelenen gerçekleştirmeyi etkinleştirin ve toplu çıkarım çalıştırın. Bu not defterini ve bu serideki tüm not defterlerini featurestore_sample/notebooks dizininde bulabilirsiniz. sdk_only veya sdk_and_cli seçebilirsiniz. Bu öğreticiyi açık tutun ve belge bağlantıları ve daha fazla açıklama için bu öğreticiye başvurun.

    1. Üst gezinti bölmesindeki İşlem açılan listesinde Azure Machine Learning Sunucusuz Spark altında Sunucusuz Spark İşlem'i seçin.

    2. Oturumu yapılandırın:

      1. Üst durum çubuğunda Oturumu yapılandır'ı seçin.
      2. Python paketleri sekmesini seçin.
      3. Conda dosyasını karşıya yükle'yi seçin.
      4. azureml-examples/sdk/python/featurestore-sample/project/env/online.yml Dosyayı yerel makinenizden seçin.
      5. İsteğe bağlı olarak, sık sık önkoşul yeniden çalıştırmalarını önlemek için oturum zaman aşımını (boşta kalma süresi) artırın.
  2. Spark oturumunu başlatın.

    # run this cell to start the spark session (any code block will start the session ). This can take around 10 mins.
    print("start spark session")
  3. Örnekler için kök dizini ayarlayın.

    import os
    
    # please update the dir to ./Users/<your_user_alias> (or any custom directory you uploaded the samples to).
    # You can find the name from the directory structure in the left nav
    root_dir = "./Users/<your_user_alias>/featurestore_sample"
    
    if os.path.isdir(root_dir):
        print("The folder exists.")
    else:
        print("The folder does not exist. Please create or fix the path")
  4. CLI'yı ayarlayın.

    Uygulanamaz.


  1. Proje çalışma alanı CRUD (oluşturma, okuma, güncelleştirme ve silme) istemcisini başlatın.

    Öğretici not defteri bu geçerli çalışma alanından çalıştırılır.

    ### Initialize the MLClient of this project workspace
    import os
    from azure.ai.ml import MLClient
    from azure.ai.ml.identity import AzureMLOnBehalfOfCredential
    
    project_ws_sub_id = os.environ["AZUREML_ARM_SUBSCRIPTION"]
    project_ws_rg = os.environ["AZUREML_ARM_RESOURCEGROUP"]
    project_ws_name = os.environ["AZUREML_ARM_WORKSPACE_NAME"]
    
    # connect to the project workspace
    ws_client = MLClient(
        AzureMLOnBehalfOfCredential(), project_ws_sub_id, project_ws_rg, project_ws_name
    )
  2. Özellik deposu değişkenlerini başlatın.

    İlk öğreticide oluşturduklarınızın yansıtılması için değeri güncelleştirdiğinizden featurestore_name emin olun.

    from azure.ai.ml import MLClient
    from azure.ai.ml.identity import AzureMLOnBehalfOfCredential
    
    # feature store
    featurestore_name = (
        "<FEATURESTORE_NAME>"  # use the same name from part #1 of the tutorial
    )
    featurestore_subscription_id = os.environ["AZUREML_ARM_SUBSCRIPTION"]
    featurestore_resource_group_name = os.environ["AZUREML_ARM_RESOURCEGROUP"]
    
    # feature store ml client
    fs_client = MLClient(
        AzureMLOnBehalfOfCredential(),
        featurestore_subscription_id,
        featurestore_resource_group_name,
        featurestore_name,
    )
  3. Özellik deposu SDK istemcisini başlatın.

    # feature store client
    from azureml.featurestore import FeatureStoreClient
    from azure.ai.ml.identity import AzureMLOnBehalfOfCredential
    
    featurestore = FeatureStoreClient(
        credential=AzureMLOnBehalfOfCredential(),
        subscription_id=featurestore_subscription_id,
        resource_group_name=featurestore_resource_group_name,
        name=featurestore_name,
    )

İşlemler özellik kümesinde yinelenen gerçekleştirmeyi etkinleştirme

İkinci öğreticide, gerçekleştirmeyi etkinleştirmiş ve özellik kümesinde transactions geri doldurma gerçekleştirmişsinizdir. Backfill, özellik değerlerini hesaplayan ve gerçekleştirme deposuna yerleştiren isteğe bağlı, tek seferlik bir işlemdir.

Üretimde modelin çıkarılmasını işlemek için, gerçekleştirme depolarını güncel tutmak için yinelenen gerçekleştirme işleri ayarlamak isteyebilirsiniz. Bu işler kullanıcı tanımlı zamanlamalarda çalışır. Yinelenen iş zamanlaması şu şekilde çalışır:

  • Aralık ve sıklık değerleri bir pencere tanımlar. Örneğin, aşağıdaki değerler üç saatlik bir zaman aralığı tanımlar:

    • interval = 3
    • frequency = Hour
  • İlk pencere içinde tanımlanan değerden start_timeRecurrenceTriggerbaşlar ve bu şekilde devam edin.

  • İlk yinelenen iş, güncelleştirme zamanından sonraki pencerenin başında gönderilir.

  • Sonraki yinelenen işler, ilk işten sonraki her pencerede gönderilir.

Önceki öğreticilerde açıklandığı gibi, veriler gerçekleştirildikten sonra (geri doldurma veya yinelenen gerçekleştirme), özellik alma işlemi varsayılan olarak gerçekleştirilmiş verileri kullanır.

from datetime import datetime
from azure.ai.ml.entities import RecurrenceTrigger

transactions_fset_config = fs_client.feature_sets.get(name="transactions", version="1")

# create a schedule that runs the materialization job every 3 hours
transactions_fset_config.materialization_settings.schedule = RecurrenceTrigger(
    interval=3, frequency="Hour", start_time=datetime(2023, 4, 15, 0, 4, 10, 0)
)

fs_poller = fs_client.feature_sets.begin_create_or_update(transactions_fset_config)

print(fs_poller.result())

(İsteğe bağlı) Özellik kümesi varlığı için YAML dosyasını kaydetme

YAML dosyasını kaydetmek için güncelleştirilmiş ayarları kullanırsınız.

## uncomment and run
# transactions_fset_config.dump(root_dir + "/featurestore/featuresets/transactions/featureset_asset_offline_enabled_with_schedule.yaml")

Toplu çıkarım işlem hattını çalıştırma

Toplu çıkarım şu adımları içerir:

  1. Eğitim işlem hattında kullandığınız özellik alma için aynı yerleşik özellik alma bileşenini kullanırsınız (üçüncü öğreticide ele alınmıştır). İşlem hattı eğitimi için bileşen girişi olarak bir özellik alma belirtimi sağladınız. Toplu çıkarım için, kayıtlı modeli giriş olarak geçirirsiniz. Bileşen, model yapıtında özellik alma belirtimini arar.

    Ayrıca, eğitim için gözlem verileri hedef değişkene sahipti. Ancak, toplu çıkarım gözlem verileri hedef değişkene sahip değildir. Özellik alma adımı, gözlem verilerini özelliklerle birleştirir ve toplu çıkarım için verileri dışarı aktarır.

  2. İşlem hattı önceki adımdaki toplu çıkarım giriş verilerini kullanır, modelde çıkarım çalıştırır ve tahmin edilen değeri çıkış olarak ekler.

    Not

    Bu örnekte toplu çıkarım için bir iş kullanırsınız. Azure Machine Learning'de toplu iş uç noktalarını da kullanabilirsiniz.

    from azure.ai.ml import load_job  # will be used later
    
    # set the batch inference  pipeline path
    batch_inference_pipeline_path = (
        root_dir + "/project/fraud_model/pipelines/batch_inference_pipeline.yaml"
    )
    batch_inference_pipeline_definition = load_job(source=batch_inference_pipeline_path)
    
    # run the training pipeline
    batch_inference_pipeline_job = ws_client.jobs.create_or_update(
        batch_inference_pipeline_definition
    )
    
    # stream the run logs
    ws_client.jobs.stream(batch_inference_pipeline_job.name)

Çıktı verilerini toplu çıkarım için inceleme

İşlem hattı görünümünde:

  1. Kartta öğesini inference_step seçinoutputs.

  2. Data Alan değerini kopyalayın. şuna azureml_995abbc2-3171-461e-8214-c3c5d17ede83_output_data_data_with_prediction:1benzer.

  3. Data Alan değerini aşağıdaki hücreye ayrı ad ve sürüm değerleriyle yapıştırın. Son karakter, önünde iki nokta üst üste (): bulunan sürümdür.

  4. predict_is_fraud Toplu çıkarım işlem hattının oluşturduğu sütunu not edin.

    Toplu çıkarım işlem hattı (/project/fraud_mode/pipelines/batch_inference_pipeline.yaml) çıkışlarında sistem, ad değeri ve 1 sürüm değeri olarak GUID ile izlenmeyen bir veri varlığı oluşturmuştur. Bunun nedeni, için veya değerlerini sağlamamış name olmanızdırversion.outputsinference_step Bu hücrede, varlıktan veri yolunu türetip görüntülersiniz.

    inf_data_output = ws_client.data.get(
        name="azureml_1c106662-aa5e-4354-b5f9-57c1b0fdb3a7_output_data_data_with_prediction",
        version="1",
    )
    inf_output_df = spark.read.parquet(inf_data_output.path + "data/*.parquet")
    display(inf_output_df.head(5))

Temizleme

Serideki beşinci öğreticide kaynakların nasıl silineceği açıklanır.

Sonraki adımlar