Bagikan melalui


Tutorial 1: Mengembangkan dan mendaftarkan set fitur dengan toko fitur terkelola

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

Anda dapat menggunakan Azure Pembelajaran Mesin toko fitur terkelola untuk menemukan, membuat, dan mengoperalisasi fitur. Siklus hidup pembelajaran mesin mencakup fase prototipe, di mana Anda bereksperimen dengan berbagai fitur. Ini juga melibatkan fase operasionalisasi, di mana model disebarkan dan langkah-langkah inferensi mencari data fitur. Fitur berfungsi sebagai jaringan konektif dalam siklus hidup pembelajaran mesin. Untuk mempelajari selengkapnya tentang konsep dasar untuk penyimpanan fitur terkelola, kunjungi Apa itu penyimpanan fitur terkelola? dan Memahami entitas tingkat atas di sumber daya penyimpanan fitur terkelola .

Tutorial ini menjelaskan cara membuat spesifikasi set fitur dengan transformasi kustom. Kemudian menggunakan set fitur tersebut untuk menghasilkan data pelatihan, mengaktifkan materialisasi, dan melakukan isi ulang. Materialisasi menghitung nilai fitur untuk jendela fitur, lalu menyimpan nilai-nilai tersebut di penyimpanan materialisasi. Semua kueri fitur kemudian dapat menggunakan nilai-nilai tersebut dari penyimpanan materialisasi.

Tanpa materialisasi, kueri set fitur menerapkan transformasi ke sumber dengan cepat, untuk menghitung fitur sebelum mengembalikan nilai. Proses ini bekerja dengan baik untuk fase prototipe. Namun, untuk operasi pelatihan dan inferensi di lingkungan produksi, kami sarankan Anda mewujudkan fitur, untuk keandalan dan ketersediaan yang lebih besar.

Tutorial ini adalah bagian pertama dari seri tutorial toko fitur terkelola. Di sini, Anda mempelajari cara:

  • Buat sumber daya penyimpanan fitur minimal baru.
  • Kembangkan dan uji secara lokal set fitur dengan kemampuan transformasi fitur.
  • Daftarkan entitas penyimpanan fitur dengan penyimpanan fitur.
  • Daftarkan set fitur yang Anda kembangkan dengan penyimpanan fitur.
  • Buat sampel pelatihan DataFrame dengan menggunakan fitur yang Anda buat.
  • Aktifkan materialisasi offline pada set fitur, dan isi ulang data fitur.

Seri tutorial ini memiliki dua trek:

  • Trek khusus SDK hanya menggunakan SDK Python. Pilih trek ini untuk pengembangan dan penyebaran berbasis Python murni.
  • Trek SDK dan CLI menggunakan Python SDK hanya untuk pengembangan dan pengujian set fitur, dan menggunakan operasi CLI untuk CRUD (buat, baca, perbarui, dan hapus). Trek ini berguna dalam skenario integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD) atau GitOps, di mana CLI/YAML lebih disukai.

Prasyarat

Sebelum Anda melanjutkan tutorial ini, pastikan untuk mencakup prasyarat ini:

  • Ruang kerja Azure Machine Learning. Untuk informasi selengkapnya tentang pembuatan ruang kerja, kunjungi Mulai Cepat: Membuat sumber daya ruang kerja.

  • Di akun pengguna, Anda memerlukan peran Pemilik untuk grup sumber daya tempat penyimpanan fitur dibuat.

    Jika Anda memilih untuk menggunakan grup sumber daya baru untuk tutorial ini, Anda dapat dengan mudah menghapus semua sumber daya dengan menghapus grup sumber daya.

Menyiapkan lingkungan notebook

