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.
Azure Machine Learning yönetilen özellik deposu özellikleri keşfetmenize, oluşturmanıza ve kullanıma hazır hale getirmenize yardımcı olur. Özellikler, çeşitli özelliklerle denemeler yaptığınız prototip oluşturma aşamasından başlayarak makine öğrenmesi yaşam döngüsünde bağ dokusu görevi görür. Bu yaşam döngüsü, modellerinizi dağıttığınız işletimselleştirme aşamasına devam eder ve çıkarım adımları özellik verilerini arar. Yönetilen özellik deposu hakkında daha fazla bilgi için bkz. Yönetilen özellik deposu nedir?
Önemli
Redis için Azure Önbellek tüm SKU'lar için kullanımdan kaldırma zaman çizelgesini duyurdu. Mevcut Redis için Azure Önbellek örneklerinizi en kısa sürede Azure Yönetilen Redis'e taşımanızı öneririz.
Geçiş kılavuzu:
- Azure Yönetilen Redis'e Basic, Standard ve Premium katmanlarını taşıyın
- Enterprise katmanını Azure Yönetilen Redis'e taşıyın
Kullanımdan kaldırma hakkında daha fazla bilgi için:
Öğretici 1'de özel dönüştürmelerle bir özellik kümesi belirtimi oluşturma ve ardından bu özellik kümesini kullanarak eğitim verileri oluşturma, gerçekleştirmeyi etkinleştirme ve bir geri doldurma gerçekleştirme işlemlerinin nasıl gerçekleştirileceği gösterildi. Öğretici 2,model performansını geliştirmek için özelliklerle deneme yapmayı ve ardından özellikleri kullanan bir modeli eğitip kaydetmeyi gösterdi. Öğretici 3'te özellik kümesi için yinelenen gerçekleştirmenin nasıl etkinleştirileceği transactions ve toplu çıkarım işlem hattının nasıl çalıştırileceği gösterilmiştir. Öğretici 4'te çevrimiçi gerçekleştirmenin nasıl etkinleştirileceği ve çevrimiçi çıkarımların nasıl çalıştırileceği gösterilmektedir.
Bu öğreticide, öğreneceğiniz...
- Özel bir veri kaynağından veri yüklemek için mantığı tanımlayın.
- Bu özel veri kaynağından kullanmak üzere bir özellik kümesini yapılandırın ve kaydedin.
- Kayıtlı özellik kümesini test edin.
Önkoşullar
Not
Bu öğreticide Sunucusuz Spark İşlem içeren bir Azure Machine Learning not defteri kullanılır.
- Bu seride 1 ile 4 arasında Öğreticiler'i tamamladığınızdan emin olun. Bu öğretici, önceki öğreticilerde oluşturduğunuz özellik deposunu ve diğer kaynakları yeniden kullanır.
Kurulum
Bu öğreticide Python özellik deposu çekirdek SDK'sı (azureml-featurestore) kullanılır. Python SDK'sı özellik depolarında, özellik kümelerinde ve özellik deposu varlıklarında oluşturma, okuma, güncelleştirme ve silme (CRUD) işlemleri için kullanılır.
Çünkü burada gösterilen kurulum yönergelerinde conda.yml dosyanız bunları kapsadığından, bu öğretici için bu kaynakları ayrıca yüklemenize gerek yoktur.
Azure Machine Learning Spark not defterini yapılandırma
Yeni bir not defteri oluşturabilir ve bu öğreticideki yönergeleri adım adım yürütebilirsiniz. Mevcut not defteri featurestore_sample/notebooks/sdk_only/5.Develop-feature-set-custom-source.ipynb dosyasını da açıp çalıştırabilirsiniz. Bu öğreticiyi açık tutun ve belge bağlantıları ve daha fazla açıklama için bu öğreticiye başvurun.
Üstteki menüde, Compute açılan listesinde, Azure Machine Learning Sunucusuz Spark altında Sunucusuz Spark İşlem öğesini seçin.
Oturumu yapılandırın:
- Üst durum çubuğunda Oturumu yapılandır'ı seçin
Python packages sekmesini seçin,Conda dosyasını yükle - Conda dosyasını karşıya yükle'yi seçin
- Öğretici 1'de karşıya yüklediğinizconda.yml dosyasını karşıya yükleyin.
- İsteğe bağlı olarak, önkoşul tekrarlarını sık sık yapmamak için oturum zaman aşımını (boşta kalma süresi) artırın.
Örnekler için kök dizini ayarlama
Bu kod hücresi örnekler için kök dizini ayarlar. Tüm bağımlılıkları yüklemek ve Spark oturumunu başlatmak için yaklaşık 10 dakika gerekir.
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 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")Özellik deposu çalışma alanının CRUD istemcisini başlatma
Özellik deposu çalışma alanını, oluşturma, okuma, güncelleştirme ve silme (CRUD) işlemlerini kapsayacak şekilde başlatın.
from azure.ai.ml import MLClient
from azure.ai.ml.identity import AzureMLOnBehalfOfCredential
# Feature store
featurestore_name = (
"<FEATURESTORE_NAME>" # use the same name that was used in the tutorial #1
)
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 çekirdek SDK istemcisini başlatın.
Daha önce belirtildiği gibi, bu öğreticide Python özellik deposu çekirdek SDK'sı (azureml-featurestore) kullanılmaktadır. Bu başlatılan SDK istemcisi özellik depolarında, özellik kümelerinde ve özellik deposu varlıklarında oluşturma, okuma, güncelleştirme ve silme (CRUD) işlemlerini kapsar.
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,
)Özel kaynak tanımı
Özel kaynak tanımı olan herhangi bir veri depolama alanından kendi kaynak yükleme mantığınızı tanımlayabilirsiniz. Bu özelliği kullanmak için bir kaynak işlemci kullanıcı tanımlı işlev (UDF) sınıfı (CustomSourceTransformer bu öğreticide) uygulayın. Bu sınıf bir __init__(self, **kwargs) işlev ve bir process(self, start_time, end_time, **kwargs) işlev tanımlamalıdır.
kwargs Sözlük, özellik kümesi belirtim tanımının bir parçası olarak sağlanır. Bu tanım daha sonra UDF'ye geçirilir.
start_time ve end_time parametreleri hesaplanır ve UDF işlevine geçirilir.
Bu, kaynak işlemci UDF sınıfı için örnek koddur:
from datetime import datetime
class CustomSourceTransformer:
def __init__(self, **kwargs):
self.path = kwargs.get("source_path")
self.timestamp_column_name = kwargs.get("timestamp_column_name")
if not self.path:
raise Exception("`source_path` is not provided")
if not self.timestamp_column_name:
raise Exception("`timestamp_column_name` is not provided")
def process(
self, start_time: datetime, end_time: datetime, **kwargs
) -> "pyspark.sql.DataFrame":
from pyspark.sql import SparkSession
from pyspark.sql.functions import col, lit, to_timestamp
spark = SparkSession.builder.getOrCreate()
df = spark.read.json(self.path)
if start_time:
df = df.filter(col(self.timestamp_column_name) >= to_timestamp(lit(start_time)))
if end_time:
df = df.filter(col(self.timestamp_column_name) < to_timestamp(lit(end_time)))
return df
Özelleştirilmiş bir kaynakla bir özellik kümesi belirleyin ve bunu yerel olarak deneyin.
Şimdi, özel bir kaynak tanımıyla bir özellik kümesi belirtimi oluşturun ve özellik kümesiyle denemeler yapmak için geliştirme ortamınızda kullanın. Sunucusuz Spark İşlem'e eklenen öğretici not defteri, geliştirme ortamı görevi görür.
from azureml.featurestore import create_feature_set_spec
from azureml.featurestore.feature_source import CustomFeatureSource
from azureml.featurestore.contracts import (
SourceProcessCode,
TransformationCode,
Column,
ColumnType,
DateTimeOffset,
TimestampColumn,
)
transactions_source_process_code_path = (
root_dir
+ "/featurestore/featuresets/transactions_custom_source/source_process_code"
)
transactions_feature_transform_code_path = (
root_dir
+ "/featurestore/featuresets/transactions_custom_source/feature_process_code"
)
udf_featureset_spec = create_feature_set_spec(
source=CustomFeatureSource(
kwargs={
"source_path": "wasbs://data@azuremlexampledata.blob.core.windows.net/feature-store-prp/datasources/transactions-source-json/*.json",
"timestamp_column_name": "timestamp",
},
timestamp_column=TimestampColumn(name="timestamp"),
source_delay=DateTimeOffset(days=0, hours=0, minutes=20),
source_process_code=SourceProcessCode(
path=transactions_source_process_code_path,
process_class="source_process.CustomSourceTransformer",
),
),
feature_transformation=TransformationCode(
path=transactions_feature_transform_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,
)
udf_featureset_spec
Ardından, bir özellik penceresi tanımlayın ve bu özellik penceresinde özellik değerlerini görüntüleyin.
from datetime import datetime
st = datetime(2023, 1, 1)
et = datetime(2023, 6, 1)
display(
udf_featureset_spec.to_spark_dataframe(
feature_window_start_date_time=st, feature_window_end_date_time=et
)
)Özellik kümesi belirtimi olarak dışa aktarma
Özellik kümesi belirtimini özellik deposuna kaydetmek için önce bu belirtimi belirli bir biçimde kaydedin. Oluşturulan transactions_custom_source özellik kümesi belirtimini gözden geçirin. Belirtimi görüntülemek için bu dosyayı dosya ağacından açın: featurestore/featuresets/transactions_custom_source/spec/FeaturesetSpec.yaml.
Belirtim şu öğelere sahiptir:
-
features: Özelliklerin ve bunların veri türlerinin listesi. -
index_columns: Özellik kümesinden değerlere erişmek için gereken birleştirme anahtarları.
Belirtim hakkında daha fazla bilgi için Yönetilen özelliği depolamada üst düzey varlıkları anlama ve CLI (v2) özellik kümesi YAML şeması kaynaklarını ziyaret edin.
Özellik kümesi belirtimi kalıcılığı başka bir avantaj sunar: özellik kümesi belirtimi kaynak denetimi yapılabilir.
feature_spec_folder = (
root_dir + "/featurestore/featuresets/transactions_custom_source/spec"
)
udf_featureset_spec.dump(feature_spec_folder)İşlem özellik kümesini özellik deposuna kayıt et
Özel kaynaktan yüklenen bir özellik kümesi varlığını özellik deposuna kaydetmek için bu kodu kullanın. Daha sonra bu varlığı yeniden kullanabilir ve kolayca paylaşabilirsiniz. Özellik kümesi varlığının kaydı, sürüm oluşturma ve materyalizasyon dahil olmak üzere yönetilen kapasiteler sunar.
from azure.ai.ml.entities import FeatureSet, FeatureSetSpecification
transaction_fset_config = FeatureSet(
name="transactions_custom_source",
version="1",
description="transactions feature set loaded from custom source",
entities=["azureml:account:1"],
stage="Development",
specification=FeatureSetSpecification(path=feature_spec_folder),
tags={"data_type": "nonPII"},
)
poller = fs_client.feature_sets.begin_create_or_update(transaction_fset_config)
print(poller.result())
Kayıtlı özellik kümesini alın ve ilgili bilgileri yazdırın.
# Look up the feature set by providing name and version
transactions_fset_config = featurestore.feature_sets.get(
name="transactions_custom_source", version="1"
)
# Print feature set information
print(transactions_fset_config)Kayıtlı özellik kümesinden özellik oluşturmayı test edin
Özellik kümesinin to_spark_dataframe() işlevini kullanarak kayıtlı özellik kümesinden özellik oluşturmayı test edin ve özellikleri görüntüleyin.
print-txn-fset-örnek-değerleri
df = transactions_fset_config.to_spark_dataframe()
display(df)
Kayıtlı özellik kümesini Spark veri çerçevesi olarak başarıyla getirebilmeniz ve ardından görüntüleyebilmeniz gerekir. Bu özellikleri artık gözlem verileriyle belirli bir noktaya birleşim ve makine öğrenmesi işlem hattınızdaki sonraki adımlar için kullanabilirsiniz.
Temizleme
Öğretici için bir kaynak grubu oluşturduysanız, bu kaynak grubunu silebilirsiniz; bu da bu öğreticiyle ilişkili tüm kaynakları siler. Aksi takdirde, kaynakları tek tek silebilirsiniz:
- Özellik depoyu silmek için Azure portalında kaynak grubunu açın, özellik depoyu seçin ve silin.
- Kullanıcı tarafından atanan yönetilen kimlik (UAI), özellik deposu çalışma alanına atanmıştır ve özellik deposunu sildiğimizde silinmez. UAI'yi silmek için bu yönergeleri izleyin.
- Depolama hesabı türündeki çevrimdışı depoyu silmek için Azure portalında kaynak grubunu açın, oluşturduğunuz depolama alanını seçin ve silin.
- bir Redis için Azure Önbellek örneğini silmek için Azure portalında kaynak grubunu açın, oluşturduğunuz örneği seçin ve silin.