Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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
transactionsetkinleş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
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.
Üst gezinti bölmesindeki İşlem açılan listesinde Azure Machine Learning Sunucusuz Spark altında Sunucusuz Spark İşlem'i seçin.
Oturumu yapılandırın:
- Üst durum çubuğunda Oturumu yapılandır'ı seçin.
- Python paketleri sekmesini seçin.
- Conda dosyasını karşıya yükle'yi seçin.
-
azureml-examples/sdk/python/featurestore-sample/project/env/online.ymlDosyayı yerel makinenizden seçin. - İ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.
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")Ö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")CLI'yı ayarlayın.
Uygulanamaz.
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 )Ö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_nameemin 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, )Ö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=3frequency=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:
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.
İş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:
Kartta öğesini
inference_stepseçinoutputs.DataAlan değerini kopyalayın. şunaazureml_995abbc2-3171-461e-8214-c3c5d17ede83_output_data_data_with_prediction:1benzer.DataAlan 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.predict_is_fraudToplu çı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
1sürüm değeri olarak GUID ile izlenmeyen bir veri varlığı oluşturmuştur. Bunun nedeni, için veya değerlerini sağlamamışnameolmanızdırversion.outputsinference_stepBu 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
- Yönetilen Feature Store özellik deposu kavramları ve üst düzey varlıklar hakkında bilgi edinin.
- Yönetilen Feature Store için kimlik ve erişim denetimi hakkında bilgi edinin.
- Yönetilen Feature Store için sorun giderme kılavuzunu görüntüleyin.
- YAML başvuruyu görüntüleyin.