Tutorial ini menggunakan notebook Azure Pembelajaran Mesin Spark untuk pengembangan.

  1. Di lingkungan studio Azure Machine Learning, pilih Notebook di panel kiri, lalu pilih tab Sampel .

  2. Telusuri ke direktori featurestore_sample (pilih Sampel>SDK v2>sdk>python>featurestore_sample), lalu pilih Kloning.

    Cuplikan layar yang memperlihatkan pilihan direktori sampel di studio Azure Machine Learning.

  3. Panel Pilih direktori target terbuka. Pilih direktori Pengguna , lalu pilih nama pengguna Anda, dan akhirnya pilih Kloning.

    Cuplikan layar memperlihatkan pemilihan lokasi direktori target di studio Azure Machine Learning untuk sumber daya sampel.

  4. Untuk mengonfigurasi lingkungan notebook, Anda harus mengunggah file conda.yml :

    1. Pilih Buku Catatan di panel kiri, lalu pilih tab File .
    2. Telusuri ke direktori env (pilih Pengguna>your_user_name>featurestore_sample>project>env), lalu pilih file conda.yml .
    3. Pilih Unduh.

    Cuplikan layar yang memperlihatkan pilihan file YAML Conda di studio Azure Machine Learning.

    1. Pilih Komputasi Spark Tanpa Server di menu dropdown Komputasi navigasi atas. Operasi ini mungkin memakan waktu satu hingga dua menit. Tunggu hingga bilah status di bagian atas menampilkan Konfigurasi sesi.
    2. Pilih Konfigurasikan sesi di bilah status atas.
    3. Pilih paket Python.
    4. Pilih Unggah file conda.
    5. Pilih file yang conda.yml Anda unduh di perangkat lokal Anda.
    6. (Opsional) Tingkatkan waktu habis sesi (waktu diam dalam menit) untuk mengurangi waktu mulai kluster spark tanpa server.
  5. Di lingkungan Azure Machine Learning, buka buku catatan, lalu pilih Konfigurasikan sesi.

    Cuplikan layar yang memperlihatkan pilihan untuk mengonfigurasi sesi untuk buku catatan.

  6. Pada panel Konfigurasi sesi , pilih paket Python.

  7. Unggah file Conda:

    1. Pada tab Paket Python , pilih Unggah file Conda.
    2. Telusuri ke direktori yang menghosting file Conda.
    3. Pilih conda.yml, lalu pilih Buka.

    Cuplikan layar yang memperlihatkan direktori yang menghosting file Conda.

  8. Pilih Terapkan.

    Cuplikan layar yang memperlihatkan unggahan file Conda.

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

Menyiapkan direktori akar untuk sampel

import os

# Please update <your_user_alias> below (or any custom directory you uploaded the samples to).
# You can find the name from the directory structure in the left navigation panel.
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")

Menyiapkan ASDK

Tidak berlaku.

Catatan

Anda menggunakan penyimpanan fitur untuk menggunakan kembali fitur di seluruh proyek. Anda menggunakan ruang kerja proyek (ruang kerja Azure Pembelajaran Mesin) untuk melatih model inferensi, dengan memanfaatkan fitur dari penyimpanan fitur. Banyak ruang kerja proyek dapat berbagi dan menggunakan kembali penyimpanan fitur yang sama.

Tutorial ini menggunakan dua SDK:

  • Penyimpanan fitur CRUD SDK

    Anda menggunakan SDK (nama MLClientpaket) yang sama azure-ai-ml dengan yang Anda gunakan dengan ruang kerja Azure Pembelajaran Mesin. Penyimpanan fitur diimplementasikan sebagai jenis ruang kerja. Akibatnya, SDK ini digunakan untuk operasi CRUD untuk penyimpanan fitur, set fitur, dan entitas penyimpanan fitur.

  • SDK inti untuk penyimpanan fitur

    SDK ini (azureml-featurestore) untuk pengembangan dan konsumsi set fitur. Langkah selanjutnya dalam tutorial ini menjelaskan operasi ini:

    • Mengembangkan spesifikasi set fitur.
    • Mengambil data fitur.
    • Mencantumkan atau mendapatkan set fitur terdaftar.
    • Hasilkan dan atasi spesifikasi pengambilan fitur.
    • Hasilkan data pelatihan dan inferensi dengan menggunakan gabungan titik waktu.

