Udostępnij przez


Omówienie i słownik magazynu funkcji

Na tej stronie wyjaśniono, jak działa magazyn funkcji usługi Databricks i definiuje ważne terminy.

Jak działa inżynieria cech w usłudze Databricks?

Typowy przepływ pracy uczenia maszynowego korzystający z inżynierii funkcji w usłudze Databricks jest następujący:

  1. Napisz kod, aby przekonwertować nieprzetworzone dane na funkcje i utworzyć ramkę danych platformy Spark zawierającą żądane funkcje.

  2. Utwórz tabelę delty w wykazie aparatu Unity , która ma klucz podstawowy.

  3. Trenowanie i rejestrowanie modelu przy użyciu tabeli funkcji. Gdy to zrobisz, model przechowuje specyfikacje funkcji używanych do trenowania. Gdy model jest używany do wnioskowania, automatycznie łączy funkcje z odpowiednich tabel funkcji.

  4. Rejestrowanie modelu w rejestrze modeli.

    Teraz możesz użyć modelu do przewidywania nowych danych. W przypadku przypadków użycia wsadowego model automatycznie pobiera funkcje, których potrzebuje ze sklepu Feature Store.

  5. W przypadku przypadków użycia obsługujących usługi w czasie rzeczywistym opublikuj funkcje w sklepie funkcji online.

  6. W czasie wnioskowania model obsługujący punkt końcowy automatycznie używa identyfikatorów jednostek w danych żądania, aby wyszukać wstępnie obliczone funkcje z magazynu online w celu oceny modelu uczenia maszynowego. Punkt końcowy używa wykazu aparatu Unity do rozpoznawania pochodzenia z obsługiwanego modelu do funkcji używanych do trenowania tego modelu i śledzi pochodzenie do magazynu funkcji online na potrzeby dostępu w czasie rzeczywistym.

Przepływ magazynu funkcji dla obsługiwanych modeli uczenia maszynowego.

Słownik magazynu funkcji

Magazyn funkcji

Magazyn funkcji to scentralizowane repozytorium, które umożliwia analitykom danych znajdowanie i udostępnianie funkcji. Użycie magazynu funkcji zapewnia również, że kod używany do obliczania wartości funkcji jest taki sam podczas trenowania modelu i gdy model jest używany do wnioskowania. Sposób działania magazynu funkcji w usłudze Databricks zależy od tego, czy obszar roboczy obsługuje Unity Catalog, czy nie.

  • W obszarach roboczych z włączonym katalogiem Unity można użyć dowolnej tabeli Delta w katalogu Unity, która zawiera ograniczenie klucza podstawowego jako tabelę cech.
  • Obszary robocze, które nie są włączone dla Unity Catalog, utworzone przed 19 sierpnia 2024 r., 16:00:00 (UTC) mają dostęp do starszego Workspace Feature Store.

Uczenie maszynowe używa istniejących danych do tworzenia modelu w celu przewidywania przyszłych wyników. W prawie wszystkich przypadkach nieprzetworzone dane wymagają wstępnego przetwarzania i przekształcania, zanim będzie można go użyć do utworzenia modelu. Ten proces jest nazywany inżynierią cech, a dane wyjściowe tego procesu są nazywane funkcjami — blokami konstrukcyjnymi modelu.

Tworzenie funkcji jest skomplikowane i czasochłonne. Dodatkową komplikacją jest to, że w przypadku uczenia maszynowego obliczenia funkcji należy wykonać na potrzeby trenowania modelu, a następnie ponownie, gdy model jest używany do przewidywania. Te implementacje mogą nie być wykonywane przez ten sam zespół lub przy użyciu tego samego środowiska kodu, co może prowadzić do opóźnień i błędów. Ponadto różne zespoły w organizacji często mają podobne potrzeby funkcji, ale mogą nie być świadomi pracy wykonanej przez inne zespoły. Magazyn funkcji jest przeznaczony do rozwiązywania tych problemów.

Tabele funkcji

Funkcje są zorganizowane jako tabele funkcji. Każda tabela musi mieć klucz podstawowy, która jest wspierana przez tabelę Delta table i dodatkowe metadane. Metadane tabeli funkcji śledzą źródła danych, z których została wygenerowana tabela, oraz notesy i zadania utworzone lub napisane w tabeli.

W przypadku środowiska Databricks Runtime 13.3 LTS lub nowszego, jeśli obszar roboczy jest włączony dla wykazu aparatu Unity, możesz użyć dowolnej tabeli delty w wykazie aparatu Unity z kluczem podstawowym jako tabelą funkcji. Zobacz Praca z tabelami funkcji w katalogu Unity. Tabele cech przechowywane w lokalnym Workspace Feature Store nazywane są "tabelami cech obszaru roboczego". Zobacz Pracuj z tabelami funkcji w sklepie funkcji obszaru roboczego (wersja starsza).

