Databricks Online Özellik Depoları

Databricks Online Özellik Depoları, özellik verilerini çevrimiçi uygulamalara ve gerçek zamanlı makine öğrenmesi modellerine sunmanın yüksek performanslı, ölçeklenebilir bir çözümüdir. Databricks Lakebase tarafından desteklenen Çevrimiçi Özellik Depoları, çevrimdışı özellik tablolarınızla tutarlılığı korurken özellik verilerine yüksek ölçekte düşük gecikme süreli erişim sağlar.

Çevrimiçi Özellik Mağazaları için birincil kullanım örnekleri şunlardır:

Yeni Çevrimiçi Özellik Depoları artık Lakebase Otomatik Ölçeklendirme projeleri olarak oluşturulur. Ayrıntılar ve farklılıklar için bkz. Otomatik Ölçeklendirme'de Lakebase birleştirme.

Requirements

Databricks Online Özellik Depoları için Databricks Runtime 16.4 LTS ML veya üzeri gerekir. Sunucusuz işlem de kullanabilirsiniz.

Databricks Online Özellik Depolarını kullanmak için önce paketi yüklemeniz gerekir. Not defteri her çalıştırıldığında aşağıdaki kod satırları yürütülmelidir:

%pip install databricks-feature-engineering>=0.13.0
dbutils.library.restartPython()

Çevrimiçi mağaza oluşturma

Çevrimiçi mağaza oluşturduğunuzda, gerçek zamanlı özellik sunma için yüksek oranda kullanılabilir bir yönetilen altyapı sağlanır. create_online_store API bir Lakebase Otomatik Ölçeklendirme örneği oluşturur. Lakebase Otomatik Ölçeklendirme hakkında ayrıntılı bilgi için bkz. Varsayılan olarak otomatik ölçeklendirme.

Maliyetleri yönetmek için geliştirme ve test sırasında kullanılmadığında Lakebase sağlayıcılı çevrimiçi mağazaları silin.

Yeni bir çevrimiçi özellik deposu oluşturmak için:

from databricks.feature_engineering import FeatureEngineeringClient

# Initialize the client
fe = FeatureEngineeringClient()

# Create an online store with specified capacity
fe.create_online_store(
    name="my-online-store", # maximum of 63 bytes
    capacity="CU_2"  # Valid options: "CU_1", "CU_2", "CU_4", "CU_8"
)

Lakebase Otomatik Ölçeklendirme örneklerinin kapasite seçenekleri hakkında bilgi için bkz. İşlem boyutu. API tek bir değer belirtse de, kapasite aslında otomatik olarak ölçeklendirilen bir aralıktır.

Lakebase Otomatik Ölçeklendirme örneklerine yönelik izinler hakkında bilgi için bkz. Proje izinleri verme.

Lakebase Tarafından Sağlanan örneklerin kapasite seçenekleri hakkında bilgi için bkz. Örnek kapasitesini yönetme.

Çevrimiçi mağazaları yönetme

Aşağıdaki kod çevrimiçi mağazaların nasıl alınacağını gösteriyor.

# List all accessible online stores
stores = fe.list_online_stores()
for store in stores:
    print(f"Store: {store.name}, State: {store.state}, Capacity: {store.capacity}")

# Get information about an existing online store
store = fe.get_online_store(name="my-online-store")
if store:
    print(f"Store: {store.name}, State: {store.state}, Capacity: {store.capacity}")

kullanarak fe.create_online_storebir çevrimiçi mağaza oluşturduysanız, kullanarak fe.update_online_storegüncelleştirebilirsiniz:

# Update the capacity of an online store
# Note: this does not work for an Autoscaling instance that was created using the projects API or the UI
updated_store = fe.update_online_store(
    name="my-online-store",
    capacity="CU_4"  # Upgrade to higher capacity
)

Çevrimiçi mağazaya okuma replikaları ekleme

Çevrimiçi özellik mağazası oluştururken veya güncelleştirirken, read_replica_count parametresini belirterek çevrimiçi özellik mağazasına okuma amaçlı çoğaltmalar ekleyebilirsiniz. Okuma trafiği, okuma amaçlı çoğaltmalar arasında otomatik olarak dağıtılarak gecikme süresini azaltır ve yüksek eşzamanlılık iş yükleri için performans ve ölçeklenebilirliği artırır.