Tutorial ini tidak memerlukan penginstalan eksplisit SDK tersebut, karena instruksi conda.yml sebelumnya mencakup langkah ini.

Membuat penyimpanan fitur minimal

  1. Atur parameter penyimpanan fitur, termasuk nama, lokasi, dan nilai lainnya.

    # We use the subscription, resource group, region of this active project workspace.
    # You can optionally replace them to create the resources in a different subsciprtion/resource group, or use existing resources.
    import os
    
    featurestore_name = "<FEATURESTORE_NAME>"
    featurestore_location = "eastus"
    featurestore_subscription_id = os.environ["AZUREML_ARM_SUBSCRIPTION"]
    featurestore_resource_group_name = os.environ["AZUREML_ARM_RESOURCEGROUP"]
  2. Buat penyimpanan fitur.

    from azure.ai.ml import MLClient
    from azure.ai.ml.entities import (
        FeatureStore,
        FeatureStoreEntity,
        FeatureSet,
    )
    from azure.ai.ml.identity import AzureMLOnBehalfOfCredential
    
    ml_client = MLClient(
        AzureMLOnBehalfOfCredential(),
        subscription_id=featurestore_subscription_id,
        resource_group_name=featurestore_resource_group_name,
    )
    
    
    fs = FeatureStore(name=featurestore_name, location=featurestore_location)
    # wait for feature store creation
    fs_poller = ml_client.feature_stores.begin_create(fs)
    print(fs_poller.result())
  3. Menginisialisasi klien SDK inti penyimpanan fitur untuk Azure Pembelajaran Mesin.

    Seperti yang dijelaskan sebelumnya dalam tutorial ini, klien SDK inti penyimpanan fitur digunakan untuk mengembangkan dan mengonsumsi 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,
    )
  4. Berikan peran "Azure Pembelajaran Mesin Data Scientist" di penyimpanan fitur ke identitas pengguna Anda. Dapatkan nilai ID objek Microsoft Entra Anda dari portal Microsoft Azure, seperti yang dijelaskan di Menemukan ID objek pengguna.

    Tetapkan peran AzureML Data Scientist ke identitas pengguna Anda, sehingga dapat membuat sumber daya di ruang kerja penyimpanan fitur. Izin mungkin perlu waktu untuk disebarluaskan.

    Untuk informasi selengkapnya tentang kontrol akses, kunjungi Kelola kontrol akses untuk sumber daya penyimpanan fitur terkelola .

    your_aad_objectid = "<USER_AAD_OBJECTID>"
    
    !az role assignment create --role "AzureML Data Scientist" --assignee-object-id $your_aad_objectid --assignee-principal-type User --scope $feature_store_arm_id

Prototipe dan kembangkan set fitur