Funkcje w tabeli funkcji są zwykle obliczane i aktualizowane przy użyciu typowej funkcji obliczeniowej.

Tabelę funkcji można opublikować w sklepie online na potrzeby wnioskowania modelu w czasie rzeczywistym.

FeatureLookup

Wiele różnych modeli może używać funkcji z określonej tabeli funkcji, a nie wszystkie modele będą potrzebować każdej funkcji. Aby wytrenować model przy użyciu cech, należy utworzyć FeatureLookup dla każdej tabeli cech. Określa FeatureLookup, które cechy mają być używane z tabeli, a także definiuje klucze używane do połączenia tabeli cech z danymi etykiet przekazanymi do create_training_set.

Na diagramie przedstawiono sposób działania FeatureLookup. W tym przykładzie chcesz wytrenować model przy użyciu cech z dwóch tabel cech, customer_features oraz product_features. Dla każdej tabeli funkcji tworzysz FeatureLookup, określając nazwę tabeli, funkcje (kolumny) do wybrania z tabeli oraz klucz wyszukiwania do użycia podczas łączenia funkcji w celu utworzenia zestawu danych szkoleniowych.

Następnie wywołaj metodę create_training_set, również pokazaną na diagramie. To wywołanie interfejsu API określa ramkę danych zawierającą nieprzetworzone dane treningowe (label_df), FeatureLookups do użycia i label, kolumnę zawierającą wartości referencyjne. Dane szkoleniowe muszą zawierać kolumny odpowiadające poszczególnym kluczom podstawowym tabel funkcji. Dane w tabelach funkcji są przyłączone do wejściowej ramki danych zgodnie z tymi kluczami. Wynik jest wyświetlany na diagramie jako "Zestaw danych trenowania".

Diagram wyszukiwania funkcji

FeatureFunction

Funkcja może zależeć od informacji, które są dostępne tylko w momencie wnioskowania. Można określić element FeatureFunction , który łączy dane wejściowe w czasie rzeczywistym z wartościami funkcji w celu obliczenia aktualnych wartości funkcji. Przykład pokazano na diagramie. Aby uzyskać szczegółowe informacje, zobacz Obliczenia funkcji na żądanie.

Diagram funkcji cech

Zestaw szkoleniowy

Zestaw szkoleniowy składa się z listy funkcji i ramki danych zawierającej nieprzetworzone dane trenowania, etykiety i klucze podstawowe, za pomocą których można wyszukać funkcje. Zestaw trenowania można utworzyć, określając funkcje wyodrębnione ze sklepu Feature Store i podając zestaw trenowania jako dane wejściowe podczas trenowania modelu.

Zobacz Tworzenie zestawu danych szkoleniowych, aby zapoznać się z przykładem tworzenia i używania zestawu treningowego.

Podczas trenowania i rejestrowania modelu za pomocą inżynierii cech w Unity Catalog można wyświetlić rodowód modelu w Eksploratorze katalogu. Tabele i funkcje, które zostały użyte do utworzenia modelu, są automatycznie śledzone i wyświetlane. Zobacz Zarządzanie funkcjami i geneza danych.

FeatureSpec

A FeatureSpec to jednostka wykazu aparatu Unity, która definiuje zestaw funkcji i funkcji wielokrotnego użytku do obsługi. FeatureSpecs łączą FeatureLookups z tabel funkcji i FeatureFunctions w jedną jednostkę logiczną, która może być używana w trenowaniu modelu lub obsługiwana przy użyciu punktów końcowych obsługujących funkcje.

FeatureSpecs są przechowywane i zarządzane przez wykaz aparatu Unity, z pełnym śledzeniem pochodzenia do ich składników tabel funkcji trybu offline i funkcji. Umożliwia to zarządzanie, odnajdywanie i ponowne używanie w różnych modelach i aplikacjach.

Możesz użyć elementu FeatureSpec w następujący sposób:

  • Utwórz punkt końcowy obsługujący funkcję przy użyciu interfejsu API języka Python lub interfejsu API REST. Zobacz Funkcje obsługujące punkty końcowe lub wdróż bezpośrednio przy użyciu interfejsu użytkownika obsługującego model. W przypadku aplikacji o wysokiej wydajności włącz optymalizację tras.
  • Użyj polecenia w trenowaniu modelu, odwołując się do elementu w FeatureSpecelemencie create_training_set .

Obiekt FeatureSpec zawsze odwołuje się do tabel funkcji trybu offline, ale musi zostać opublikowany w sklepie online na potrzeby scenariuszy obsługi w czasie rzeczywistym.

