Bagikan melalui


Tutorial 3: Mengaktifkan materialisasi berulang dan menjalankan inferensi batch

Seri tutorial ini menunjukkan bagaimana fitur mengintegrasikan semua fase siklus hidup pembelajaran mesin dengan lancar: prototipe, pelatihan, dan operasionalisasi.

Tutorial pertama menunjukkan cara membuat spesifikasi set fitur dengan transformasi kustom. Kemudian menunjukkan cara menggunakan set fitur tersebut untuk menghasilkan data pelatihan, mengaktifkan materialisasi, dan melakukan isi ulang. Tutorial kedua menunjukkan cara mengaktifkan materialisasi dan melakukan isi ulang. Ini juga menunjukkan cara bereksperimen dengan fitur, sebagai cara untuk meningkatkan performa model.

Tutorial ini menjelaskan cara:

  • Aktifkan materialisasi berulang untuk transactions set fitur.
  • Jalankan alur inferensi batch pada model terdaftar.

Prasyarat

Sebelum Anda melanjutkan tutorial ini, pastikan untuk menyelesaikan tutorial pertama dan kedua dalam seri.

Penyiapan

  1. Konfigurasikan notebook Azure Pembelajaran Mesin Spark.

    Untuk menjalankan tutorial ini, Anda dapat membuat buku catatan baru dan menjalankan instruksi, langkah demi langkah. Anda juga bisa membuka dan menjalankan buku catatan yang sudah ada bernama 3. Aktifkan materialisasi berulang dan jalankan inferensi batch. Anda bisa menemukan buku catatan tersebut, dan semua buku catatan dalam seri ini, di direktori featurestore_sample/notebooks . Anda dapat memilih sdk_only atau sdk_and_cli. Tetap buka tutorial ini dan lihat tautan dokumentasi dan penjelasan lainnya.

    1. Di daftar dropdown Komputasi di navigasi atas, pilih Komputasi Spark Tanpa Server di bawah Azure Pembelajaran Mesin Spark Tanpa Server.

    2. Konfigurasikan sesi:

      1. Pilih Konfigurasikan sesi di bilah status atas.
      2. Pilih tab paket Python.
      3. Pilih Unggah file conda.
      4. azureml-examples/sdk/python/featurestore-sample/project/env/online.yml Pilih file dari komputer lokal Anda.
      5. Secara opsional, tingkatkan waktu habis sesi (waktu diam) untuk menghindari pengulangan prasyarat yang sering.
  2. Mulai sesi Spark.

    # 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. Siapkan direktori akar untuk sampel.

    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. Menyiapkan CLI.

    Tidak berlaku.


  1. Menginisialisasi klien CRUD ruang kerja proyek (buat, baca, perbarui, dan hapus).

    Buku catatan tutorial berjalan dari ruang kerja saat ini.

    ### 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. Menginisialisasi variabel penyimpanan fitur.

    Untuk mencerminkan apa yang Anda buat dalam tutorial pertama, pastikan untuk memperbarui featurestore_name nilai.

    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. Menginisialisasi klien SDK penyimpanan fitur.

    # 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,
    )

Aktifkan materialisasi berulang pada set fitur transaksi

Dalam tutorial kedua, Anda mengaktifkan materialisasi dan melakukan isi ulang pada transactions set fitur. Isi ulang adalah operasi satu kali sesuai permintaan yang menghitung dan menempatkan nilai fitur di penyimpanan materialisasi.

Untuk menangani inferensi model dalam produksi, Anda mungkin ingin menyiapkan pekerjaan materialisasi berulang untuk menjaga penyimpanan materialisasi tetap terbaru. Pekerjaan ini berjalan pada jadwal yang ditentukan pengguna. Jadwal pekerjaan berulang berfungsi dengan cara ini:

  • Nilai interval dan frekuensi menentukan jendela. Misalnya, nilai berikut menentukan jendela tiga jam:

    • interval = 3
    • frequency = Hour
  • Jendela pertama dimulai pada nilai yang start_time ditentukan dalam RecurrenceTrigger, dan sebagainya.

  • Pekerjaan berulang pertama dikirimkan pada awal jendela berikutnya setelah waktu pembaruan.

  • Pekerjaan berulang nanti dikirimkan di setiap jendela setelah pekerjaan pertama.

Seperti yang dijelaskan dalam tutorial sebelumnya, setelah data terwujud (isi ulang atau materialisasi berulang), pengambilan fitur menggunakan data materialisasi secara default.

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())

(Opsional) Simpan file YAML untuk aset set fitur

Anda menggunakan pengaturan yang diperbarui untuk menyimpan file YAML.

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

Menjalankan alur inferensi batch

Inferensi batch memiliki langkah-langkah berikut:

  1. Anda menggunakan komponen pengambilan fitur bawaan yang sama untuk pengambilan fitur yang Anda gunakan dalam alur pelatihan (tercakup dalam tutorial ketiga). Untuk pelatihan alur, Anda menyediakan spesifikasi pengambilan fitur sebagai input komponen. Untuk inferensi batch, Anda meneruskan model terdaftar sebagai input. Komponen mencari spesifikasi pengambilan fitur dalam artefak model.

    Selain itu, untuk pelatihan, data pengamatan memiliki variabel target. Namun, data pengamatan inferensi batch tidak memiliki variabel target. Langkah pengambilan fitur menggabungkan data pengamatan dengan fitur dan menghasilkan data untuk inferensi batch.

  2. Alur menggunakan data input inferensi batch dari langkah sebelumnya, menjalankan inferensi pada model, dan menambahkan nilai yang diprediksi sebagai output.

    Catatan

    Anda menggunakan pekerjaan untuk inferensi batch dalam contoh ini. Anda juga dapat menggunakan titik akhir batch di Azure Pembelajaran Mesin.

    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)

Memeriksa data output untuk inferensi batch

Dalam tampilan alur:

  1. Pilih inference_step di outputs kartu.

  2. Data Salin nilai bidang. Ini terlihat seperti azureml_995abbc2-3171-461e-8214-c3c5d17ede83_output_data_data_with_prediction:1.

  3. Tempelkan Data nilai bidang di sel berikut, dengan nama dan nilai versi terpisah. Karakter terakhir adalah versi, didahului oleh titik dua (:).

  4. predict_is_fraud Perhatikan kolom yang dihasilkan alur inferensi batch.

    Dalam output alur inferensi batch (/project/fraud_mode/pipelines/batch_inference_pipeline.yaml), sistem membuat aset data yang tidak terlacak dengan GUID sebagai nilai nama dan 1 sebagai nilai versi. Ini terjadi karena Anda tidak menyediakan name atau version nilai untuk outputsinference_step. Dalam sel ini, Anda memperoleh lalu menampilkan jalur data dari aset.

    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))

Penghapusan

Tutorial kelima dalam seri menjelaskan cara menghapus sumber daya.

Langkah berikutnya