Dalam langkah-langkah ini, Anda membuat set fitur bernama transactions yang memiliki fitur berbasis agregat jendela bergulir:

  1. transactions Jelajahi data sumber.

    Notebook ini menggunakan data sampel yang dihosting dalam kontainer blob yang dapat diakses publik. Ini dapat dibaca ke Spark hanya melalui wasbs pengemudi. Saat Anda membuat set fitur dengan menggunakan data sumber Anda sendiri, host di akun Azure Data Lake Storage Gen2, dan gunakan abfss driver di jalur data.

    # remove the "." in the roor directory path as we need to generate absolute path to read from spark
    transactions_source_data_path = "wasbs://data@azuremlexampledata.blob.core.windows.net/feature-store-prp/datasources/transactions-source/*.parquet"
    transactions_src_df = spark.read.parquet(transactions_source_data_path)
    
    display(transactions_src_df.head(5))
    # Note: display(training_df.head(5)) displays the timestamp column in a different format. You can can call transactions_src_df.show() to see correctly formatted value
  2. Kembangkan set fitur secara lokal.

    Spesifikasi set fitur adalah definisi mandiri dari set fitur yang dapat Anda kembangkan dan uji secara lokal. Di sini, Anda membuat fitur agregat jendela bergulir ini:

    • transactions three-day count
    • transactions amount three-day avg
    • transactions amount three-day sum
    • transactions seven-day count
    • transactions amount seven-day avg
    • transactions amount seven-day sum

    Tinjau file kode transformasi fitur: featurestore/featuresets/transactions/transformation_code/transaction_transform.py. Perhatikan agregasi bergulir yang ditentukan untuk fitur. Ini adalah transformator Spark.

    Untuk mempelajari selengkapnya tentang kumpulan fitur dan transformasi, kunjungi sumber daya Apa itu penyimpanan fitur terkelola?

    from azureml.featurestore import create_feature_set_spec
    from azureml.featurestore.contracts import (
        DateTimeOffset,
        TransformationCode,
        Column,
        ColumnType,
        SourceType,
        TimestampColumn,
    )
    from azureml.featurestore.feature_source import ParquetFeatureSource
    
    transactions_featureset_code_path = (
        root_dir + "/featurestore/featuresets/transactions/transformation_code"
    )
    
    transactions_featureset_spec = create_feature_set_spec(
        source=ParquetFeatureSource(
            path="wasbs://data@azuremlexampledata.blob.core.windows.net/feature-store-prp/datasources/transactions-source/*.parquet",
            timestamp_column=TimestampColumn(name="timestamp"),
            source_delay=DateTimeOffset(days=0, hours=0, minutes=20),
        ),
        feature_transformation=TransformationCode(
            path=transactions_featureset_code_path,
            transformer_class="transaction_transform.TransactionFeatureTransformer",
        ),
        index_columns=[Column(name="accountID", type=ColumnType.string)],
        source_lookback=DateTimeOffset(days=7, hours=0, minutes=0),
        temporal_join_lookback=DateTimeOffset(days=1, hours=0, minutes=0),
        infer_schema=True,
    )
  3. Ekspor sebagai spesifikasi set fitur.

    Untuk mendaftarkan spesifikasi set fitur dengan penyimpanan fitur, Anda harus menyimpan spesifikasi tersebut dalam format tertentu.

    Tinjau spesifikasi set fitur yang dihasilkan transactions . Buka file ini dari pohon file untuk melihat spesifikasi featurestore/featuresets/accounts/spec/FeaturesetSpec.yaml .

    Spesifikasi berisi elemen-elemen ini:

    • source: Referensi ke sumber daya penyimpanan. Dalam hal ini, ini adalah file parket dalam sumber daya penyimpanan blob.
    • features: Daftar fitur dan jenis datanya. Jika Anda memberikan kode transformasi, kode harus mengembalikan DataFrame yang memetakan ke fitur dan jenis data.
    • index_columns: Kunci gabungan diperlukan untuk mengakses nilai dari set fitur.

    Untuk mempelajari selengkapnya tentang spesifikasi, kunjungi sumber daya Memahami entitas tingkat atas di penyimpanan fitur terkelola dan skema YAML set fitur CLI (v2).

    Mempertahankan spesifikasi set fitur menawarkan manfaat lain: spesifikasi set fitur mendukung kontrol sumber.

    import os
    
    # Create a new folder to dump the feature set specification.
    transactions_featureset_spec_folder = (
        root_dir + "/featurestore/featuresets/transactions/spec"
    )
    
    # Check if the folder exists, create one if it does not exist.
    if not os.path.exists(transactions_featureset_spec_folder):
        os.makedirs(transactions_featureset_spec_folder)
    
    transactions_featureset_spec.dump(transactions_featureset_spec_folder, overwrite=True)

Mendaftarkan entitas penyimpanan fitur