API veya kullanıcı arabirimi kullanılarak oluşturulmuş bir Lakebase Otomatik Ölçeklendirme projesine okuma replikaları ekleyemezsiniz.

Özellik tablosunu çevrimiçi bir mağazada yayımlama

Çevrimiçi mağazanız KULLANıLABILIR durumda olduktan sonra, özellik tablolarını yayımlayarak düşük gecikme süreli erişim için kullanılabilir duruma getirebilirsiniz. API, publish_table çevrimdışı özellik tablonuzdaki verileri, create_online_store API kullanılarak oluşturulan çevrimiçi mağazayla eşitler. Kaynak çevrimdışı tablonuzun gerçek zamanlı kullanım örneği için doğru şekilde oluşturulduğundan emin olmak için aşağıdaki tabloyu gözden geçirin.

Kullanım örneği Bu yöntemi kullanarak çevrimdışı özellik tablosu oluşturma
Gerçek zamanlı uygulamalar için çevrimiçi mağazada her varlık kimliği için yalnızca en son özellik değerleri kullanılabilir. Çevrimdışı veri kaynağında aynı birincil anahtar değerine ancak farklı zaman serisi anahtar değerlerine sahip birden çok satır bulunabilir ve yayım hattında yinelenenler kaldırılır.
Bu durum en sık çevrimiçi model veya uç noktaları sunan özellik için kullanılır.
Zaman serisi gösterimiyle tablo oluşturma
Çevrimdışı tablodaki en son ve tüm önceki zaman serisi özellik değerleri, gerçek zamanlı uygulamaların erişimi için çevrimiçi mağazada kullanılabilir.
Kaynak (çevrimdışı) tablodaki tüm satırlar yinelenenleri kaldırmadan yayımlanır. Bu seyrek kullanılır, ancak uç noktaların varlık kimliğine göre özellikleri sorguladığı ve veri doğrulama veya geri test için tam tarih/zaman damgası gerektirdiği durumlarda gerekli olabilir. DATE veya TIMESTAMP sütununu zaman serisi semantiği olmadan düz arama anahtarı olarak kullanmak için sütun türünü STRING olarak değiştirin.
Zaman serisi gösterimiyle tablo oluşturma

Çevrimiçi mağazalarda yayımlama önkoşulları

Yayımlamadan önce tüm özellik tablolarının (zaman serisiyle veya zaman serisi olmadan) bu gereksinimleri karşılaması gerekir:

  1. Birincil anahtar kısıtlaması: Çevrimiçi mağaza yayımlama için gereklidir
  2. Null değer atanamayan birincil anahtarlar: Birincil anahtar sütunları NULL değerler içeremez
  3. Veri Akışını Değiştir etkinleştirildi: CONTINUOUS ve TRIGGERED yayımlama modları için gereklidir. Delta Tablo Değişiklik Veri Akışı'nı etkinleştirme ve yayımlama modları hakkında bilgi için ilgili konulara bakın.
-- Enable CDF if not already enabled
ALTER TABLE catalog.schema.your_feature_table
SET TBLPROPERTIES ('delta.enableChangeDataFeed' = 'true');

-- Ensure primary key columns are not nullable
ALTER TABLE catalog.schema.your_feature_table
ALTER COLUMN user_id SET NOT NULL;

Özellik tablosu yayımlama

Bir özellik tablosunu çevrimiçi bir mağazada yayımlamak için:

from databricks.ml_features.entities.online_store import DatabricksOnlineStore

# Get the online store instance
# For Lakebase Autoscaling projects creating using the Lakebase API or UI,
# `name` is the last part of the resouce name: projects/{online_store_name}
online_store = fe.get_online_store(name="my-online-store")

# Publish the feature table to the online store
fe.publish_table(
    online_store=online_store,
    source_table_name="catalog_name.schema_name.feature_table_name",
    # for online_table_name, the catalog name, schema name, and table name each are limited to a maximum of 63 bytes
    online_table_name="catalog_name.schema_name.online_feature_table_name",
    # `publish_mode` argument is optional and defaults to "TRIGGERED" mode if not specified
)

