Topik ini menjelaskan cara menggunakan kit pengembangan perangkat lunak (SDK) FeatureStore Python untuk membangun dan menerbitkan sistem rekomendasi end-to-end di Platform for AI (PAI) FeatureStore.
Prasyarat
Sebelum memulai, pastikan Anda telah menyelesaikan persiapan berikut.
Ketergantungan produk | Prosedur |
Platform for AI (PAI) |
|
MaxCompute |
|
FeatureDB |
|
DataWorks |
|
Langkah 1. Persiapan Data
Menyinkronkan tabel data
Untuk skenario rekomendasi, Anda biasanya perlu menyiapkan tabel data berikut: tabel fitur pengguna, tabel fitur item, tabel label, tabel fitur sekuens, dan tabel perilaku.
Untuk menyederhanakan tutorial ini, kami telah menyiapkan contoh tabel pengguna, item, label, fitur sekuens, dan perilaku di proyek MaxCompute pai_online_project. Anda perlu menjalankan perintah SQL di DataWorks untuk menyinkronkan tabel-tabel tersebut dari proyek pai_online_project ke proyek MaxCompute Anda sendiri. Prosedurnya sebagai berikut:
Masuk ke Konsol DataWorks.
Pada panel navigasi kiri, klik Data Development & O&M > Data Development.
Pilih ruang kerja DataWorks Anda dan klik Enter Data Development.
Arahkan kursor ke New, lalu pilih New Node > MaxCompute > ODPS SQL. Pada kotak dialog yang muncul, konfigurasikan parameter node.
Parameter
Nilai yang disarankan
Engine Instance
Pilih engine MaxCompute Anda.
Node Type
ODPS SQL
Path
Business Flow/Workflow/MaxCompute
Name
Anda dapat menentukan nama kustom.
Klik Confirm.
Pada editor node, jalankan perintah SQL berikut untuk menyinkronkan tabel pengguna, item, label, fitur sekuens, dan perilaku dari proyek pai_online_project ke proyek MaxCompute Anda. Untuk grup sumber daya, pilih grup sumber daya eksklusif yang telah Anda buat.
Menyinkronkan tabel pengguna: rec_sln_demo_user_table_preprocess_all_feature_v1 (Klik untuk detail)
Menyinkronkan tabel item: rec_sln_demo_item_table_preprocess_all_feature_v1 (Klik untuk detail)
Menyinkronkan tabel label: rec_sln_demo_label_table (Klik untuk detail)
Menyinkronkan tabel fitur sekuens: rec_sln_demo_behavior_table_preprocess_sequence_wide_seq_feature_v3 (Klik untuk detail)
Menyinkronkan tabel perilaku: rec_sln_demo_behavior_table_preprocess_v3 (Klik untuk detail)
Setelah menyelesaikan langkah-langkah ini, tabel yang telah disinkronkan tersedia di ruang kerja Anda. Kelima tabel ini digunakan sebagai contoh pada bagian selanjutnya.
Konfigurasikan sumber data
Anda biasanya perlu mengonfigurasi dua sumber data untuk FeatureStore: sumber data offline (MaxCompute) dan sumber data online (FeatureDB, Hologres, atau TableStore). Topik ini menggunakan MaxCompute dan FeatureDB sebagai contoh.
Masuk ke Konsol PAI. Pada panel navigasi kiri, klik Data Preparation > FeatureStore.
Pilih ruang kerja dan klik Enter FeatureStore.
Konfigurasikan sumber data MaxCompute.
Pada tab Data Source, klik Create Store. Pada kotak dialog yang muncul, konfigurasikan parameter sumber data MaxCompute.
Parameter
Nilai yang disarankan
Type
MaxCompute
Name
Masukkan nama kustom.
MaxCompute Project Name
Pilih proyek MaxCompute Anda.
Setelah konfigurasi selesai, klik Submit.
Konfigurasikan sumber data FeatureDB.
Jika Anda telah membuat sumber data FeatureDB, Anda dapat melewati langkah ini.
Pada tab Store, klik Create Store. Pada kotak dialog yang muncul, konfigurasikan parameter sumber data FeatureDB.
Parameter
Nilai yang disarankan
Type
FeatureDB (Jika ini pertama kali Anda menggunakannya, ikuti petunjuk di layar untuk mengaktifkan FeatureDB)
Name
Nama kustom tidak didukung. Nilai default adalah feature_db.
Username
Tetapkan username.
Password
Tetapkan password.
VPC High-speed Connection (Optional)
Setelah konfigurasi berhasil, Anda dapat menggunakan FeatureStore SDK dalam VPC untuk langsung mengakses FeatureDB melalui koneksi PrivateLink. Hal ini meningkatkan kinerja baca/tulis data dan mengurangi latensi akses.
VPC
Pilih VPC tempat layanan FeatureStore online Anda berada.
Zone and vSwitch
Pilih zona dan vSwitch. Pastikan memilih vSwitch di zona tempat mesin layanan online Anda berada. Kami menyarankan Anda memilih vSwitch di minimal dua zona untuk memastikan ketersediaan tinggi dan stabilitas layanan Anda.
Setelah konfigurasi selesai, klik Submit.
Langkah 2. Proses pembuatan menggunakan FeatureStore Python SDK
Instal FeatureStore Python SDK. SDK ini memerlukan lingkungan Python 3. Kami menyarankan menjalankan semua kode berikut di lingkungan Jupyter Notebook.
! pip install https://feature-store-py.oss-cn-beijing.aliyuncs.com/package/feature_store_py-2.0.2-py3-none-any.whlAnda dapat mengimpor modul fungsional yang diperlukan.
import unittest
import sys
import os
from os.path import dirname, join, abspath
from feature_store_py.fs_client import FeatureStoreClient
from feature_store_py.fs_project import FeatureStoreProject
from feature_store_py.fs_datasource import UrlDataSource, MaxComputeDataSource, DatahubDataSource, HologresDataSource, SparkDataSource, LabelInput, TrainingSetOutput
from feature_store_py.fs_type import FSTYPE
from feature_store_py.fs_schema import OpenSchema, OpenField
from feature_store_py.fs_feature_view import FeatureView
from feature_store_py.fs_features import FeatureSelector
from feature_store_py.fs_config import LabelInputConfig, PartitionConfig, FeatureViewConfig, TrainSetOutputConfig, SequenceFeatureConfig, SequenceTableConfig
import logging
logger = logging.getLogger("foo")
logger.addHandler(logging.StreamHandler(stream=sys.stdout))Proyek rekayasa fitur
Anda dapat membuat beberapa proyek independen di FeatureStore. Untuk informasi selengkapnya, lihat Konfigurasikan proyek FeatureStore. Untuk menjalankan Notebook, Anda memerlukan lingkungan sisi server FeatureStore. Setelah mengaktifkan FeatureStore, Anda juga harus mengonfigurasi sumber data. Untuk informasi selengkapnya, lihat Buat sumber data baru.
Parameter `offline_datasource_id` dan `online_datasource_id` masing-masing menentukan ID sumber data offline dan online.
Topik ini menggunakan proyek bernama fs_movie sebagai contoh.
access_id = ''
access_ak = ''
region = 'cn-beijing'
fs = FeatureStoreClient(access_key_id=access_id, access_key_secret=access_ak, region=region)
cur_project_name = "fs_demo"
project = fs.get_project(cur_project_name)
if project is None:
raise ValueError("Need to create project : fs_movie")Jalankan kode berikut untuk mengambil proyek saat ini dan mencetak informasinya.
project = fs.get_project(cur_project_name)
print(project)Entitas fitur (FeatureEntity)
Entitas fitur menggambarkan sekumpulan fitur terkait. Satu entitas fitur dapat dikaitkan dengan beberapa tampilan fitur. Setiap entitas memiliki JoinId yang digunakan untuk mengaitkan fitur-fitur dari tampilan tersebut. Setiap tampilan fitur memiliki kunci utama (index key) untuk mengambil data fiturnya, tetapi nama index key tersebut dapat berbeda dari nama yang ditentukan oleh JoinId.
Dalam sistem rekomendasi, fitur-fitur biasanya hanya dikaitkan dengan dua entitas fitur: pengguna dan item. Artinya, fitur-fitur tersebut termasuk dalam kategori pengguna atau item. Topik ini memberikan contoh pembuatan entitas fitur pengguna dan item.
Buat entitas pengguna
user_entity_name = "user" user_join_id = 'user_id' user_entity = project.get_entity(user_entity_name) if user_entity is None: user_entity = project.create_entity(name = user_entity_name, join_id=user_join_id) user_entity.print_summary()Buat entitas item
item_entity_name = "item" join_id = 'item_id' item_entity = project.get_entity(item_entity_name) if item_entity is None: item_entity = project.create_entity(name = item_entity_name, join_id=join_id) item_entity.print_summary()
Tampilan fitur (FeatureView)
FeatureStore adalah platform untuk mengelola dan mengorganisasi data fitur. Data eksternal dimasukkan ke FeatureStore melalui tampilan fitur. Tampilan fitur mendefinisikan sumber data, operasi pra-pemrosesan atau transformasi yang diperlukan (seperti rekayasa fitur atau transformasi), struktur data fitur (termasuk nama dan jenis fitur), serta lokasi penyimpanan (online store atau offline store). Tampilan fitur juga mengelola metadata fitur, seperti kunci utama, waktu event, kunci partisi, entitas fitur, dan pengaturan waktu hidup (TTL). TTL -1 (default) menunjukkan bahwa data disimpan secara permanen. Angka positif berarti kueri online akan mengambil data fitur terbaru dalam TTL yang ditentukan.
Ada tiga jenis tampilan fitur: Batch FeatureView (untuk fitur offline atau fitur hari T-1), Stream FeatureView (untuk fitur real-time), dan Sequence FeatureView (untuk fitur sekuens).
Batch FeatureView (tampilan fitur offline)
Batch FeatureView memasukkan data offline ke offline store FeatureStore dan dapat menyinkronkan data tersebut ke online store untuk mendukung kueri real-time. Jenis tampilan ini biasanya digunakan untuk fitur offline atau fitur hari T-1.
Daftarkan tabel fitur offline sisi pengguna
Daftarkan tabel rec_sln_demo_user_table_preprocess_all_feature_v1 ke FeatureStore.
user_feature_view_name = "user_table_preprocess_all_feature_v1" user_table_name = "rec_sln_demo_user_table_preprocess_all_feature_v1" user_feature_view = project.get_feature_view(user_feature_view_name) if user_feature_view is None: ds = MaxComputeDataSource(project.offline_datasource_id, user_table_name) user_feature_view = project.create_batch_feature_view(name=user_feature_view_name, datasource=ds, online=True, entity= user_entity_name, primary_key='user_id', register=True) print(user_feature_view)Menyinkronkan data dari partisi 20231023 tabel rec_sln_demo_user_table_preprocess_all_feature_v1 di offline store ke online store.
user_task = user_feature_view.publish_table({'ds':'20231023'}) user_task.wait()Lihat status tugas yang sedang berjalan.
user_task.print_summary()
Daftarkan tabel fitur offline sisi item
Daftarkan tabel rec_sln_demo_item_table_preprocess_all_feature_v1 ke FeatureStore.
item_feature_view_name = "item_table_preprocess_all_feature_v1" item_table_name = "rec_sln_demo_item_table_preprocess_all_feature_v1" item_feature_view = project.get_feature_view(item_feature_view_name) if item_feature_view is None: ds = MaxComputeDataSource(project.offline_datasource_id, item_table_name) item_feature_view = project.create_batch_feature_view(name=item_feature_view_name, datasource=ds, online = True, entity= item_entity_name, primary_key='item_id', register=True) print(item_feature_view)Menyinkronkan data dari partisi 20231023 tabel rec_sln_demo_item_table_preprocess_all_feature_v1 di offline store ke online store.
item_task = item_feature_view.publish_table({'ds':'20231023'}) item_task.wait()Lihat status tugas yang sedang berjalan.
item_task.print_summary()
Sequence FeatureView (tampilan sekuens real-time)
Sequence FeatureView mendukung penulisan fitur sekuens offline dan kueri fitur sekuens real-time. Dalam skenario rekomendasi khas, tabel fitur sekuens offline (F1) awalnya dihasilkan dari data simulasi dan kemudian dapat diganti dengan log online. Selama kueri sekuens real-time online, data diambil dari dua tabel perilaku online: tabel perilaku hari T-1 (B1) dan tabel perilaku real-time hari T (B2). B2 berisi fitur yang diperbarui secara real-time. Setelah data diambil dari tabel B1 dan B2, sekuens fitur dibangun untuk pengguna. Sekuens ini kemudian digabungkan dengan fitur lain dan dikirim ke model untuk scoring.
Tabel perilaku online hari T-1 (B1) biasanya disinkronkan dari tabel perilaku offline hari T-1 (A1). Selama sinkronisasi, FeatureStore secara otomatis melakukan operasi seperti deduplikasi. Anda harus menulis data ke tabel perilaku online hari T (B2) menggunakan operasi API atau produk Alibaba Cloud lainnya, seperti Flink.
Oleh karena itu, saat mendaftarkan tampilan fitur real-time, FeatureStore secara bersamaan mengelola empat tabel: tabel sekuens offline (F1), tabel perilaku offline hari T-1 (A1), tabel perilaku online hari T-1 (B1), dan tabel perilaku online hari T (B2).
Saat pendaftaran, Anda hanya perlu memberikan tabel sekuens offline (F1) dan tabel perilaku offline hari T-1 (A1). FeatureStore menangani tabel perilaku online serta proses sinkronisasi dan deduplikasi.
Daftarkan tampilan fitur real-time.
seq_feature_view_name = "wide_seq_feature_v3" seq_feature_view = project.get_feature_view(seq_feature_view_name) if seq_feature_view is None: seq_table_name = "rec_sln_demo_behavior_table_preprocess_sequence_wide_seq_feature_v3" behavior_table_name = 'rec_sln_demo_behavior_table_preprocess_v3' ds = MaxComputeDataSource(project.offline_datasource_id, behavior_table_name) event_time = 'event_unix_time' # Nama field waktu event di tabel perilaku. item_id = 'item_id' # Nama field item_id di tabel perilaku. event = 'event' # Nama field event di tabel perilaku. # deduplication_method = 1 menunjukkan deduplikasi berdasarkan ['user_id', 'item_id', 'event']. # deduplication_method = 2 menunjukkan deduplikasi berdasarkan ['user_id', 'item_id', 'event', 'event_time']. sequence_feature_config_list = [SequenceFeatureConfig(offline_seq_name='click_seq_50_seq', seq_event='click', online_seq_name='click_seq_50', seq_len=50)] # offline_seq_name adalah nama field fitur sekuens di tabel sekuens offline. seq_event adalah nama field perilaku. # online_seq_name adalah nama yang digunakan untuk sekuens item_id pengguna, yang diambil oleh FeatureStore online Go SDK. # seq_len adalah panjang sekuens. Sekuens yang lebih panjang dari nilai ini akan dipotong. seq_table_config = SequenceTableConfig(table_name=seq_table_name, primary_key='user_id', event_time='event_unix_time') seq_feature_view = project.create_sequence_feature_view(seq_feature_view_name, datasource=ds, event_time=event_time, item_id=item_id, event=event, deduplication_method=1, sequence_feature_config=sequence_feature_config_list, sequence_table_config=seq_table_config, entity=user_entity_name) # seq_feature_view.print_summary() print(seq_feature_view)Menyinkronkan data dari partisi 20231023 tabel rec_sln_demo_behavior_table_preprocess_v3 di offline store ke online store. Selama sinkronisasi, sistem secara otomatis memeriksa data dari partisi N hari sebelumnya. Jika data hilang, data tersebut akan diisi ulang secara otomatis. Anda dapat menentukan N menggunakan
days_to_load. Nilai default adalah 30, yang cukup untuk sebagian besar skenario.seq_task = seq_feature_view.publish_table({'ds':'20231023'}, days_to_load=30) seq_task.wait()Lihat status tugas yang sedang berjalan.
seq_task.print_summary()
Tampilan Fitur Aliran (tampilan fitur waktu nyata)
Menulis data langsung ke OnlineStore dan secara bersamaan menyinkronkannya ke OfflineStore sangat ideal untuk skenario yang memerlukan pembaruan fitur real-time, seperti memperbarui harga produk dan volume penjualan.
Daftarkan Tabel Label
label_table_name = 'rec_sln_demo_label_table'
ds = MaxComputeDataSource(data_source_id=project.offline_datasource_id, table=label_table_name)
label_table = project.get_label_table(label_table_name)
if label_table is None:
label_table = project.create_label_table(datasource=ds, event_time='event_unix_time')
print(label_table)Ambil fitur online
Anda dapat mengambil fitur online untuk memecahkan masalah konsistensi data antara offline store dan online store, melakukan analitik data, dan tujuan lainnya. Hologres adalah sumber data yang direkomendasikan.
user_feature_view_name = "user_table_preprocess_all_feature_v1"
user_feature_view = project.get_feature_view(user_feature_view_name)
ret_features_1 = user_feature_view.get_online_features(join_ids={'user_id':['169898460', '148811946']}, features=['user_id', 'gender', 'age', 'city'])
print("ret_features = ", ret_features_1)TrainingSet
Saat melatih model, Anda harus terlebih dahulu membuat tabel sampel. Tabel sampel terdiri dari data label dan data fitur. Untuk berinteraksi dengan FeatureStore, Anda harus menyediakan data label dan menentukan nama fitur yang ingin diambil. Kemudian dilakukan join berdasarkan titik waktu berdasarkan kunci utama dan waktu event, jika waktu event ada.
# Tentukan tabel label.
label_table_name = 'rec_sln_demo_label_table'
output_ds = MaxComputeDataSource(data_source_id=project.offline_datasource_id)
train_set_output = TrainingSetOutput(output_ds)user_feature_view_name = "user_table_preprocess_all_feature_v1"
user_feature_selector = FeatureSelector(user_feature_view_name, '*') # '*' memilih semua fitur.
item_feature_view_name = "item_table_preprocess_all_feature_v1"
item_feature_selector = FeatureSelector(item_feature_view_name, '*')
seq_feature_view_name = "wide_seq_feature_v3"
seq_feature_selector = FeatureSelector(seq_feature_view_name, ['click_seq_50_seq'])
train_set = project.create_training_set(label_table_name=label_table_name, train_set_output= train_set_output, feature_selectors=[user_feature_selector, item_feature_selector, seq_feature_selector])
print("train_set = ", train_set)Fitur Model
Setelah melatih model dan menerapkannya sebagai layanan, Anda dapat menggunakannya untuk prediksi bisnis. Sampel pelatihan dapat diperoleh dari train_set yang disebutkan sebelumnya.
model_name = "fs_rank_v2"
cur_model = project.get_model(model_name)
if cur_model is None:
cur_model = project.create_model(model_name, train_set)
print("cur_model_train_set_table_name = ", cur_model.train_set_table_name)Langkah 3. Ekspor tabel sampel dan latih model
Untuk pelatihan aktual, Anda perlu mengekspor tabel sampel.
Ekspor tabel sampel
Tentukan tabel label serta partisi dan event_time untuk setiap tampilan fitur.
cur_day = '20231024'
pre_day = '20231023'
label_partitions = PartitionConfig(name = 'ds', value = cur_day)
label_input_config = LabelInputConfig(partition_config=label_partitions)
user_partitions = PartitionConfig(name = 'ds', value = pre_day)
feature_view_user_config = FeatureViewConfig(name = 'user_table_preprocess_all_feature_v1',
partition_config=user_partitions)
item_partitions = PartitionConfig(name = 'ds', value = pre_day)
feature_view_item_config = FeatureViewConfig(name = 'item_table_preprocess_all_feature_v1',
partition_config=item_partitions)
seq_partitions = PartitionConfig(name = 'ds', value = cur_day)
feature_view_seq_config = FeatureViewConfig(name = 'wide_seq_feature_v3', partition_config=seq_partitions, event_time='event_unix_time', equal=True)
feature_view_config_list = [feature_view_user_config, feature_view_item_config, feature_view_seq_config]
train_set_partitions = PartitionConfig(name = 'ds', value = cur_day)
train_set_output_config = TrainSetOutputConfig(partition_config=train_set_partitions)
model_name = 'fs_rank_v2'
cur_model = project.get_model(model_name)
task = cur_model.export_train_set(label_input_config, feature_view_config_list, train_set_output_config)
task.wait()
print("task_summary = ", task.task_summary)Latih model
EasyRec adalah framework sistem rekomendasi open source yang terintegrasi mulus dengan FeatureStore untuk pelatihan, ekspor, dan penerbitan model. Kami menyarankan Anda menggunakan tabel fs_demo_fs_rank_v2_training_set sebagai input untuk melatih model dengan EasyRec.
Untuk kode sumber terbuka EasyRec, lihat EasyRec.
Untuk dokumentasi EasyRec, lihat Pengantar EasyRec.
Untuk dokumentasi terkait pelatihan EasyRec, lihat Pelatihan EasyRec.
Jika Anda memiliki pertanyaan tentang EasyRec, bergabunglah dengan grup DingTalk (32260796) untuk menghubungi kami.
Langkah 4. Terbitkan model
Setelah melatih dan mengekspor model, Anda dapat menerapkan dan menerbitkannya. Jika Anda memiliki sistem rekomendasi yang dibangun sendiri, FeatureStore menyediakan SDK Python, Go, C++, dan Java yang dapat diintegrasikan dengan sistem Anda. Anda juga dapat menghubungi kami melalui grup DingTalk (32260796) untuk mendiskusikan solusi spesifik. Jika Anda menggunakan produk Alibaba Cloud, Anda dapat mengintegrasikannya secara mulus dengan FeatureStore untuk membangun dan menerbitkan sistem rekomendasi dengan cepat.
Topik ini menggunakan produk Alibaba Cloud sebagai contoh untuk menjelaskan cara menerbitkan model.
Jadwalkan node sinkronisasi data
Sebelum menerbitkan, Anda harus menjadwalkan node sinkronisasi data untuk secara rutin menyinkronkan data dari offline store ke online store.
Masuk ke Konsol DataWorks.
Pada panel navigasi kiri, klik Data Development & O&M > Data Development.
Pilih ruang kerja DataWorks Anda dan klik Enter Data Development.
Secara rutin sinkronkan tabel pengguna.
Arahkan kursor ke New, lalu pilih New Node > MaxCompute > PyODPS 3.
Pada kotak dialog yang muncul, konfigurasikan parameter node dan klik Confirm.
Salin konten berikut ke dalam skrip untuk menyelesaikan sinkronisasi terjadwal user_table_preprocess_all_feature_v1.
Pada panel kanan, klik Scheduling Configuration. Pada kotak dialog yang muncul, konfigurasikan parameter penjadwalan.
Parameter
Nilai yang disarankan
Scheduling Parameters
Parameter Name
dt
Parameter Value
$[yyyymmdd-1]
Resource Properties
Resource Group for Scheduling
Pilih grup sumber daya eksklusif untuk penjadwalan Anda.
Scheduling Dependencies
Pilih tabel pengguna yang Anda buat.
Setelah mengonfigurasi dan menguji node, simpan dan kirimkan konfigurasi node.
Lakukan operasi pengisian ulang data. Untuk informasi selengkapnya, lihat Sinkronkan tabel data.
Jadwalkan sinkronisasi tabel item.
Arahkan kursor ke New, lalu pilih New Node > MaxCompute > PyODPS 3.
Pada kotak dialog yang muncul, konfigurasikan parameter node dan klik Confirm.
Salin konten berikut ke dalam skrip.
Pada panel kanan, klik Scheduling Configuration. Pada kotak dialog yang muncul, konfigurasikan parameter penjadwalan.
Parameter
Nilai yang disarankan
Scheduling Parameters
Parameter Name
dt
Parameter Value
$[yyyymmdd-1]
Resource Properties
Resource Group for Scheduling
Pilih grup sumber daya eksklusif untuk penjadwalan Anda.
Scheduling Dependencies
Pilih tabel item yang Anda buat.
Setelah mengonfigurasi dan menguji node, simpan dan kirimkan konfigurasi node.
Lakukan operasi pengisian ulang data. Untuk informasi selengkapnya, lihat Sinkronkan tabel data.
Jadwalkan sinkronisasi tabel perilaku sekuens real-time.
Arahkan kursor ke New, lalu pilih New Node > MaxCompute > PyODPS 3.
Pada kotak dialog yang muncul, konfigurasikan parameter node dan klik Confirm.
Salin konten berikut ke dalam skrip.
Pada panel kanan, klik Scheduling Configuration. Pada kotak dialog yang muncul, konfigurasikan parameter penjadwalan.
Parameter
Nilai yang disarankan
Scheduling Parameters
Parameter Name
dt
Parameter Value
$[yyyymmdd-1]
Resource Properties
Resource Group for Scheduling
Pilih grup sumber daya eksklusif untuk penjadwalan Anda.
Scheduling Dependencies
Pilih tabel item yang Anda buat.
Setelah mengonfigurasi dan menguji node, simpan dan kirimkan konfigurasi node.
Lakukan operasi pengisian ulang data. Untuk informasi selengkapnya, lihat Sinkronkan tabel data.
Setelah sinkronisasi selesai, Anda dapat melihat fitur terbaru yang telah disinkronkan di Hologres.
Buat dan terapkan layanan model EAS
Layanan model menerima permintaan dari mesin rekomendasi, memberi skor pada kumpulan item berdasarkan permintaan tersebut, dan mengembalikan skor tersebut. Prosesor EasyRec mencakup FeatureStore C++ SDK, yang memungkinkan pengambilan fitur dengan latensi rendah dan kinerja tinggi. Prosesor EasyRec mengambil fitur dari FeatureStore C++ SDK, mengirimkannya ke model untuk inferensi, mengambil skor, dan mengembalikannya ke mesin rekomendasi.
Prosedur penerapan layanan model adalah sebagai berikut.
Masuk ke Konsol DataWorks.
Pada panel navigasi kiri, klik Data Development & O&M > Data Development.
Pilih ruang kerja DataWorks Anda dan klik Enter Data Development.
Arahkan kursor ke New, lalu pilih New Node > MaxCompute > PyODPS 3.
Pada kotak dialog yang muncul, konfigurasikan parameter node dan klik Confirm.
Salin konten berikut ke dalam skrip.
import os import json config = { "name": "fs_demo_v1", "metadata": { "cpu": 4, "rpc.max_queue_size": 256, "rpc.enable_jemalloc": 1, "gateway": "default", "memory": 16000 }, "model_path": f"oss://beijing0009/EasyRec/deploy/rec_sln_demo_dbmtl_v1/{args['ymd']}/export/final_with_fg", "model_config": { "access_key_id": f'{o.account.access_id}', "access_key_secret": f'{o.account.secret_access_key}', "region": "cn-beijing", "fs_project": "fs_demo", "fs_model": "fs_rank_v2", "fs_entity": "item", "load_feature_from_offlinestore": True, "steady_mode": True, "period": 2880, "outputs": "probs_is_click,y_ln_playtime,probs_is_praise", "fg_mode": "tf" }, "processor": "easyrec-1.8", "processor_type": "cpp" } with open("echo.json", "w") as output_file: json.dump(config, output_file) # Jalankan baris ini untuk penerapan pertama kali. os.system(f"/home/admin/usertools/tools/eascmd -i {o.account.access_id} -k {o.account.secret_access_key} -e pai-eas.cn-beijing.aliyuncs.com create echo.json") # Jalankan baris berikut untuk pembaruan terjadwal. # os.system(f"/home/admin/usertools/tools/eascmd -i {o.account.access_id} -k {o.account.secret_access_key} -e pai-eas.cn-beijing.aliyuncs.com modify fs_demo_v1 -s echo.json")Pada panel kanan, klik Scheduling Configuration. Pada kotak dialog yang muncul, konfigurasikan parameter penjadwalan.
Parameter
Nilai yang disarankan
Scheduling Parameters
Parameter Name
dt
Parameter Value
$[yyyymmdd-1]
Resource Properties
Resource Group for Scheduling
Pilih grup sumber daya eksklusif untuk penjadwalan Anda.
Scheduling Dependencies
Pilih tugas pelatihan yang sesuai dan item_table_preprocess_all_feature_v1.
Setelah mengonfigurasi dan menguji node, jalankan untuk melihat status penerapan.
Setelah penerapan selesai, beri komentar pada baris 34, hapus komentar pada baris 37, dan kirimkan tugas untuk eksekusi terjadwal.
(Opsional) Anda dapat melihat layanan yang telah diterapkan pada tab Inference Service di halaman Elastic Algorithm Service (EAS). Untuk informasi selengkapnya, lihat Penerapan kustom.
Konfigurasikan PAI-Rec
PAI-Rec adalah layanan mesin rekomendasi yang mengintegrasikan FeatureStore Go SDK. Layanan ini dapat terhubung secara mulus dengan FeatureStore dan EAS.
Prosedur konfigurasinya sebagai berikut.
Konfigurasikan FeatureStoreConfs.
RegionId: Ubah ini menjadi wilayah tempat produk Anda berada. Topik ini menggunakan cn-beijing sebagai contoh.ProjectName: Nama proyek FeatureStore Anda. Dalam contoh ini, nama proyek adalah fs_demo.
"FeatureStoreConfs": { "pairec-fs": { "RegionId": "cn-beijing", "AccessId": "${AccessKey}", "AccessKey": "${AccessSecret}", "ProjectName": "fs_demo" } },Konfigurasikan FeatureConfs.
FeatureStoreName: Pertahankan konsistensi dengan pengaturan pairec-fs pada langkah FeatureStoreConfs sebelumnya.FeatureStoreModelName: Nama fitur model Anda. Dalam contoh ini, nama fitur model adalah fs_rank_v1.FeatureStoreEntityName: Nama entitas fitur Anda, user. Ini menunjukkan bahwa mesin PAI-Rec menggunakan FeatureStore Go SDK untuk mengambil fitur pengguna untuk model fs_rank_v1.
"FeatureConfs": { "recreation_rec": { "AsynLoadFeature": true, "FeatureLoadConfs": [ { "FeatureDaoConf": { "AdapterType": "featurestore", "FeatureStoreName": "pairec-fs", "FeatureKey": "user:uid", "FeatureStoreModelName": "fs_rank_v1", "FeatureStoreEntityName": "user", "FeatureStore": "user" } } ] } },Konfigurasikan AlgoConfs.
Konfigurasi ini memberi tahu PAI-Rec layanan scoring model EAS mana yang harus dihubungi.
Name: Harus sama dengan nama layanan EAS yang telah diterapkan.UrldanAuth: Ini adalah informasi yang disediakan oleh layanan EAS. Di halaman Elastic Algorithm Service (EAS), klik nama layanan tersebut. Kemudian, pada tab Overview, klik View Endpoint Information untuk mengambil URL dan token. Untuk detail konfigurasi lebih lanjut, lihat FAQ EAS.
"AlgoConfs": [ { "Name": "fs_demo_v1", "Type": "EAS", "EasConf": { "Processor": "EasyRec", "Timeout": 300, "ResponseFuncName": "easyrecMutValResponseFunc", "Url": "eas_url_xxx", "EndpointType": "DIRECT", "Auth": "eas_token" } } ],