Sebagai praktik terbaik, entitas membantu memberlakukan penggunaan definisi kunci gabungan yang sama, di seluruh set fitur yang menggunakan entitas logis yang sama. Contoh entitas termasuk akun dan pelanggan. Entitas biasanya dibuat sekali dan kemudian digunakan kembali di seluruh set fitur. Untuk mempelajari lebih lanjut, kunjungi Memahami entitas tingkat atas di penyimpanan fitur terkelola.

  1. Menginisialisasi penyimpanan fitur klien CRUD.

    Seperti yang dijelaskan sebelumnya dalam tutorial ini, MLClient digunakan untuk membuat, membaca, memperbarui, dan menghapus aset penyimpanan fitur. Sampel sel kode buku catatan yang diperlihatkan di sini mencari penyimpanan fitur yang Anda buat di langkah sebelumnya. Di sini, Anda tidak dapat menggunakan kembali nilai yang sama dengan ml_client yang Anda gunakan sebelumnya dalam tutorial ini, karena nilai tersebut tercakup di tingkat grup sumber daya. Cakupan yang tepat adalah prasyarat untuk pembuatan penyimpanan fitur.

    Dalam sampel kode ini, klien dilingkup di tingkat penyimpanan fitur.

    # MLClient for feature store.
    fs_client = MLClient(
        AzureMLOnBehalfOfCredential(),
        featurestore_subscription_id,
        featurestore_resource_group_name,
        featurestore_name,
    )
  2. Daftarkan account entitas dengan penyimpanan fitur.

    Buat account entitas yang memiliki kunci accountID gabungan jenis string.

    from azure.ai.ml.entities import DataColumn, DataColumnType
    
    account_entity_config = FeatureStoreEntity(
        name="account",
        version="1",
        index_columns=[DataColumn(name="accountID", type=DataColumnType.STRING)],
        stage="Development",
        description="This entity represents user account index key accountID.",
        tags={"data_typ": "nonPII"},
    )
    
    poller = fs_client.feature_store_entities.begin_create_or_update(account_entity_config)
    print(poller.result())

Daftarkan set fitur transaksi dengan penyimpanan fitur

Gunakan kode ini untuk mendaftarkan aset set fitur dengan penyimpanan fitur. Anda kemudian dapat menggunakan kembali aset tersebut dan dengan mudah membagikannya. Pendaftaran aset set fitur menawarkan kemampuan terkelola, termasuk penerapan versi dan materialisasi. Langkah selanjutnya dalam seri tutorial ini mencakup kemampuan terkelola.

from azure.ai.ml.entities import FeatureSetSpecification

transaction_fset_config = FeatureSet(
    name="transactions",
    version="1",
    description="7-day and 3-day rolling aggregation of transactions featureset",
    entities=[f"azureml:account:1"],
    stage="Development",
    specification=FeatureSetSpecification(path=transactions_featureset_spec_folder),
    tags={"data_type": "nonPII"},
)

poller = fs_client.feature_sets.begin_create_or_update(transaction_fset_config)
print(poller.result())

Menjelajahi UI penyimpanan fitur

Pembuatan dan pembaruan aset penyimpanan fitur hanya dapat terjadi melalui SDK dan CLI. Anda dapat menggunakan UI untuk mencari atau menelusuri penyimpanan fitur:

  1. Buka halaman arahan global Azure Machine Learning.
  2. Pilih Feature stores di panel kiri.
  3. Dari daftar penyimpanan fitur yang dapat diakses, pilih penyimpanan fitur yang Anda buat sebelumnya dalam tutorial ini.

Berikan akses peran Pembaca Data Blob Penyimpanan ke akun pengguna Anda di penyimpanan offline