İşlem publish_table aşağıdakileri yapar:

  1. Mevcut değilse çevrimiçi mağazada bir tablo oluşturun.
  2. Çevrimdışı özellik tablosundaki özellik verilerini çevrimiçi mağazayla eşitleyin.
  3. Çevrimiçi mağazayı çevrimdışı tabloyla eşitlenmiş durumda tutmak için gerekli altyapıyı ayarlayın.

publish_table her zaman Lakebase Otomatik Ölçeklendirme projesinin varsayılan dalını kullanır.

Yayımlama modları

publish_mode Çevrimiçi tablonun çevrimdışı özellik tablosundaki değişikliklerle nasıl ve ne zaman güncelleştirileceğini belirleyen Databricks Online Özellik Deposu parametresi. Desteklenen modlar hakkında ayrıntılı bilgi için aşağıda özetlenen Eşitleme modları bölümüne bakın:

Mode Description
TRIGGERED Default. Çevrimiçi tabloyu, API'yi kullanarak veya bir zamanlamaya göre çevrimdışı tablodaki değişikliklerle artımlı olarak güncelleştirir. Veri eşitlemeyi düzenli aralıklarla tetikleme seçenekleri:

Bu mod, Çevrimdışı tabloda Veri Akışını Değiştir'in etkinleştirilmesini gerektirir. Bkz. Çevrimiçi mağazalarda yayımlama önkoşulları.
CONTINUOUS Çevrimiçi tablo, çevrimdışı özellik tablosuna yeni veriler yazıldığında çevrimiçi mağazayı derhal güncellemek için bir akış hattı ile yapılandırılmıştır.
SNAPSHOT Kaynak tablodaki tüm verileri çevrimiçi mağazaya kopyalayan tek seferlik bir eşitleme gerçekleştirir. İki eşitleme işlemi arasındaki mevcut satırlarda çok sayıda güncelleştirme olduğunda bu mod verimlidir.

publish_mode parametresi, v0.13.0.1 ve önceki sürümlerden başlayarak streaming parametresinin yerini alır. Geriye dönük uyumluluk için streaming=True geçirilirse, publish_mode="CONTINUOUS" ayarını yapmakla eşdeğerdir.

Çevrimiçi tabloyu silme

Çevrimiçi tabloyu silmek için Databricks SDK'sını kullanın:

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()
w.feature_store.delete_online_table(online_table_name="catalog_name.schema_name.online_feature_table_name")

Important

Bu, çevrimiçi tabloyu silmek için önerilen tek yöntemdir. Tabloyu hem Unity Kataloğu'ndan hem de veritabanından kaldırır. DROP TABLE için Databricks SQL komutu veya Python SDK komutu gibi diğer yöntemler tabloyu temel alınan veritabanı depolama alanından silmez.

Çevrimiçi özellikleri keşfetme ve sorgulama

Yayımlanan tablonuzun durumu "KULLANıLABILIR" olarak gösterildikten sonra özellik verilerini çeşitli yollarla inceleyebilir ve sorgulayabilirsiniz:

Unity Kataloğu kullanıcı arabirimi: Örnek verileri görüntülemek ve şemayı doğrudan kullanıcı arabiriminde keşfetmek için Unity Kataloğu'ndaki çevrimiçi tabloya gidin. Bu, özellik verilerinizi incelemek ve yayımlama işleminin başarıyla tamamlandığını doğrulamak için kullanışlı bir yol sağlar.

SQL Düzenleyicisi: Daha gelişmiş sorgulama ve veri keşfi için SQL düzenleyicisini kullanarak çevrimiçi özellik tablolarınızda PostgreSQL sorguları çalıştırabilirsiniz. Bu, özellik verileriniz üzerinde karmaşık sorgular, birleştirmeler ve analizler gerçekleştirmenizi sağlar. SQL düzenleyicisini çevrimiçi mağazalarla kullanma hakkında ayrıntılı yönergeler için bkz. SQL düzenleyicisinden veritabanı örneğine erişme.

Gerçek zamanlı uygulamalarda çevrimiçi özellikleri kullanma

Gerçek zamanlı uygulamalara ve hizmetlere özellik sunmak için uç noktaya hizmet veren bir özellik oluşturun. Bkz Özellik Sunumu uç noktaları.

Databricks'in özellikleri kullanılarak eğitilen modeller, kökeni eğitildikleri özelliklere göre otomatik olarak izler. Uç nokta olarak dağıtıldığında, bu modeller çevrimiçi mağazalarda uygun özellikleri bulmak için Unity Kataloğu'nu kullanır. Ayrıntılar için bkz. Çevrimiçi iş akışlarında özellikleri kullanma.

