PAI-Rec'te özellik mühendisliğini, hatırlamayı ve sıralamayı yapılandırmak için genel bir veri kümesi kullanın, ardından oluşturulan kodu DataWorks'e dağıtın. Modüler yaklaşım, işlem hattının geri kalanını etkilemeden tek tek bileşenleri yayınlamanıza veya yayından kaldırmanıza olanak tanır.
Öneri çözümü özelleştirmesini neden modüler hale getirmelisiniz?
Özellik grupları model yinelemesini basitleştirir.
Tek tıkla yayınlama, kodu dağıtır ve veri doldurma işlemini otomatik olarak başlatır.
Yalnızca sıralama modülü tüm gerekli bileşenleri (özellik grupları, örnekler ve özellik oluşturma modülleri) tamamen doldurur; bu durum, özellik mühendisliği hatalarından kaynaklanan yeniden çalışmayı azaltır.
Ön koşullar
Aşağıdaki hazırlıkları tamamlayın:
OSS'de paket oluşturun.
Bir VPC ve vSwitch oluşturun. IPv4 CIDR bloğu içeren bir VPC oluşturun.
PAI-FeatureStore'u etkinleştirin (bkz. Veri Kaynağı Oluşturma konusundaki Ön koşullar bölümü). Hologres'i etkinleştirmeyin. Veri kaynağınız olarak FeatureDB'yi seçin (Çevrimiçi Veri Kaynağı Oluşturma: FeatureDB).
MaxCompute'u etkinleştirin ve MaxCompute projesi oluşturun. Proje adını
project_mcolarak belirleyin.-
Satın alma kılavuzu bölümünü inceleyin ve aşağıdaki işlemleri tamamlayın:
DataWorks'te çalışma alanı oluşturun.
Serverless kaynak grubu satın alın (Serverless kaynak grubu kullanma). Bu kaynak grubu, PAI-FeatureStore için verileri senkronize eder ve PAI-EAS hizmetlerini oluşturup güncellemek üzere
eascmdkomutlarını çalıştırır.-
DataWorks veri kaynaklarını yapılandırın:
Bir OSS veri kaynağı oluşturun ve bağlayın (Veri Kaynağı Yönetimi).
Bir MaxCompute veri kaynağı oluşturun ve bağlayın (MaxCompute hesaplama kaynaklarını bağlama).
FeatureStore projesi ve özellik varlığı oluşturun (Adım 2: FeatureStore'u oluşturma ve kaydetme). Serverless kaynak grubu kullanıyorsanız bu adımı atlayın. Özel kaynak grubu kullanıyorsanız, FeatureStore Python SDK'sını kaynak grubuna yükleyin (FeatureStore Python SDK'yı yükleme).
Realtime Compute for Apache Flink'i etkinleştirin. Depolama türü olarak Tamamen yönetilen depolama yerine OSS paket seçeneğini seçin. OSS paketi, PAI-Rec için yapılandırılan paketle eşleşmelidir. Flink, gerçek zamanlı kullanıcı davranışı verilerini kaydeder ve gerçek zamanlı kullanıcı özelliklerini hesaplar.
TensorFlow tabanlı bir çerçeve olan EasyRec kullanıyorsanız, eğitim varsayılan olarak MaxCompute üzerinde çalışır.
PyTorch tabanlı bir çerçeve olan TorchEasyRec kullanıyorsanız, eğitim varsayılan olarak PAI-DLC üzerinde çalışır. PAI-DLC'de MaxCompute verilerini indirmek için Veri Aktarım Hizmetini etkinleştirin (Özel Veri Aktarım Hizmeti kaynak grubu satın alma ve kullanma).
1. PAI-Rec örneği oluşturun ve hizmeti başlatın
Öneri Sistemi Geliştirme Platformu ana sayfasında oturum açın ve Buy Now öğesine tıklayın.
-
PAI-Rec örneği satın alma sayfasında aşağıdaki anahtar parametreleri yapılandırın ve ardından Buy Now öğesine tıklayın.
Parametre
Açıklama
Region and zone
Bulut hizmetinizin dağıtıldığı bölge.
Service TypeStandard Edition and enable Recommendation Solution Customization seçeneğini seçin.
PAI-Rec Yönetim Konsolu üzerinde oturum açın. Üst menü çubuğunun sol üst köşesinde bir bölge seçin.
Sol gezinme bölmesinde Instances seçeneğine gidin ve ardından örnek ayrıntıları sayfasını açmak için örnek adına tıklayın.
-
Procedure bölümünde, System Configuration > Cloud Service Configuration sayfasını açmak için Cloud Service Configuration öğesine tıklayın. Edit öğesine tıklayın, parametreleri Kaynak yapılandırması tablosunda gösterildiği gibi yapılandırın ve ardından Exit öğesine tıklayın.
Sol gezinme bölmesinde System Configuration > Permissions seçeneğine gidin. Services sekmesinde her bir bulut hizmetinin yetkilendirme durumunu doğrulayın.
2. Genel veri kümesini klonlayın
1. Veri tablosunu senkronize edin
İki veri girişi seçeneği mevcuttur:
Belirli bir zaman penceresi içinde pai_online_project'ten verileri klonlayın. Bu seçenek zamanlanmış görevleri desteklemez.
Veri oluşturmak için bir Python betiği kullanın. Belirtilen bir zaman aralığı için veri oluşturmak üzere görevi DataWorks'te çalıştırabilirsiniz.
Günlük veri oluşturma ve model eğitimi için zamanlanmış görevler kullanmak istiyorsanız bunun yerine bir Python betiği dağıtın. Kod kullanarak veri oluşturma sekmesine bakın.
Sabit zaman penceresi
PAI-Rec, pai_online_project genel projesinde üç tablo hazırlar:
Kullanıcı tablosu:
pai_online_project.rec_sln_demo_user_tableÖğe tablosu:
pai_online_project.rec_sln_demo_item_tableDavranış tablosu:
pai_online_project.rec_sln_demo_behavior_table
Aşağıdaki işlemler bu üç tabloyu kullanır. Veriler simülasyon amacıyla rastgele oluşturulduğundan AUC gibi eğitim ölçümleri düşük olabilir. Tablo verilerini pai_online_project konumundan DataWorks projenize (örneğin DataWorks_a) senkronize etmek için DataWorks'te SQL komutlarını çalıştırın:
DataWorks konsolunda oturum açın ve üst menü çubuğunun sol üst köşesinden bir bölge seçin.
Sol taraftaki gezinme bölmesinde Data Development and O&M > Data Development seçeneğine tıklayın.
Oluşturduğunuz DataWorks çalışma alanını seçin ve Enter Data Development öğesine tıklayın.
-
Create üzerine gelin ve ardından New node > MaxCompute > ODPS SQL seçeneğine gidin. Parametreleri aşağıdaki tabloda açıklandığı gibi yapılandırın ve ardından Confirm öğesine tıklayın.
Yeni düğüm düzenleyicisinde, aşağıdaki kodu kopyalayıp çalıştırarak kullanıcı, öğe ve davranış tablolarını
pai_online_projectprojesinden MaxCompute projenize (örneğinproject_mc) senkronize edin. Kodu çalıştırmadan önce,bizdateile biten 100 günlük bir veri penceresi belirtmek için değişkenleri ayarlayın. Genelliklebizdatedeğerini önceki güne ayarlamanız gerekir. Zamanlama parametreleri alanında Parametre Ekle'ye tıklayın ve değeri$[yyyymmdd-1]olan bizdate ile değeri$[yyyymmdd-100]olan bizdate_100 olmak üzere iki parametre ekleyin. Aşağıdaki kodu çalıştırmak, verileri genelpai_online_projectprojesinden projenize senkronize eder:
CREATE TABLE IF NOT EXISTS rec_sln_demo_user_table_v1(
user_id BIGINT COMMENT 'Unique user ID',
gender STRING COMMENT 'Gender',
age BIGINT COMMENT 'Age',
city STRING COMMENT 'City',
item_cnt BIGINT COMMENT 'Number of published items',
follow_cnt BIGINT COMMENT 'Number of followed accounts',
follower_cnt BIGINT COMMENT 'Number of followers',
register_time BIGINT COMMENT 'Registration time',
tags STRING COMMENT 'User tags'
) PARTITIONED BY (ds STRING) STORED AS ALIORC;
INSERT OVERWRITE TABLE rec_sln_demo_user_table_v1 PARTITION(ds)
SELECT *
FROM pai_online_project.rec_sln_demo_user_table
WHERE ds >= "${bizdate_100}" and ds <= "${bizdate}";
CREATE TABLE IF NOT EXISTS rec_sln_demo_item_table_v1(
item_id BIGINT COMMENT 'Item ID',
duration DOUBLE COMMENT 'Video duration',
title STRING COMMENT 'Title',
category STRING COMMENT 'Primary category',
author BIGINT COMMENT 'Author',
click_count BIGINT COMMENT 'Total clicks',
praise_count BIGINT COMMENT 'Total likes',
pub_time BIGINT COMMENT 'Publish time'
) PARTITIONED BY (ds STRING) STORED AS ALIORC;
INSERT OVERWRITE TABLE rec_sln_demo_item_table_v1 PARTITION(ds)
SELECT *
FROM pai_online_project.rec_sln_demo_item_table
WHERE ds >= "${bizdate_100}" and ds <= "${bizdate}";
CREATE TABLE IF NOT EXISTS rec_sln_demo_behavior_table_v1(
request_id STRING COMMENT 'Tracking ID/Request ID',
user_id STRING COMMENT 'Unique user ID',
exp_id STRING COMMENT 'Experiment ID',
page STRING COMMENT 'Page',
net_type STRING COMMENT 'Network type',
event_time BIGINT COMMENT 'Event time',
item_id STRING COMMENT 'Item ID',
event STRING COMMENT 'Event type',
playtime DOUBLE COMMENT 'Playback/Reading duration'
) PARTITIONED BY (ds STRING) STORED AS ALIORC;
INSERT OVERWRITE TABLE rec_sln_demo_behavior_table_v1 PARTITION(ds)
SELECT *
FROM pai_online_project.rec_sln_demo_behavior_table
WHERE ds >= "${bizdate_100}" and ds <= "${bizdate}";
Kod oluşturma
Sabit zaman pencereli veriler zamanlanmış görevleri desteklemez. Görevleri zamanlamaya göre çalıştırmak için veri oluşturacak bir Python betiği dağıtın:
DataWorks konsolunda bir PyODPS 3 düğümü oluşturun (MaxCompute düğümleri oluşturma ve yönetme).
create_data.py dosyasını indirin ve ardından dosyanın içeriğini PyODPS 3 düğüm düzenleyicisine yapıştırın.
-
Düzenleyicinin sağ tarafında Configure Scheduling seçeneğine tıklayın ve parametreleri yapılandırın. Ardından, sağ üst köşedeki Kaydet
ve Gönder
simgelerine tıklayın.-
Zamanlama parametrelerini yapılandırın:
-
Değişken değiştirme notu:
Zamanlama parametrelerinde,
$user_table_namebağımsız değişkeninirec_sln_demo_user_tableolarak ayarlayın.$item_table_namebağımsız değişkeninirec_sln_demo_item_tableolarak ayarlayın.$behavior_table_namebağımsız değişkeninirec_sln_demo_behavior_tableolarak ayarlayın.Üç tablo adı bağımsız değişkenine ek olarak betik,
$bizdatedeğişkeni olarak iletilen birbizdatezamanlama parametresi de kullanır.Parametre yapılandırması:
bizdateadlı bir parametre ekleyin ve değerini$[yyyymmdd-1]olarak ayarlayın.
-
Zamanlama bağımlılıklarını yapılandırın.
-
Operation Center'ı tıklayın ve seçeneğini belirleyin.
Hedef görevin İşlemler sütununda öğesini tıklayın.
-
Data Backfill panelinde veri zaman damgasını ayarlayın ve ardından Submit and Navigate öğesini tıklayın.
Veri bütünlüğünü sağlamak için 60 günlük optimum bir geriye dönük veri doldurma süresi amacıyla veri zaman damgasını
Scheduled Task Date - 60olarak ayarlayın.
2. Bağımlılık düğümlerini yapılandırma
DataWorks projenize kök düğüm üzerinde zamanlama bağımlılığı olan üç sanal düğüm ekleyin ve ardından bunları yayınlayın:
-
Create üzerine gelin ve new node > General-purpose > virtual node seçeneğini belirleyin. Aşağıdaki kaynak yapılandırmasını kullanarak üç sanal düğüm oluşturun ve ardından Confirm öğesini tıklayın.
-
Her bir düğümü seçin ve içeriğini
select 1;olarak ayarlayın. Ardından sağ taraftaki Configure Scheduling öğesini tıklayın ve aşağıdaki ayarları tamamlayın:Time attributes bölümünde, Rerun attribute özelliğini Rerun node after success or failure olarak ayarlayın.
-
Scheduling dependencies > Ancestor Nodes bölümünde DataWorks çalışma alanı adını girin, _root son ekine sahip düğümü seçin ve Add öğesini tıklayın.
Bu bağımlılık yapılandırmasını üç sanal düğümün tümüne uygulayın.
Her sanal düğüm için düğümü göndermek üzere
simgesini tıklayın.
3. Verileri kaydetme
Özellik mühendisliği, geri çağırma ve sıralamayı yapılandırmadan önce senkronize edilen üç tabloyu PAI-Rec'e kaydedin:
PAI-Rec Management Console adresinde oturum açın ve sol üst köşeden bir bölge seçin.
Sol gezinme bölmesinde Instances öğesini tıklayın ve ardından ayrıntılar sayfasını açmak için bir örneğin adını tıklayın.
-
Sol gezinme bölmesinde Recommendation Solution Customization > Data Registration konumuna gidin. MaxCompute Table sekmesinde Create Data Table öğesini tıklayın. Aşağıdaki tablodaki yapılandırmayı kullanarak bir kullanıcı tablosu, bir öğe tablosu ve bir davranış tablosu ekleyin. Ardından Import öğesini tıklayın.
Parameter
Description
Example
MaxCompute projesi
Oluşturduğunuz MaxCompute projesini seçin.
project_mc
MaxCompute tablosu
DataWorks çalışma alanınıza senkronize edilen veri tablolarını seçin.
Kullanıcı tablosu: rec_sln_demo_user_table_v1
Öğe tablosu: rec_sln_demo_item_table_v1
Davranış tablosu: rec_sln_demo_behavior_table_v1
Veri tablosu adı
Özel bir ad girin.
Kullanıcı tablosu
Öğe tablosu
Davranış tablosu
4. Bir öneri senaryosu oluşturma
Öneri görevlerini yapılandırmadan önce bir öneri senaryosu oluşturun. Temel kavramlar ve trafik kodlaması hakkında bilgi için bkz. Basic Concepts.
Sol gezinme bölmesinde Recommendation Scenario ve ardından Create Scenario öğelerini tıklayın. Aşağıdaki kaynak yapılandırmasıyla bir öneri senaryosu yapılandırın ve Determine öğesini tıklayın.
5. Bir algoritma kurma
Tam bir üretim yapılandırması aşağıdaki geri çağırma ve sıralama ayarlarını içerir:
Genel popüler geri çağırma: Günlük verilerine göre en popüler K öğeyi alır.
Gruplanmış popüler geri çağırma: İlgililiği artırmak için şehir veya cinsiyet gibi belirli gruplardan popüler öğe adaylarını alır.
Etrec u2i geri çağırma: Etrec işbirlikçi filtreleme algoritmasını kullanır.
Swing u2i geri çağırma (isteğe bağlı): Swing algoritmasını kullanır.
Vektör geri çağırma (isteğe bağlı): Derin Yapısal Anlamsal Model (DSSM) kullanarak adaylar oluşturur.
İnce taneli sıralama: Tek amaçlı sıralama için MultiTower modelini ve çok amaçlı sıralama için DBMTL modelini kullanır.
Aşağıdaki adımlar, RECommender (eTREC, a collaborative filtering implementation) bölümündeki genel popüler geri çağırma ve etrec u2i geri çağırmayı ve ayrıca ince taneli sıralamayı kapsar. Adımlar:
-
Sol gezinme bölmesinde Recommendation Solution Customization seçeneğini belirleyin. Oluşturduğunuz bir senaryoyu seçin ve ardından Create Modular Recommendation Solution öğesini tıklayın. Aşağıdaki kaynak yapılandırmalarıyla bir çözüm oluşturun ve ardından Save and Go to Algorithm Solution Configuration öğesini tıklayın.
Belirtilmeyen parametreleri varsayılan değerlerinde bırakın. Data Table Configuration.
-
Configure Table sekmesinde bir veri tablosunun yanındaki Add öğesini tıklayın. İlgili bölüm, olay, özellik ve zaman damgası alanlarını ayarlayarak davranış günlük tablosunu, kullanıcı tablosunu ve öğe tablosunu yapılandırın ve ardından Next öğesini tıklayın.
Belirtilmeyen parametreleri varsayılan değerlerinde bırakın. Data Table Configuration.
-
Feature Group Configuration altında Add öğesini tıklayın. Parametreleri aşağıdaki tabloda gösterildiği gibi yapılandırın. Özellik modülü adını ve sürümünü ayarlayın ve Configure Table sekmesinde yapılandırdığınız kullanıcı tablosunu, öğe tablosunu ve davranış günlük tablosunu seçin.
Determine öğesini tıklayın. Bu işlem hem kullanıcılar hem de öğeler için çeşitli istatistiksel özellikler oluşturur. Doğrulama özelliklerini görüntülemek için bu özellik grubunun Configure Feature öğesini tıklayın. Bu çözüm için türetilmiş özellikleri düzenlemeyin ve varsayılan ayarları koruyun. Türetilmiş özellikleri iş ihtiyaçlarınıza uygun şekilde düzenleyebilirsiniz (Feature Configuration). Bu özellik grubu için Publish öğesini tıklayın, görev çalıştırma tarihi olarak en son veri bölümü tarihini seçin, maksimum görev paralelliğini 10 olarak ayarlayın ve diğer ayarları varsayılanlarında bırakın. Ardından Determine öğesini tıklayın. Bu işlem bir düğüm oluşturur, onu DataWorks'e dağıtır ve tarihe göre verileri geriye dönük olarak doldurur. Bir sonraki adıma geçmeden önce modülün durumunun Published olarak değişmesini bekleyin. Modülle ilgili daha fazla bilgiyi görüntülemek için Online Details öğesini tıklayın. Data Refill Task List bölümünde her görevin çalışma durumunu kontrol edebilirsiniz. Bir görev başarısız olursa ayrıntılı hata bilgilerini görüntülemek üzere DataWorks'e gitmek için View Task Node öğesini tıklayın. Sorunu giderdikten sonra Data Refill Task List bölümünde düğümü bulun ve Rerun öğesini tıklayın. Görev başarılı olduktan sonra devam edebilirsiniz.
-
Label Table Configuration altında bu modül davranış tablosundan örnek hedefler oluşturur. Add öğesini tıklayın, modül türü olarak Label Module seçeneğini belirleyin, etiket modülü için bir ad girin ve önceki adımda yapılandırdığınız özellik modülünü seçin. Fine-grained ranking target settings (labels) öğesinin yanındaki Create öğesini tıklayın ve aşağıdaki iki etiketi ekleyin:
Hedef 1: Fine-grained ranking target name öğesini
is_clickolarak ayarlayın, Fine-grained ranking target expression öğesinimax(if(event='click',1,0))olarak ayarlayın ve Target type için CLASSIFICATION seçeneğini belirleyin.Hedef 2 ('ln' içindeki 'l' harfinin küçük olduğuna dikkat edin): Fine-grained ranking target name öğesini
ln_playtimeolarak ayarlayın, Fine-grained ranking target expression öğesiniln(sum(playtime)+1)olarak ayarlayın, Fine-grained ranking target dependency öğesiniis_clickolarak ayarlayın ve Target type için REGRESSION seçeneğini belirleyin. Ardından OK öğesini tıklayın.Determine öğesini tıkladıktan sonra modülü özellik modülünü yayınladığınız şekilde yayınlayın. Bir sonraki adıma geçmeden önce durumun Published olarak değişmesini bekleyin.
Sample Configuration altında bu modül örnek hedef tablolarını özelliklerle ilişkilendirir ve FeatureStore'da model özellikleri oluşturur. Add öğesini tıklayın, modül türü olarak Sample Module seçeneğini belirleyin, model özelliğine bir ad verin ve önceki adımlardaki özellik ve etiket modüllerini seçin. Modülü yayınlayın ve bir sonraki adıma geçmeden önce durumun Published olarak değişmesini bekleyin.
Feature Generation Configuration altında bu modül örnek tablodaki tüm özelliklerden ek özellikler türetir. Özel yapılandırma şu anda desteklenmemektedir. Add öğesini tıklayın, modül türü olarak Feature Generation seçeneğini belirleyin, özellik oluşturma türü olarak Ranking seçeneğini belirleyin ve önceki örnek yapılandırma adımındaki model özellik modülünü seçin. Bir sonraki adıma geçmeden önce durumun Published olarak değişmesini bekleyin.
Configure Sorting Method altında ince taneli sıralama bölümünde Add öğesini tıklayın. Özellik modülü çıktısı için önceki adımdaki özellik oluşturma modülünü seçin. Diğer seçenekleri varsayılan değerlerinde bırakın ve Determine öğesini tıklayın. Ardından modülü yayınlayın. Durum Published olarak değiştikten sonra model hizmeti PAI-EAS'a dağıtılır.
Retrieval Configuration altında hedef kategorinin yanındaki Add öğesini tıklayın, parametreleri yapılandırın, Confirm ve ardından yapılandırmayı Publish edin. Bu belgede birkaç geri çağırma yapılandırma yöntemi yer almaktadır. Dağıtımı hızlıca tamamlamak için yalnızca Global Hot Recall ve etrec u2i Recall yöntemlerini yapılandırmanız yeterlidir. Vektör geri çağırma ve işbirlikçi ölçüm geri çağırma gibi diğer yöntemler yalnızca referans amaçlıdır.