Peran Pembaca Data Blob Penyimpanan harus ditetapkan ke akun pengguna Anda di penyimpanan offline. Ini memastikan bahwa akun pengguna dapat membaca data fitur materialisasi dari penyimpanan materialisasi offline.

  1. Dapatkan nilai ID objek Microsoft Entra Anda dari portal Microsoft Azure, seperti yang dijelaskan di Menemukan ID objek pengguna.

  2. Dapatkan informasi tentang tempat penyimpanan offline untuk materialisasi dari halaman Gambaran Umum di UI Feature Store. Anda dapat menemukan nilai ID langganan akun penyimpanan, nama grup sumber daya akun penyimpanan, dan nama akun penyimpanan untuk toko materialisasi offline di kartu toko materialisasi offline.

    Cuplikan layar yang memperlihatkan informasi akun penyimpanan offline di halaman Gambaran Umum penyimpanan fitur.

    Untuk informasi selengkapnya tentang kontrol akses, kunjungi Kelola kontrol akses untuk sumber daya penyimpanan fitur terkelola .

    Jalankan sel kode ini untuk penetapan peran. Izin mungkin perlu waktu untuk disebarluaskan.

    # This utility function is created for ease of use in the docs tutorials. It uses standard azure API's.
    # You can optionally inspect it `featurestore/setup/setup_storage_uai.py`.
    import sys
    
    sys.path.insert(0, root_dir + "/featurestore/setup")
    from setup_storage_uai import grant_user_aad_storage_data_reader_role
    
    your_aad_objectid = "<USER_AAD_OBJECTID>"
    storage_subscription_id = "<SUBSCRIPTION_ID>"
    storage_resource_group_name = "<RESOURCE_GROUP>"
    storage_account_name = "<STORAGE_ACCOUNT_NAME>"
    
    grant_user_aad_storage_data_reader_role(
        AzureMLOnBehalfOfCredential(),
        your_aad_objectid,
        storage_subscription_id,
        storage_resource_group_name,
        storage_account_name,
    )

Membuat data pelatihan DataFrame dengan menggunakan set fitur terdaftar

  1. Memuat data pengamatan.

    Data pengamatan biasanya melibatkan data inti yang digunakan untuk pelatihan dan inferensi. Data ini bergabung dengan data fitur untuk membuat sumber daya data pelatihan lengkap.

    Data pengamatan adalah data yang diambil selama peristiwa itu sendiri. Di sini, ia memiliki data transaksi inti, termasuk ID transaksi, ID akun, dan nilai jumlah transaksi. Karena Anda menggunakannya untuk pelatihan, ia juga memiliki variabel target tambahan (is_fraud).

    observation_data_path = "wasbs://data@azuremlexampledata.blob.core.windows.net/feature-store-prp/observation_data/train/*.parquet"
    observation_data_df = spark.read.parquet(observation_data_path)
    obs_data_timestamp_column = "timestamp"
    
    display(observation_data_df)
    # Note: the timestamp column is displayed in a different format. Optionally, you can can call training_df.show() to see correctly formatted value
  2. Dapatkan set fitur terdaftar, dan cantumkan fiturnya.

    # Look up the featureset by providing a name and a version.
    transactions_featureset = featurestore.feature_sets.get("transactions", "1")
    # List its features.
    transactions_featureset.features
    # Print sample values.
    display(transactions_featureset.to_spark_dataframe().head(5))
  3. Pilih fitur yang menjadi bagian dari data pelatihan. Kemudian, gunakan SDK penyimpanan fitur untuk menghasilkan data pelatihan itu sendiri.

    from azureml.featurestore import get_offline_features
    
    # You can select features in pythonic way.
    features = [
        transactions_featureset.get_feature("transaction_amount_7d_sum"),
        transactions_featureset.get_feature("transaction_amount_7d_avg"),
    ]
    
    # You can also specify features in string form: featureset:version:feature.
    more_features = [
        f"transactions:1:transaction_3d_count",
        f"transactions:1:transaction_amount_3d_avg",
    ]
    
    more_features = featurestore.resolve_feature_uri(more_features)
    features.extend(more_features)
    
    # Generate training dataframe by using feature data and observation data.
    training_df = get_offline_features(
        features=features,
        observation_data=observation_data_df,
        timestamp_column=obs_data_timestamp_column,
    )
    
    # Ignore the message that says feature set is not materialized (materialization is optional). We will enable materialization in the subsequent part of the tutorial.
    display(training_df)
    # Note: the timestamp column is displayed in a different format. Optionally, you can can call training_df.show() to see correctly formatted value

    Gabungan titik waktu menambahkan fitur ke data pelatihan.