Çevrimiçi mağazayı silme

Çevrimiçi mağazayı silmek için:

fe.delete_online_store(name="my-online-store")

Note

Çevrimiçi yayımlanan bir tablonun silinmesi, aşağı akış bağımlılıklarında beklenmeyen hatalara neden olabilir. Tabloyu silmeden önce, çevrimiçi özelliklerinin artık model sunma veya özellik sunma uç noktaları tarafından kullanılmadığından emin olmanız gerekir.

Maliyet iyileştirme en iyi yöntemleri

  • Çevrimiçi mağazaları yeniden kullanma: Tek bir çevrimiçi mağazada birden çok özellik tablosu yayımlayabilirsiniz. Geliştirme, test ve eğitim senaryoları için ayrı mağazalar oluşturmak yerine tek bir çevrimiçi mağazayı birden çok proje veya kullanıcı arasında paylaşmanızı öneririz.
  • Doğru boyut kapasitesi: Test için CU_1 ile başlayın ve yalnızca performans gereksinimleri gerektiğinde ölçeği artırın.
  • Kullanımda olmayan çevrimiçi mağazaları silin: Çevrimiçi mağazalar sürekli maliyete neden olur. Artık gerekli olmayan çevrimiçi mağazaları silin.

Limitations

  • Belirli bir çevrimiçi tablo belirtilmesi desteklenmez. Bir özellik tablosu birden çok çevrimiçi tabloda yayımlandığında, model sunma ve özellik sunma uç noktaları her zaman oluşturma zaman damgasına göre ilk oluşturulan çevrimiçi tabloya yönlendiriliyor.
  • Çevrimiçi özellik mağazası, birincil dahil olmak üzere toplam 4 hesaplama birimi ile en fazla 3 okuma replikasını destekler. Okuma kopyaları, okuma trafiğini birincil sunucudan azaltarak, birincil sistem başarısız olduğunda devralıp yöneterek yüksek kullanılabilirlik sağlar.
  • Databricks çevrimiçi özellik deposunda yayımlanırken aşağıdaki parametreler desteklenmez: filter_condition, checkpoint_location, mode, triggerve features.
  • Yalnızca Unity Kataloğu'ndaki özellik tabloları desteklenir.
  • Desteklenen tek yayımlama modu "birleştirme"dir.
  • Lakebase ölçeklendirme sıfıra desteklenmez.
  • Birden çok çevrimiçi özellik deposundan özellik araması yapan Özellik Sunma ve Model Sunma uç noktaları Lakebase Otomatik Ölçeklendirme örneklerini kullanamaz.
  • Projeler API'sini veya kullanıcı arabirimini kullanarak oluşturulan otomatik ölçeklendirme örnekleri şu alanları kullanmaz: creator, read_replica_countve capacity.
  • Projeler API'sini veya kullanıcı arabirimini kullanarak oluşturulan bir Otomatik Ölçeklendirme örneğini güncelleştiremezsiniz.

Sorun giderme

Hata iletisi: Skipping publishing to online table '...' because the feature sync pipeline is already running.

Birden çok not defteri veya iş aynı anda çevrimiçi bir tabloda yayımlamaya çalışırsa bu hata oluşur. Veri çakışmalarını önlemek için aynı anda çevrimiçi tablo başına yalnızca tek bir eşitleme işlemine izin verilir.

Databricks, iş akışlarınızın tek bir komut (örneğin işin sonundaki tek publish_table bir görev) kullanacak şekilde tasarlanması önerilir. İş akışlarınız bu şekilde koordine edilemiyorsa, yeni bir yayımlama tetiklemeden önce diğer yayımlama komutlarının eşitlenmesi tamamlanana kadar beklemek için kullanın get_status() .

Örnek defter

Aşağıdaki notebook, Databricks Lakebase kullanarak Databricks Online Özellik Deposu'nun nasıl ayarlanacağı ve bu depoya nasıl erişileceğine ilişkin bir örnek göstermektedir.

Lakebase not defteri ile çevrimiçi özellik deposu

Dizüstü bilgisayar al

Ek kaynaklar

  • Lakebase mimarisini ve özelliklerini anlama.