Tutorial ini menunjukkan cara membuat dan menerapkan sistem rekomendasi end-to-end di PAI-FeatureStore menggunakan Python SDK.
Prasyarat
Pastikan prasyarat berikut terpenuhi.
Layanan | Tindakan |
Platform for AI (PAI) |
|
MaxCompute |
|
FeatureDB |
|
DataWorks |
|
Langkah 1: Persiapkan data
Sinkronisasi tabel data
Skenario rekomendasi biasanya memerlukan tabel data berikut: tabel fitur pengguna, tabel item, tabel label, tabel fitur sekuens, dan tabel perilaku.
Tutorial ini menggunakan tabel data simulasi yang disiapkan di proyek MaxCompute pai_online_project. Untuk menggunakannya, jalankan perintah SQL di DataWorks untuk menyinkronkan tabel-tabel tersebut ke proyek MaxCompute Anda sendiri. Ikuti langkah-langkah berikut:
Login ke Konsol DataWorks.
Di 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. Konfigurasikan parameter node sebagai berikut:
Parameter
Nilai yang direkomendasikan
engine instance
Pilih mesin MaxCompute yang telah Anda buat.
node type
ODPS SQL
path
Business Flow/Workflow/MaxCompute
name
Masukkan nama kustom.
Klik Confirm.
Di editor node, jalankan perintah SQL berikut untuk menyinkronkan tabel data ke proyek MaxCompute Anda. Untuk Resource Group, pilih kelompok sumber daya eksklusif Anda.
Tabel pengguna: rec_sln_demo_user_table_preprocess_all_feature_v1
Tabel item: rec_sln_demo_item_table_preprocess_all_feature_v1
Tabel label: rec_sln_demo_label_table
Tabel fitur sekuens: rec_sln_demo_behavior_table_preprocess_sequence_wide_seq_feature_v3
Tabel perilaku: rec_sln_demo_behavior_table_preprocess_v3
Anda kini dapat melihat tabel yang telah disinkronkan di ruang kerja Anda. Sisa tutorial ini menggunakan lima tabel tersebut.
Konfigurasikan sumber data
FeatureStore biasanya memerlukan dua jenis sumber data: sumber data offline, seperti MaxCompute, dan sumber data online, seperti FeatureDB, Hologres, atau Tablestore. Tutorial ini menggunakan MaxCompute dan FeatureDB sebagai contoh.
Login ke Konsol PAI. Di panel navigasi kiri, pilih Data Preparation > FeatureStore.
Pilih ruang kerja dan klik Enter FeatureStore.
Konfigurasikan sumber data MaxCompute.
Di tab Create Store, klik Create Store, lalu pada halaman yang muncul, konfigurasikan parameter untuk sumber data MaxCompute.
Parameter
Nilai yang direkomendasikan
Type
MaxCompute
Name
Masukkan nama kustom.
MaxCompute Project Name
Pilih proyek MaxCompute yang telah Anda buat.
Klik Submit.
Konfigurasikan sumber data FeatureDB.
Jika Anda telah membuat sumber data FeatureDB, Anda dapat melewati langkah ini.
Di tab Store, klik Create Store dan konfigurasikan parameter untuk sumber data FeatureDB di kotak dialog.
Parameter
Nilai yang direkomendasikan
Type
FeatureDB (Jika ini pertama kali Anda menggunakan FeatureDB, ikuti petunjuk di layar untuk mengaktifkannya.)
Name
Nama kustom tidak didukung. Nama default adalah
feature_db.Username
Tetapkan username.
Password
Tetapkan password.
VPC network high-speed connection (optional)
Opsi ini memungkinkan Anda menggunakan FeatureStore SDK untuk mengakses FeatureDB secara langsung dari dalam VPC melalui jaringan pribadi. Koneksi ini meningkatkan kinerja baca/tulis data dan mengurangi latensi akses.
VPC
Pilih VPC yang berisi layanan FeatureStore online Anda.
Zone and vSwitch
Pilih zona dan vSwitch. Pastikan vSwitch berada di zona yang sama dengan layanan online Anda. Untuk ketersediaan tinggi, kami merekomendasikan memilih vSwitch di minimal dua zona.
Klik Submit.
II. Proses pembuatan FeatureStore Python SDK
Instal FeatureStore Python SDK, yang memerlukan lingkungan Python 3. Kami merekomendasikan menjalankan semua kode berikut di Jupyter Notebook.
! pip install https://feature-store-py.oss-cn-beijing.aliyuncs.com/package/feature_store_py-2.2.0-py3-none-any.whlImpor modul 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 FeatureStore
Anda dapat membuat beberapa proyek di FeatureStore, dengan setiap proyek berfungsi sebagai namespace terisolasi. Untuk instruksi detail, lihat Konfigurasikan proyek FeatureStore. Menjalankan notebook ini memerlukan layanan FeatureStore backend dan sumber data yang telah dikonfigurasi. Setelah mengaktifkan FeatureStore, Anda harus mengonfigurasi sumber data. Untuk informasi selengkapnya, lihat Buat sumber data.
Parameter offline_datasource_id menentukan ID sumber data offline, dan online_datasource_id menentukan ID sumber data online.
Contoh ini menggunakan proyek bernama fs_demo.
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(f"The project '{cur_project_name}' does not exist. You must create it first.")Jalankan kode berikut untuk mengambil proyek saat ini dan mencetak informasinya.
project = fs.get_project(cur_project_name)
print(project)Entitas Fitur
Entitas fitur menggambarkan kumpulan fitur terkait. Beberapa tampilan fitur dapat dikaitkan dengan satu entitas fitur. Setiap entitas memiliki join_id, yang menggabungkan fitur dari berbagai tampilan fitur. Setiap tampilan fitur memiliki kunci primer untuk mengambil data fiturnya, dan nama kunci primernya dapat berbeda dari join_id.
Dalam sistem rekomendasi, fitur biasanya dikaitkan dengan entitas pengguna atau item. Contoh ini menunjukkan cara membuat entitas user dan entitas 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
Tampilan fitur adalah objek inti di FeatureStore yang mengambil data eksternal. Tampilan fitur mendefinisikan asal data (sumber data), operasi pra-pemrosesan atau transformasi apa pun, struktur data (skema fitur, termasuk nama dan tipe fitur), serta lokasi penyimpanan (online store dan/atau offline store). Tampilan fitur juga mengelola metadata, seperti kunci primer, waktu event, kunci partisi, entitas fitur terkait, dan TTL (Time to Live). TTL default -1 menunjukkan bahwa fitur tersebut berlaku permanen. Nilai TTL positif berarti kueri online hanya akan mengambil data fitur terbaru dalam jendela waktu yang ditentukan.
Tampilan fitur tersedia dalam tiga jenis: Batch FeatureView (untuk fitur offline atau T-1 hari), Stream FeatureView (untuk fitur real-time), dan Sequence FeatureView (untuk fitur sekuens).
Batch FeatureView
Batch FeatureView memasukkan data offline ke offline store FeatureStore dan secara opsional menyinkronkannya ke online store untuk mendukung kueri real-time. Gunakan tampilan fitur ini untuk fitur offline atau T-1 hari.
Daftarkan tabel fitur offline pengguna
Daftarkan tabel rec_sln_demo_user_table_preprocess_all_feature_v1 di 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)Sinkronkan data di partisi 20231023 tabel
rec_sln_demo_user_table_preprocess_all_feature_v1dari sumber data offline ke sumber data online.user_task = user_feature_view.publish_table({'ds':'20231023'}) user_task.wait()Periksa status tugas.
user_task.print_summary()
Daftarkan tabel fitur offline item
Daftarkan tabel rec_sln_demo_item_table_preprocess_all_feature_v1 di 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)Sinkronkan data di partisi 20231023 tabel
rec_sln_demo_item_table_preprocess_all_feature_v1dari sumber data offline ke sumber data online.item_task = item_feature_view.publish_table({'ds':'20231023'}) item_task.wait()Periksa status tugas.
item_task.print_summary()
Sequence FeatureView
Sequence FeatureView mendukung penulisan fitur sekuens offline dan pembacaan fitur sekuens real-time online. Dalam skenario rekomendasi, tabel fitur sekuens offline (F1) awalnya dihasilkan melalui simulasi dan kemudian dapat diganti oleh log online. Selama kueri online untuk sekuens real-time, data diambil dari dua tabel perilaku online: tabel perilaku T-1 hari (B1) dan tabel perilaku real-time hari ini (T-day) (B2). Tabel B2 berisi fitur yang diperbarui oleh komputasi real-time. FeatureStore mengkueri B1 dan B2, membangun sekuens fitur pengguna, lalu menggabungkannya dengan fitur lain untuk penilaian model.
Tabel perilaku online T-1 hari (B1) biasanya disinkronkan dari tabel perilaku offline T-1 hari (A1), dengan FeatureStore secara otomatis menangani operasi seperti deduplikasi. Tabel perilaku online hari ini (T-day) (B2) saat ini mengharuskan Anda menulis data melalui API atau produk Alibaba Cloud lain seperti Flink.
Oleh karena itu, saat Anda mendaftarkan Sequence FeatureView, FeatureStore mengelola empat tabel untuk Anda: tabel sekuens offline (F1), tabel perilaku offline T-1 hari (A1), tabel perilaku online T-1 hari (B1), dan tabel perilaku online T-day (B2).
Saat pendaftaran, Anda hanya memberikan tabel sekuens offline (F1) dan tabel perilaku offline T-1 hari (A1). FeatureStore membuat tabel online dan menangani sinkronisasi serta deduplikasi.
Daftarkan Sequence FeatureView.
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 bidang untuk waktu event di tabel perilaku. item_id = 'item_id' # Nama bidang untuk item_id di tabel perilaku. event = 'event' # Nama bidang untuk event di tabel perilaku. # deduplication_method = 1: Deduplikasi berdasarkan ['user_id', 'item_id', 'event']. # deduplication_method = 2: 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: Nama kolom fitur sekuens di tabel sekuens offline. # seq_event: Nama bidang perilaku yang digunakan untuk pemfilteran. # online_seq_name: Nama tempat sekuens item_id yang sesuai untuk pengguna dikembalikan oleh Go SDK online. # seq_len: 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)Sinkronkan data di partisi 20231023 tabel
rec_sln_demo_behavior_table_preprocess_v3dari sumber data offline ke sumber data online. Selama sinkronisasi, sistem secara otomatis memeriksa data dari N hari sebelumnya dan melakukan pengisian ulang jika ada yang hilang. Anda dapat menentukan N dengan menggunakan parameterdays_to_load, yang default-nya 30. Kami merekomendasikan menggunakan nilai default dalam sebagian besar kasus.seq_task = seq_feature_view.publish_table({'ds':'20231023'}, days_to_load=30) seq_task.wait()Periksa status tugas.
seq_task.print_summary()
Stream FeatureView
Stream FeatureView menulis data langsung ke online store dan secara bersamaan menyinkronkannya ke offline store. Gunakan untuk skenario yang memerlukan pembaruan fitur real-time, seperti memperbarui harga item atau 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 dari online store untuk tujuan seperti debugging konsistensi offline-online dan analisis data. Fitur ini saat ini dioptimalkan untuk Hologres.
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.list_feature_view_online_features(join_ids=['169898460', '148811946'])
print("ret_features = ", ret_features_1)Set pelatihan
Untuk melatih model, pertama-tama buat set pelatihan data label dan fitur. Saat berinteraksi dengan FeatureStore, Anda memberikan data label, menentukan fitur yang akan diambil, lalu sistem melakukan point-in-time join berdasarkan kunci primer (jika ada waktu event).
# 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 tersedia di objek train_set dari langkah 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 set pelatihan dan latih model
Untuk melatih model, Anda harus mengekspor set pelatihan.
Ekspor set pelatihan
Tentukan partisi dan event_time untuk tabel label dan 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 PAI-FeatureStore, yang memungkinkan Anda melatih, mengekspor, dan menerapkan model. Gunakan tabel fs_demo_fs_rank_v2_training_set sebagai input untuk melatih model Anda dengan EasyRec.
Untuk kode sumber EasyRec, lihat EasyRec.
Untuk dokumentasi EasyRec, lihat Pengantar EasyRec.
Untuk dokumentasi tentang pelatihan, lihat Pelatihan dengan EasyRec.
Untuk pertanyaan lebih lanjut tentang EasyRec, hubungi kami di grup dukungan Machine Learning Platform for AI (PAI) di DingTalk (ID: 32260796).
IV. Terapkan model
Setelah Anda melatih dan mengekspor model, Anda dapat menerapkannya untuk serving online. Jika Anda memiliki sistem rekomendasi yang dibangun sendiri, FeatureStore menyediakan SDK untuk Python, Go, C++, dan Java untuk menyederhanakan integrasi. Anda juga dapat menghubungi kami melalui grup DingTalk (ID: 32260796) untuk membahas solusi spesifik. Jika Anda menggunakan layanan Alibaba Cloud, Anda dapat mengintegrasikannya secara mulus dengan FeatureStore untuk membangun dan menerapkan sistem rekomendasi dengan cepat.
Topik ini menjelaskan cara menerapkan model menggunakan layanan Alibaba Cloud sebagai contoh.
Jadwalkan pekerjaan sinkronisasi data
Sebelum menerapkan model, jadwalkan pekerjaan sinkronisasi data. Pekerjaan ini secara berkala menerbitkan data dari sumber data offline ke sumber data online agar fitur tetap mutakhir.
Login ke Konsol DataWorks.
Di panel navigasi kiri, pilih Data Development & O&M > Data Development.
Pilih ruang kerja DataWorks Anda dan klik Enter Data Development.
Jadwalkan sinkronisasi tabel pengguna.
Arahkan kursor ke New dan pilih New Node > MaxCompute > PyODPS 3.
Di kotak dialog yang muncul, konfigurasikan parameter node dan klik Confirm.
Salin skrip berikut ke editor untuk menjadwalkan sinkronisasi
user_table_preprocess_all_feature_v1.Di panel kanan, klik Scheduling configuration dan konfigurasikan parameter penjadwalan.
Parameter
Nilai
Scheduling parameters
Parameter name
dt
Parameter value
$[yyyymmdd-1]
Resource properties
Resource group for scheduling
Pilih kelompok sumber daya eksklusif yang telah Anda buat.
Scheduling dependencies
Pilih tabel pengguna yang telah Anda buat.
Setelah mengonfigurasi dan menguji node, simpan dan kirimkan.
Jalankan pengisian ulang data. Untuk informasi selengkapnya, lihat sinkronisasi tabel data.
Jadwalkan sinkronisasi tabel item.
Arahkan kursor ke New dan pilih New Node > MaxCompute > PyODPS 3.
Di kotak dialog yang muncul, konfigurasikan parameter node dan klik Confirm.
Salin skrip berikut ke editor.
Di panel kanan, klik Scheduling configuration dan konfigurasikan parameter penjadwalan.
Parameter
Nilai
Scheduling parameters
Parameter name
dt
Parameter value
$[yyyymmdd-1]
Resource properties
Resource group for scheduling
Pilih kelompok sumber daya eksklusif yang telah Anda buat.
Scheduling dependencies
Pilih tabel item yang telah Anda buat.
Setelah mengonfigurasi dan menguji node, simpan dan kirimkan.
Jalankan pengisian ulang data. Untuk informasi selengkapnya, lihat sinkronisasi tabel data.
Jadwalkan sinkronisasi tabel perilaku sekuens real-time.
Arahkan kursor ke New dan pilih New Node > MaxCompute > PyODPS 3.
Di kotak dialog yang muncul, konfigurasikan parameter node dan klik Confirm.
Salin skrip berikut ke editor.
Di panel kanan, klik Scheduling configuration dan konfigurasikan parameter penjadwalan.
Parameter
Nilai
Scheduling parameters
Parameter name
dt
Parameter value
$[yyyymmdd-1]
Resource properties
Resource group for scheduling
Pilih kelompok sumber daya eksklusif yang telah Anda buat.
Scheduling dependencies
Pilih tabel item yang telah Anda buat.
Setelah mengonfigurasi dan menguji node, simpan dan kirimkan.
Jalankan pengisian ulang data. Untuk informasi selengkapnya, lihat sinkronisasi tabel data.
Setelah sinkronisasi selesai, Anda dapat melihat fitur terbaru di Hologres.
Buat dan terapkan layanan model EAS
Layanan model menerima permintaan dari mesin rekomendasi, memberi skor pada kumpulan item kandidat berdasarkan permintaan, dan mengembalikan skor tersebut. Prosesor EasyRec mencakup FeatureStore C++ SDK untuk pengambilan fitur berlatensi rendah dan berkinerja tinggi. Prosesor menggunakan SDK untuk mengambil fitur, mengirimkannya ke model untuk inferensi, dan mengembalikan skor hasil ke mesin rekomendasi.
Ikuti langkah-langkah berikut untuk menerapkan layanan model.
Login ke Konsol DataWorks.
Di panel navigasi kiri, pilih Data Development & O&M > Data Development.
Pilih ruang kerja DataWorks Anda dan klik Enter Data Development.
Arahkan kursor ke New dan pilih New Node > MaxCompute > PyODPS 3.
Di kotak dialog yang muncul, konfigurasikan parameter node dan klik Confirm.
Salin skrip berikut ke editor.
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 hanya 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") # Untuk pembaruan terjadwal, jalankan baris berikut. # 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")Di panel kanan, klik Scheduling configuration dan konfigurasikan parameter penjadwalan.
Parameter
Nilai
Scheduling parameters
Parameter name
dt
Parameter value
$[yyyymmdd-1]
Resource properties
Resource group for scheduling
Pilih kelompok sumber daya eksklusif yang telah Anda buat.
Scheduling dependencies
Pilih tugas pelatihan yang sesuai dan
item_table_preprocess_all_feature_v1.Setelah mengonfigurasi dan menguji node, jalankan untuk memverifikasi penerapan.
Setelah penerapan selesai, beri komentar pada baris 34, hapus komentar pada baris 37, dan kirimkan node untuk eksekusi terjadwal.
(Opsional) Anda dapat melihat layanan yang diterapkan di tab Inference Service di halaman Elastic Algorithm Service (EAS). Untuk informasi selengkapnya, lihat Terapkan layanan kustom.
Konfigurasikan PAI-Rec
PAI-Rec adalah layanan mesin rekomendasi yang mencakup FeatureStore Go SDK dan terintegrasi mulus dengan FeatureStore dan EAS.
Untuk mengonfigurasi PAI-Rec, ikuti langkah-langkah berikut:
Konfigurasikan
FeatureStoreConfs.RegionId: Tetapkan parameter ini ke wilayah tempat layanan Anda diterapkan. Contoh ini menggunakan cn-beijing.ProjectName: Nama proyek FeatureStore yang telah Anda buat, yaitu fs_demo.
"FeatureStoreConfs": { "pairec-fs": { "RegionId": "cn-beijing", "AccessId": "${AccessKey}", "AccessKey": "${AccessSecret}", "ProjectName": "fs_demo" } },Konfigurasikan
FeatureConfs.FeatureStoreName: Pastikan nilai ini cocok dengan pairec-fs dari konfigurasi FeatureStoreConfs.FeatureStoreModelName: Tetapkan parameter ini ke nama fitur model, yaitu fs_rank_v1 dalam contoh ini.FeatureStoreEntityName: Tetapkan parameter ini ke nama entitas fitur, yaitu user dalam contoh ini. Ini menginstruksikan mesin PAI-Rec untuk menggunakan FeatureStore Go SDK guna mengambil fitur untuk entitasuserdari fitur modelfs_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 menentukan layanan penilaian model EAS mana yang akan dipanggil oleh PAI-Rec.
Name: Pastikan nilai ini cocok dengan nama layanan EAS yang diterapkan.UrldanAuth: Nilai-nilai ini disediakan oleh layanan EAS. Di Konsol Overview, klik nama layanan, lalu di tab Overview, klik View Endpoint Information untuk mendapatkan 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" } } ],