Mengaktifkan materialisasi offline pada transactions set fitur

Setelah materialisasi set fitur diaktifkan, Anda dapat melakukan isi ulang. Anda juga dapat menjadwalkan pekerjaan materialisasi berulang. Untuk informasi selengkapnya, kunjungi tutorial ketiga dalam sumber daya seri.

Atur spark.sql.shuffle.partitions dalam file yaml sesuai dengan ukuran data fitur

Konfigurasi spark spark.sql.shuffle.partitions adalah parameter OPSIONAL yang dapat memengaruhi jumlah file parket yang dihasilkan (per hari) ketika set fitur diwujudkan ke penyimpanan offline. Nilai default parameter ini adalah 200. Sebagai praktik terbaik, hindari pembuatan banyak file parket kecil. Jika pengambilan fitur offline menjadi lambat setelah materialisasi set fitur, buka folder yang sesuai di penyimpanan offline untuk memeriksa apakah masalah melibatkan terlalu banyak file parket kecil (per hari), dan sesuaikan nilai parameter ini.

Catatan

Data sampel yang digunakan dalam buku catatan ini kecil. Oleh karena itu, parameter ini diatur ke 1 dalam file featureset_asset_offline_enabled.yaml.

from azure.ai.ml.entities import (
    MaterializationSettings,
    MaterializationComputeResource,
)

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

transactions_fset_config.materialization_settings = MaterializationSettings(
    offline_enabled=True,
    resource=MaterializationComputeResource(instance_type="standard_e8s_v3"),
    spark_configuration={
        "spark.driver.cores": 4,
        "spark.driver.memory": "36g",
        "spark.executor.cores": 4,
        "spark.executor.memory": "36g",
        "spark.executor.instances": 2,
        "spark.sql.shuffle.partitions": 1,
    },
    schedule=None,
)

fs_poller = fs_client.feature_sets.begin_create_or_update(transactions_fset_config)
print(fs_poller.result())

Anda juga dapat menyimpan aset set fitur sebagai sumber daya YAML.

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

Mengisi ulang data untuk transactions kumpulan fitur

Seperti yang dijelaskan sebelumnya, materialisasi menghitung nilai fitur untuk jendela fitur, dan menyimpan nilai komputasi ini di penyimpanan materialisasi. Materialisasi fitur meningkatkan keandalan dan ketersediaan nilai komputasi. Semua kueri fitur sekarang menggunakan nilai dari penyimpanan materialisasi. Langkah ini melakukan isi ulang satu kali untuk jendela fitur 18 bulan.

Catatan

Anda mungkin perlu menentukan nilai jendela data isi ulang. Jendela harus cocok dengan jendela data pelatihan Anda. Misalnya, untuk menggunakan data 18 bulan untuk pelatihan, Anda harus mengambil fitur selama 18 bulan. Ini berarti Anda harus mengisi ulang untuk jendela 18 bulan.

Sel kode ini mewujudkan data berdasarkan status saat ini Tidak Ada atau Tidak Lengkap untuk jendela fitur yang ditentukan.

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

st = datetime(2022, 1, 1, 0, 0, 0, 0)
et = datetime(2023, 6, 30, 0, 0, 0, 0)

poller = fs_client.feature_sets.begin_backfill(
    name="transactions",
    version="1",
    feature_window_start_time=st,
    feature_window_end_time=et,
    data_status=[DataAvailabilityStatus.NONE],
)
print(poller.result().job_ids)
# Get the job URL, and stream the job logs.
fs_client.jobs.stream(poller.result().job_ids[0])

Petunjuk / Saran

  • Kolom timestamp harus mengikuti yyyy-MM-ddTHH:mm:ss.fffZ format.
  • feature_window_start_time Granularitas dan feature_window_end_time terbatas pada detik. Setiap milidetik yang disediakan dalam datetime objek akan diabaikan.
  • Pekerjaan materialisasi hanya akan dikirimkan jika data di jendela fitur cocok dengan data_status yang ditentukan saat mengirimkan pekerjaan isi ulang.

