PAI-Rec'in A/B test sistemi, mevcut öneri, arama veya reklam motorunuzla birlikte çalışabilir; geçiş gerekmez. Bulut kaynaklarını yapılandırarak, deneyler kurarak, SDK'yı çağırarak ve sonuçları ölçerek entegrasyonu tamamlayın.
Nasıl çalışır
PAI-Rec, A/B testlerini dört seviyeli bir hiyerarşiyle düzenler:
Laboratuvar → Deney katmanı → Deney grubu → Deney
Bir laboratuvar deney katmanlarını içerir; her katman deney gruplarını, her grup ise deneyleri barındırır. Trafik öncelikle temel olmayan laboratuvarlardan geçer; temel laboratuvar, kalan trafiği yedek olarak işler.
Bir kullanıcı isteği geldiğinde SDK, bir senaryo adı ve istek bağlamıyla match_experiment yöntemini çağırır. PAI-Rec kullanıcıyı bir deney atar ve aşağıdakileri döndürür:
exp_id— ölçüm hesaplaması için her kullanıcı olayıyla birlikte günlüğe kaydedilecek deney kimliğiDeney parametreleri — hangi algoritma varyantının çalıştırılacağını belirlemek için sisteminizin okuduğu anahtar-değer çiftleri
Olaylar ve ölçümler: Kodunuz kullanıcı davranışı olaylarını (tıklamalar, satın alımlar vb.) günlüğe kaydeder ve her olayda exp_id değerini saklar. PAI-Rec bu olayları MaxCompute üzerinde toplayarak deney ölçümlerini hesaplar ve karşılaştırma raporları oluşturur. exp_id alanı analiz sırasında her davranış olayını doğru deney ile ilişkilendirir.
Ön koşullar
Başlamadan önce şunlara sahip olduğunuzdan emin olun:
Bir örnek kimliği ve bölge bilgisi içeren bir PAI-Rec örneği
Alibaba Cloud hesabınızdan alınan AccessKey ID ve AccessKey secret
PAI-Rec'e okuma ve yazma erişimi verilmiş bir MaxCompute projesi
Bir Object Storage Service (OSS) paketi
1. Adım: Kaynakları yapılandırın
PAI-Rec konsoluna giriş yapın
PAI-Rec konsolunda sol gezinme bölmesinde Full-link Service seçeneğine tıklayın. Görüntülenen Service Initialization sihirbazında çalışma alanlarınızı yapılandırın.
Yapılandırma notları:
Platform for AI (PAI), DataWorks ve MaxCompute'deki mevcut çalışma alanlarını ilgili konsollardan sorgulayın. Her ürünün ana sayfasında Console seçeneğine tıklayın.
Burada yapılandırmadan önce OSS konsolunda bir OSS paketi oluşturun.
MaxCompute erişimi verin
Projects sayfasında kullanmak istediğiniz MaxCompute projesini arayın.
Hiçbir proje görünmüyorsa önce doğru bölgeyi seçin.
Projenin Actions sütununda Manage seçeneğine tıklayın. PAI-Rec'e MaxCompute projesi üzerinde doğrudan erişim ve yazma izinleri verin.
Ayrıntılar için bkz. Hizmet etkinleştirme ve başlatma.
2. Adım: Bir senaryo oluşturun
| Parametre | Açıklama |
|---|---|
| Scenario name | Öneri senaryosunun adı. Sayfa konumunu yansıtan bir ad kullanın (örneğin, homepage_feed). |
| Description | Senaryo için isteğe bağlı açıklama. |
| Intended users | PAI-Rec'i tam olarak kullanmayan kullanıcıları seçin. |
Kendi yönettiğiniz sistemler için trafik yapılandırması:
Kendi yönettiğiniz bir öneri sisteminiz varsa senaryo trafiğinin %10–%20'sini başlangıçta PAI-Rec'e yönlendirin. Sonuçlar beklentileri karşıladığında trafik paylaşımını kademeli olarak artırın.
Kendi yönettiğiniz trafiğinizi ayrı olarak izlemek için özel bir trafik kodu atayın. PAI-Rec'in ölçüm hesaplaması sırasında davranış olaylarını deneylerle ilişkilendirebilmesi için her kullanıcı etkileşimine ait olay izleme günlüklerinize exp_id değerini kaydedin.
3. Adım: A/B testini yapılandırın
Bir deneyi başlatmadan önce test edilecek değişiklikleri ilgili ürün yöneticisi veya proje yöneticisiyle onaylayın.
Terim tanımları için bkz. Temel Kavramlar.
Laboratuvar oluşturun
Bir çalışma zamanı ortamı ve öneri senaryosu seçin.
Create Lab seçeneğine tıklayın.
Create Lab panelinde aşağıdaki parametreleri yapılandırın:
| Parametre | Açıklama |
|---|---|
| Lab type | Base Lab (zorunlu): Temel olmayan laboratuvarlarla eşleşmeyen trafiği işler. Popüler öğeler veya rastgele yedek mantığı kullanabilir. Non-base Lab (isteğe bağlı): Trafik öncelikle burada eşleşir; daha basit bir temel modelin yanında karmaşık modeller çalıştırmak için kullanışlıdır. |
| Bucketing method | Hashed UID-based Bucketing: Kullanıcıları UID'nin hash değeriyle paketlere ayırır. UID-based Bucketing: Kullanıcıları UID'nin son rakamlarına göre paketlere ayırır. Condition-based Bucketing: Kullanıcıları gender=man gibi bir anahtar-değer ifadesine göre paketlere ayırır. |
| Buckets | Bu laboratuvardaki toplam paket sayısı (örneğin, 100). |
| Traffic allocation | Bu laboratuvara atanan paket numaraları, 0–99 aralığında. |
| Layering | Deney katmanı. Tipik katmanlar: recall, filter, coarse_rank, rank. |
| Test users | Paket eşleştirmesi olmadan doğrudan bu laboratuvara yönlendirilen kullanıcılar. UID'leri manuel olarak girin (virgülle ayrılmış) veya User Group Management sayfasından bir User Group ID seçin. |
Deney grubu oluşturun
Her deney katmanında birden fazla deney grubu olabilir ve her grupta birden fazla deney bulunabilir. Aynı katmanda (örneğin, farklı geri çağırma algoritmaları) birbirini etkilemeden deney çalıştırmak isteyen birden fazla mühendis olduğunda ayrı gruplar kullanın.
A/A test grubu (yeni deneyler için önerilir):
Deney kurulumunuzun tarafsız olduğunu doğrulamak için gerçek deneyleri çalıştırmadan önce bir A/A test grubu oluşturun:
Deney için 4–5 paket seçin.
İlke yapılandırılmamış bir gruba 2 paket atayın. Bu paketleri kuru çalışma olarak çalıştırın ve temel ölçümleri izleyin.
Ölçümleri en benzer olan iki grubu gerçek A/B testiniz için kullanın.
Ek deney grubu parametreleri:
| Parametre | Açıklama |
|---|---|
| Filter by | Test kullanıcıları seçildikten sonra kullanıcıları daha da filtreleyin. Yeni ve mevcut kullanıcıları filtrelemek daha kapsamlı test sonuçları sağlar. |
| Test users | Manually Enter: Deneyleri önce çalıştırmak, geri bildirim toplamak ve ardından iyileştirmek için kullanıcı kimliklerini belirtin. User Group ID: Belirli kullanıcı gruplarını belirli deneylere yönlendirin. Experiment Platform altında User Group Management bölümünde kullanıcı grupları oluşturun; kullanıcı kimliklerini manuel olarak veya Excel üzerinden yükleyebilirsiniz. |
Deney oluşturun
Create Experiment seçeneğine tıklayın. Varsayılan olarak önce bir temel deney oluşturulur.
| Deney türü | Açıklama |
|---|---|
| Baseline experiment | Kontrol grubu. Kullanıcılar rastgele deney grubuna veya kontrol grubuna atanır. |
| Normal experiment | Temel deney ile aynı yapıya sahip ek deneyler. Her biri bir tedavi grubu olarak hizmet eder. |
Trafik tahsis stratejileri:
| Amaç | Strateji |
|---|---|
| Yeni özellik lansmanında riski en aza indirme | Zaman çizelgeniz içinde veri toplarken kullanıcı etkisini sınırlamak için yeni sürüme küçük bir trafik dilimi gönderin. |
| Test hızını maksimize etme | Sonuçları daha hızlı toplamak için trafiği gruplar arasında eşit şekilde dağıtın. |
| Yatırım getirisini (ROI) optimize etme | Daha fazla trafiği deney grubuna ayırın ve kontrol grubu için küçük bir dilim tutun. |
Tüm parametreleri yapılandırdıktan sonra Save seçeneğine tıklayın.
4. Adım: SDK'yı çağırın
Hem Python hem de Java SDK'ları aynı deseni takip eder: Kimlik bilgileriniz ve örnek ayrıntılarınızla bir istemci başlatın, bir senaryo adı ve kullanıcı bağlamıyla match_experiment yöntemini çağırın, ardından sonuçtan exp_id ve deney parametrelerini okuyun.
Günlüğe kaydettiğiniz her kullanıcı davranışı olayında exp_id değerini saklayın. PAI-Rec ölçümleri hesaplarken olayları deneylerle ilişkilendirmek için bu alanı kullanır.
Python SDK
Yükleme
SDK'yı çalıştırmak için bir Python ortamı hazırlamanız ve PyCharm yüklemeniz gerekir.
pip install https://aliyun-pairec-config-sdk.oss-cn-hangzhou.aliyuncs.com/python/aliyun_pairec_config_python_sdk-1.0.0-py2.py3-none-any.whl
Paketi PyCharm'ın paket yöneticisi aracılığıyla değil yukarıdaki komutu kullanarak yükleyin. Paket açık kaynak değildir ve PyCharm'ın yükleyicisi çakışmalara neden olabilir. pip güncellemesi gerekiyorsa yüklemeden önce güncelleyin. Zaman aşımı ile karşılaşırsanız komutu tekrar çalıştırın.
Başlatma ve çağırma
Kodu çalıştırmadan önce kimlik bilgilerinizi ortam değişkenlerinde saklayın:
export ALIBABA_CLOUD_ACCESS_KEY_ID=<your-access-key-id>
export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<your-access-key-secret>
AccessKey kimlik bilgilerini kaynak kodunuzda asla sabit kodlamayın. Çalışma zamanında bunları ortam değişkenlerinden okuyun.
import os
from alibabacloud_tea_openapi.models import Config
from api.api_scene import SceneApiService
from api.api_experiment_room import ExperimentRoomApiService
from api.api_layer import api_layer
from api.api_experiment_group import ExperimentGroupApiService
from api.api_experiment import ExperimentApiService
from client.client import ExperimentClient
from model.experiment import ExperimentContext
from api.api_crowd import CrowdApiService
from alibabacloud_pairecservice20221213.client import Client
from common.constants import ENVIRONMENT_PRODUCT_CONFIG_CENTER
from common.constants import ENVIRONMENT_PREPUB_CONFIG_CENTER
from common.constants import ENVIRONMENT_DAILY_CONFIG_CENTER
# Instance details — find these on the Basic Information page in the PAI-Rec console
instance_id = "<instance-id>"
region = "<region-id>"
# Read credentials from environment variables
access_id = os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID']
access_key = os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
if __name__ == '__main__':
# Valid environments: ENVIRONMENT_PRODUCT_CONFIG_CENTER, ENVIRONMENT_PREPUB_CONFIG_CENTER, ENVIRONMENT_DAILY_CONFIG_CENTER
experiment = ExperimentClient(
instance_id=instance_id,
region=region,
access_key_id=access_id,
access_key_secret=access_key,
environment=ENVIRONMENT_PRODUCT_CONFIG_CENTER
)
# Build the request context
# request_id: any unique identifier (auto-increment ID or UUID)
# uid: the user ID to assign to an experiment
experiment_context = ExperimentContext(
request_id="<request-id>",
uid="<user-id>",
filter_params={}
)
# Match the user to an experiment in the specified scenario
# Find the scenario name on the Recommendation Scenarios page
experiment_result = experiment.match_experiment("<scenario-name>", experiment_context)
# Log experiment assignment details
print('info', experiment_result.info())
# Store exp_id in your event tracking logs for metric calculation
print('exp_id', experiment_result.get_exp_id())
# Read experiment parameters to determine which algorithm variant to run
print(experiment_result.get_experiment_params())
print(experiment_result.get_experiment_params().get('url', 'not exist'))
print(experiment_result.get_experiment_params().get('token', 'not exist'))
Çalıştırmadan önce yer tutucuları değiştirin:
| Yer Tutucu | Nerede Bulunur |
|---|---|
<instance-id> |
PAI-Rec konsolundaki Basic Information sayfası |
<region-id> |
PAI-Rec konsolundaki Basic Information sayfası |
<scenario-name> |
PAI-Rec konsolundaki Recommendation Scenarios sayfası |
Beklenen çıktı:
Başarılı bir çalıştırma deney atamasını ve o deney için yapılandırılan parametre değerlerini yazdırır:
info exp_id=<exp_id> ...
exp_id <exp_id>
{'url': 'https://...', 'token': '...'}
https://...
...
Ortam değişkenlerini okurken bir KeyError oluşursa PyCharm'da çalıştırma yapılandırmasına sağ tıklayın ve sistem değişkenlerinin yüklendiğini doğrulayın. Değilse projeyi yeniden başlatın.
Java SDK
AccessKey kimlik bilgilerini kaynak kodunuzda asla sabit kodlamayın. Çalışma zamanında bunları ortam değişkenlerinden okuyun.
package com.aliyun.openservices.pairec;
import com.aliyun.openservices.pairec.api.ApiClient;
import com.aliyun.openservices.pairec.api.Configuration;
import com.aliyun.openservices.pairec.common.Constants;
import com.aliyun.openservices.pairec.model.ExperimentContext;
import com.aliyun.openservices.pairec.model.ExperimentResult;
public class ExperimentTest {
static ExperimentClient experimentClient;
public static void main(String[] args) throws Exception {
// Instance details — find regionId and instanceId on the Basic Information page
String regionId = "<region-id>";
String instanceId = System.getenv("Instance ID"); // pai-rec instance ID
// Read credentials from environment variables
String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
Configuration configuration = new Configuration(regionId, accessId, accessKey, instanceId);
// Set the experiment environment
configuration.setEnvironment(Constants.Environment_Product_Desc);
ApiClient apiClient = new ApiClient(configuration);
experimentClient = new ExperimentClient(apiClient);
// Initialize the client
experimentClient.init();
// Build the request context
ExperimentContext experimentContext = new ExperimentContext();
experimentContext.setUid("<user-id>");
experimentContext.setRequestId("<request-id>");
// Match the user to an experiment in the specified scenario
ExperimentResult experimentResult = experimentClient.matchExperiment("<scenario-name>", experimentContext);
// Store exp_id in your event tracking logs for metric calculation
System.out.println(experimentResult.getExpId());
// Log experiment assignment details
System.out.println(experimentResult.info());
// Read experiment parameters to determine which algorithm variant to run
System.out.println(experimentResult.getExperimentParams().getString("rank_version", "not exist"));
System.out.println(experimentResult.getExperimentParams().getString("version", "not exist"));
System.out.println(experimentResult.getExperimentParams().getString("recall", "not exist"));
System.out.println(experimentResult.getExperimentParams().getDouble("recall_d", 0.0));
// Read parameters for a specific experiment layer by name
System.out.println(experimentResult.getLayerParams("recall").getString("rank_version", "not exist"));
System.out.println(experimentResult.getLayerParams("rank").getString("version", "not exist"));
}
}
5. Adım: Deney ölçümlerini tasarlayın
Ölçümleri hesaplamadan önce bir MaxCompute veri tablosu kaydedin ve neyin ölçüleceğini tanımlayın. Veri analistleri genellikle tıklama oranı (CTR) ve dönüşüm oranı (CVR) gibi temel ölçümlerin yanı sıra deney sırasında gerilememesi gereken zorunlu ölçümleri tasarlar.
Veri tablosu kaydedin
PAI-Rec konsolunda Metric Management > Data Registration bölümüne gidin. Bir MaxCompute tablosunu A/B test örneğinizle ilişkilendirin. Data Table Name değerini iş bağlamını yansıtan bir ada ayarlayın.
Gerekli alanları içeren bir tablo seçin. Alan gereksinimleri için bkz. Veri kaydı ve alan yapılandırması.
MaxCompute projenizde tüm gerekli alanlara sahip bir tablo yoksa bir tane oluşturun:
MaxCompute konsoluna giriş yapın ve bir veri tablosu oluşturun.
DataWorks'te MaxCompute üzerinde A/B test deney raporları için bir kaynak tablo oluşturun.
Kayıttan sonra tablo veri tablosu listesinde görünür. Alan eşlemelerini incelemek veya düzenlemek için tablonun Actions sütununda View Fields seçeneğine tıklayın.
Ölçüm türleri
PAI-Rec üç kategori ölçümü destekler:
| Kategori | Örnekler | Ne zaman kullanılır |
|---|---|---|
| Oran bazlı ölçümler | Tıklama dönüşüm oranı, CTR, CVR, ertesi gün elde tutma oranı | Gruplar arasındaki oranları karşılaştırmak için; öneri deneyleri için en yaygın kullanılan yöntem |
| Kullanıcı başına ölçümler | Kullanıcı başına ortalama tıklama, ortalama sipariş değeri (AOV) | Toplam oranlar yerine kullanıcı başına etkiyi ölçmek için |
| Mutlak ölçümler | Toplam tıklama, toplam sipariş tutarı | Yalnızca test gruplarında aynı sayıda kullanıcı olduğunda karşılaştırma yapmak için |
Ayrıca şunlar arasında ayrım yapın:
Temel ölçümler (KPI'ler): Deneyin iyileştirmeyi hedeflediği birincil sonuçlar
Zorunlu ölçümler: Bir test sırasında gözlemlenmesi gereken ölçümler; test edilen yetenek bunları olumsuz etkilememelidir
Ölçümleri yapılandırın
Metric Configurations sayfasında Metrics seçeneğine tıklayın. Recommendation Scenario ve Metric Timeliness parametrelerini ayarlayın.
Tek boyutlu ölçümler tek bir toplamadan hesaplanır: sayı, benzersiz sayı, toplam veya ortalama. Örneğin günlük tıklamalar ve günlük ziyaretler tek boyutlu ölçümlerdir.
Metric Definition parametresinde:
Page Views: Her sayfa ziyaretini sayar
Unique Visitors: Her kullanıcıyı ilk ziyaretinde bir kez sayar
Türetilmiş ölçümler birden fazla tek boyutlu ölçümü birleştirir. Örneğin:
CTR = Daily clicks / Daily visits
Önce günlük tıklamaları ve günlük ziyaretleri tek boyutlu ölçüm olarak ekleyin, ardından yukarıdaki formülü kullanarak CTR'yi türetilmiş bir ölçüm olarak tanımlayın.
Ölçüm gruplarını yapılandırın
İlgili ölçümleri bir araya getirerek bunları bir küme olarak hesaplayın ve karşılaştırın.
Metric Groups sekmesinde bir ölçüm grubu oluşturun ve Metric Selection parametresini istediğiniz ölçümleri içerecek şekilde ayarlayın.
Actions sütununda Calculate seçeneğine tıklayarak ölçüm hesaplamasını tetikleyin.
6. Adım: Ölçümleri hesaplayın ve raporlar oluşturun
Ölçümleri hesaplayın
Metric Configurations sayfasının Metric Groups sekmesinde Actions sütununda Calculate seçeneğine tıklayın. Görüntülenen panelde hesaplanacak ölçümleri seçin.
Jobs sayfasında iş ilerlemesini izleyin. Tüm işler tamamlandığında durum Succeeded olarak değişir.
Raporları görüntüleyin
Experiment Platform altındaki Performance Reports sayfasında parametreleri yapılandırın ve Start Analysis seçeneğine tıklayın.
Detail Data: Temel deney ile normal deneyler arasındaki ölçüm farklarını gösterir
Trend Analysis: Seçili ölçümlerin deney süresi boyunca nasıl değiştiğini gösterir
Sırada ne var
Hizmet etkinleştirme ve başlatma — ayrıntılı çalışma alanı yapılandırması
Temel Kavramlar — PAI-Rec A/B test terminolojisi referansı
Veri kaydı ve alan yapılandırması — MaxCompute veri tabloları için gerekli alanlar