Tabele cech szeregów czasowych (odnośniki do punktu w czasie)

Dane używane do trenowania modelu często mają wbudowane zależności czasowe. Podczas kompilowania modelu należy wziąć pod uwagę tylko wartości funkcji do czasu obserwowanej wartości docelowej. Jeśli trenujesz funkcje na podstawie danych mierzonych po znaczniku czasu wartości docelowej, wydajność modelu może ulec zmianie.

Tabele funkcji szeregów czasowych zawierają kolumnę znacznika czasu, która gwarantuje, że każdy wiersz w zestawie danych treningowych przedstawia najnowsze znane wartości funkcji na moment oznaczony przez znacznik czasu danego wiersza. Tabele funkcji szeregów czasowych należy używać zawsze, gdy wartości funkcji zmieniają się w czasie, na przykład w przypadku danych szeregów czasowych, danych opartych na zdarzeniach lub danych zagregowanych czasowo.

Podczas tworzenia tabeli funkcji szeregów czasowych należy określić kolumny związane z czasem w kluczach podstawowych jako kolumny szeregów czasowych przy użyciu argumentu timeseries_columns (w przypadku inżynierii funkcji w wykazie aparatu Unity) lub argumentu timestamp_keys (dla magazynu funkcji obszaru roboczego). Umożliwia to wyszukiwanie do punktu w czasie w przypadku korzystania z funkcji create_training_set lub score_batch. System wykonuje łączenie na bazie bieżącego znacznika czasu przy użyciu określonego elementu timestamp_lookup_key.

Jeśli nie używasz argumentu lub argumentu timeseries_columnstimestamp_keys i wyznaczasz tylko kolumnę szeregów czasowych jako kolumnę klucza podstawowego, magazyn funkcji nie stosuje logiki punktu w czasie do kolumny szeregów czasowych podczas sprzężeń. Zamiast tego dopasowuje tylko wiersze z dokładnym dopasowaniem czasu zamiast dopasowywania wszystkich wierszy przed znacznikiem czasu.

Magazyn offline

Magazyn funkcji offline jest używany do odnajdywania funkcji, trenowania modelu i wnioskowania wsadowego. Zawiera tabele funkcji zmaterializowane jako tabele delty.

Sklep funkcji online

Databricks Online Feature Store to wydajne i skalowalne rozwiązanie przeznaczone do dostarczania danych cech aplikacjom online oraz modelom uczenia maszynowego działającym w czasie rzeczywistym.

Wspomagane przez Databricks Lakebase, zapewnia dostęp do danych cech o niskim opóźnieniu na dużą skalę, przy zachowaniu zarządzania, historii i spójności z tabelami cech trybu offline.

Możesz aprowizować sklepy online na bezserwerowej platformie Lakebase. Interfejsy API umożliwiają zarządzanie wystąpieniami i replikami do odczytu oraz skalowaniem wystąpień zgodnie z potrzebami. Możesz użyć wygodnych interfejsów API, aby publikować tabele katalogu Unity w sklepach internetowych. Te tabele są również jednostkami katalogu Unity, które natywnie śledzą pochodzenie do tabel źródłowych. Usługa Databricks obsługuje również sklepy online innych firm.

Przesyłanie strumieniowe

Oprócz zapisów wsadowych usługa Databricks Feature Store obsługuje przesyłanie strumieniowe. Wartości funkcji można zapisywać w tabeli funkcji ze źródła przesyłania strumieniowego, a kod obliczeniowy funkcji może używać przesyłania strumieniowego ze strukturą, aby przekształcać nieprzetworzone strumienie danych w funkcje.

Tabele funkcji można również przesyłać strumieniowo ze sklepu offline do sklepu online.

Pakowanie modeli

Podczas trenowania modelu uczenia maszynowego przy użyciu inżynierii pola cech w katalogu Unity lub magazynie cech w obszarze roboczym i rejestrowaniu go przy użyciu metody klienta log_model(), model zachowuje odwołania do tych cech. W czasie wnioskowania model może opcjonalnie automatycznie pobierać wartości funkcji. Obiekt wywołujący musi podać tylko klucz podstawowy funkcji używanych w modelu (na przykład user_id), a model pobiera wszystkie wymagane wartości funkcji.

W wnioskowaniu wsadowym wartości funkcji są pobierane z magazynu offline i połączone z nowymi danymi przed ocenianiem. W wnioskowaniu w czasie rzeczywistym wartości funkcji są pobierane ze sklepu online.

Aby spakować model z metadanymi cech, użyj FeatureEngineeringClient.log_model (w przypadku inżynierii cech w katalogu Unity) lub FeatureStoreClient.log_model (w przypadku magazynu cech obszaru roboczego).