Cetak data sampel dari kumpulan fitur. Informasi output menunjukkan bahwa data diambil dari penyimpanan materialisasi. Metode ini get_offline_features() mengambil data pelatihan dan inferensi. Ini juga menggunakan penyimpanan materialisasi secara default.

# Look up the feature set by providing a name and a version and display few records.
transactions_featureset = featurestore.feature_sets.get("transactions", "1")
display(transactions_featureset.to_spark_dataframe().head(5))

Jelajahi materialisasi fitur offline lebih lanjut

Anda dapat menelusuri status materialisasi fitur untuk himpunan fitur di UI pekerjaan Materialisasi.

  1. Buka halaman arahan global Azure Machine Learning.

  2. Pilih Feature stores di panel kiri.

  3. Dari daftar penyimpanan fitur yang dapat diakses, pilih penyimpanan fitur tempat Anda melakukan isi ulang.

  4. Pilih tab Pekerjaan materialisasi .

    Cuplikan layar yang memperlihatkan antarmuka pengguna set fitur pekerjaan Materialisasi.

  • Status materialisasi data dapat berupa

    • Lengkap (hijau)
    • Tidak lengkap (merah)
    • Tertunda (biru)
    • Tidak ada (abu-abu)
  • Interval data mewakili bagian data yang bersebelahan dengan status materialisasi data yang sama. Misalnya, rekam jepret sebelumnya memiliki 16 interval data di penyimpanan materialisasi offline.

  • Data dapat memiliki maksimum 2.000 interval data. Jika data Anda berisi lebih dari 2.000 interval data, buat versi set fitur baru.

  • Anda dapat memberikan daftar lebih dari satu status data (misalnya, ["None", "Incomplete"]) dalam satu pekerjaan isi ulang.

  • Selama isi ulang, pekerjaan materialisasi baru diajukan untuk setiap interval data yang berada dalam jendela fitur yang sudah ditentukan.

  • Jika pekerjaan materialisasi tertunda, atau pekerjaan tersebut berjalan untuk interval data yang belum diisi ulang, pekerjaan baru tidak dikirimkan untuk interval data tersebut.

  • Anda dapat mencoba kembali pekerjaan materialisasi yang gagal.

    Catatan

    Untuk mendapatkan ID pekerjaan dari pekerjaan materialisasi yang gagal:

    • Navigasi ke antarmuka pengguna pekerjaan Materialisasi set fitur.
    • Pilih Nama tampilan dari pekerjaan tertentu yang memiliki StatusGagal.
    • Temukan ID pekerjaan di bawah properti Nama yang ditemukan di halaman Gambaran Umum pekerjaan. Dimulai dengan Featurestore-Materialization-.

poller = fs_client.feature_sets.begin_backfill(
    name="transactions",
    version=version,
    job_id="<JOB_ID_OF_FAILED_MATERIALIZATION_JOB>",
)
print(poller.result().job_ids)

Memperbarui penyimpanan materialisasi offline

  • Jika penyimpanan materialisasi offline harus diperbarui di tingkat penyimpanan fitur, semua set fitur di penyimpanan fitur harus menonaktifkan materialisasi offline.
  • Jika materialisasi offline dinonaktifkan pada set fitur, status materialisasi data yang sudah terwujud dalam reset penyimpanan materialisasi offline. Reset merender data yang sudah terwujud tidak dapat digunakan. Anda harus mengirim ulang pekerjaan materialisasi setelah mengaktifkan materialisasi offline.

Tutorial ini membangun data pelatihan dengan fitur dari penyimpanan fitur, mengaktifkan materialisasi ke penyimpanan fitur offline, dan melakukan pengisian ulang. Selanjutnya, Anda akan menjalankan pelatihan model menggunakan fitur-fitur ini.

Penghapusan

Tutorial kelima dalam seri menjelaskan cara menghapus sumber daya.

Langkah berikutnya