Le système de test A/B de PAI-Rec fonctionne parallèlement à votre moteur de recommandation, de recherche ou publicitaire existant, sans migration nécessaire. Pour l'intégrer, configurez les ressources cloud, définissez des expériences, appelez le SDK et mesurez les résultats.
Fonctionnement
PAI-Rec organise les tests A/B selon une hiérarchie à quatre niveaux :
Laboratoire → Couche d'expérience → Groupe d'expériences → Expérience
Un laboratoire contient des couches d'expérience, chaque couche contient des groupes d'expériences et chaque groupe contient des expériences. Le trafic traverse d'abord les laboratoires non de base ; le laboratoire de base traite le trafic restant par défaut.
Lorsqu'une requête utilisateur arrive, le SDK appelle match_experiment avec un nom de scénario et un contexte de requête. PAI-Rec assigne l'utilisateur à une expérience et renvoie :
exp_id— l'ID de l'expérience à journaliser avec chaque événement utilisateur pour le calcul des métriquesParamètres de l'expérience — paires clé-valeur que votre système lit pour déterminer la variante d'algorithme à exécuter
Événements et métriques : Votre code journalise les événements de comportement utilisateur (clics, achats, etc.) et enregistre exp_id dans chaque événement. PAI-Rec agrège ces événements dans MaxCompute pour calculer les métriques d'expérience et générer des rapports de comparaison. Le champ exp_id permet de lier chaque événement de comportement à la bonne expérience lors de l'analyse.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Une instance PAI-Rec avec un ID d'instance et une région
Un ID AccessKey et un secret AccessKey (issus de votre compte Alibaba Cloud)
Un projet MaxCompute avec des accès en lecture et en écriture accordés à PAI-Rec
Un bucket Object Storage Service (OSS)
Étape 1 : Configurer les ressources
Se connecter à la console PAI-Rec
Dans la console PAI-Rec, cliquez sur Full-link Service dans le volet de navigation de gauche. Dans l'assistant Service Initialization qui s'affiche, configurez vos espaces de travail.
Notes de configuration :
Recherchez les espaces de travail existants depuis Platform for AI (PAI), DataWorks et MaxCompute dans leurs consoles respectives. Sur la page d'accueil de chaque produit, cliquez sur Console.
Créez un bucket OSS dans la console OSS avant de le configurer ici.
Accorder l'accès à MaxCompute
Sur la page Projects , recherchez le projet MaxCompute que vous souhaitez utiliser.
Si aucun projet n'apparaît, sélectionnez d'abord la région appropriée.
Dans la colonne Actions du projet, cliquez sur Manage. Accordez à PAI-Rec un accès direct et des autorisations d'écriture sur le projet MaxCompute.
Pour plus de détails, consultez Activation et initialisation du service.
Étape 2 : Créer un scénario
| Paramètre | Description |
|---|---|
| Scenario name | Nom du scénario de recommandation. Utilisez un nom qui reflète l'emplacement de la page (par exemple, homepage_feed). |
| Description | Description facultative du scénario. |
| Intended users | Sélectionnez les utilisateurs qui n'utilisent pas entièrement PAI-Rec. |
Configuration du trafic pour les systèmes gérés en interne :
Si vous disposez d'un système de recommandation géré en interne, commencez par router 10 % à 20 % du trafic du scénario vers PAI-Rec. Une fois que les résultats répondent aux attentes, augmentez progressivement la part de trafic.
Pour suivre séparément votre trafic géré en interne, attribuez-lui un code de trafic personnalisé. Enregistrez exp_id dans vos journaux de suivi d'événements pour chaque interaction utilisateur afin que PAI-Rec puisse attribuer les événements de comportement aux expériences lors du calcul des métriques.
Étape 3 : Configurer le test A/B
Avant de démarrer une expérience, confirmez les modifications à tester avec le chef de produit ou le chef de projet concerné.
Pour les définitions terminologiques, consultez Concepts de base.
Créer un laboratoire
Sélectionnez un environnement d'exécution et un scénario de recommandation.
Cliquez sur Create Lab .
Dans le panneau Create Lab , configurez les paramètres suivants :
| Paramètre | Description |
|---|---|
| Lab type | Base Lab (obligatoire) : gère le trafic qui ne correspond pas aux laboratoires non de base. Peut utiliser une logique de secours basée sur les articles populaires ou aléatoire. Non-base Lab (facultatif) : le trafic correspond d'abord ici ; utile pour les modèles complexes fonctionnant parallèlement à un modèle de base plus simple. |
| Bucketing method | Hashed UID-based Bucketing : segmente les utilisateurs par valeur de hachage de l'UID. UID-based Bucketing : segmente les utilisateurs par les derniers chiffres de l'UID. Condition-based Bucketing : segmente les utilisateurs par une expression clé-valeur telle que gender=man . |
| Buckets | Nombre total de segments dans ce laboratoire (par exemple, 100). |
| Traffic allocation | Numéros de segments attribués à ce laboratoire, dans la plage 0–99. |
| Layering | Couche d'expérience. Couches typiques : recall , filter , coarse_rank , rank . |
| Test users | Utilisateurs routés directement vers ce laboratoire sans mise en correspondance des segments. Saisissez manuellement les UID (séparés par des virgules) ou sélectionnez un User Group ID depuis la page de gestion des groupes d'utilisateurs. |
Créer un groupe d'expériences
Chaque couche d'expérience peut comporter plusieurs groupes d'expériences, et chaque groupe peut contenir plusieurs expériences. Utilisez des groupes distincts lorsque plusieurs ingénieurs doivent exécuter des expériences sur la même couche (par exemple, différents algorithmes de rappel) sans interférence mutuelle.
Groupe de test A/A (recommandé pour les nouvelles expériences) :
Pour valider que la configuration de votre expérience est impartiale, créez un groupe de test A/A avant d'exécuter des expériences réelles :
Sélectionnez 4 à 5 segments pour l'expérience.
Attribuez 2 segments à un groupe sans politique configurée. Exécutez ces segments en tant que test à blanc et surveillez les métriques clés.
Utilisez les deux groupes dont les métriques sont les plus similaires pour votre test A/B réel.
Paramètres supplémentaires du groupe d'expériences :
| Paramètre | Description |
|---|---|
| Filter by | Filtrez davantage les utilisateurs après la sélection des utilisateurs de test. Le filtrage par nouveaux utilisateurs contre utilisateurs existants donne des résultats de test plus complets. |
| Test users | Manually Enter : spécifiez les ID utilisateur pour exécuter d'abord les expériences, recueillir les commentaires, puis affiner. User Group ID : routez des groupes d'utilisateurs spécifiques vers des expériences spécifiques. Créez des groupes d'utilisateurs dans User Group Management sous Experiment Platform ; vous pouvez télécharger manuellement les ID utilisateur ou via Excel. |
Créer une expérience
Cliquez sur Create Experiment . Par défaut, une expérience de référence est créée en premier.
| Type d'expérience | Description |
|---|---|
| Baseline experiment | Le groupe témoin. Les utilisateurs sont assignés aléatoirement au groupe d'expérience ou au groupe témoin. |
| Normal experiment | Expériences supplémentaires ayant la même structure que la référence. Chacune sert de groupe de traitement. |
Stratégies d'allocation du trafic :
| Objectif | Stratégie |
|---|---|
| Minimiser les risques lors du lancement d'une nouvelle fonctionnalité | Envoyez une petite tranche de trafic vers la nouvelle version pour limiter l'impact sur les utilisateurs tout en recueillant des données dans les délais impartis. |
| Maximiser la vitesse du test | Répartissez le trafic uniformément entre les groupes pour collecter les résultats plus rapidement. |
| Optimiser le retour sur investissement (ROI) | Allouez plus de trafic au groupe d'expérience et conservez une petite tranche pour le groupe témoin. |
Après avoir configuré tous les paramètres, cliquez sur Save .
Étape 4 : Appeler le SDK
Les SDK Python et Java suivent le même schéma : initialisez un client avec vos identifiants et les détails de l'instance, appelez match_experiment avec un nom de scénario et un contexte utilisateur, puis lisez exp_id et les paramètres de l'expérience à partir du résultat.
Stockez exp_id dans chaque événement de comportement utilisateur que vous journalisez. PAI-Rec utilise ce champ pour attribuer les événements aux expériences lors du calcul des métriques.
SDK Python
Installation
Vous devez préparer un environnement Python et installer PyCharm pour exécuter le SDK.
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
Installez en utilisant la commande ci-dessus, et non via le gestionnaire de packages de PyCharm. Le package n'est pas open source et l'installateur de PyCharm peut provoquer des conflits. Si pip doit être mis à jour, effectuez la mise à jour avant l'installation. En cas de délai d'attente, exécutez à nouveau la commande.
Initialisation et appel
Stockez vos identifiants dans des variables d'environnement avant d'exécuter le code :
export ALIBABA_CLOUD_ACCESS_KEY_ID=<your-access-key-id>
export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<your-access-key-secret>
Ne codez jamais en dur les identifiants AccessKey dans votre code source. Lisez-les à partir des variables d'environnement au moment de l'exécution.
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'))
Remplacez les espaces réservés avant l'exécution :
| Espace réservé | Où le trouver |
|---|---|
<instance-id> |
Page Basic Information dans la console PAI-Rec |
<region-id> |
Page Basic Information dans la console PAI-Rec |
<scenario-name> |
Page Recommendation Scenarios dans la console PAI-Rec |
Sortie attendue :
Une exécution réussie affiche l'assignation de l'expérience et les valeurs des paramètres configurés pour cette expérience :
info exp_id=<exp_id> ...
exp_id <exp_id>
{'url': 'https://...', 'token': '...'}
https://...
...
Si une erreur KeyError se produit lors de la lecture des variables d'environnement, cliquez avec le bouton droit sur la configuration d'exécution dans PyCharm et vérifiez que les variables système sont chargées. Sinon, redémarrez le projet.
SDK Java
Ne codez jamais en dur les identifiants AccessKey dans votre code source. Lisez-les à partir des variables d'environnement au moment de l'exécution.
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"));
}
}
Étape 5 : Concevoir les métriques d'expérience
Avant de calculer les métriques, enregistrez une table de données MaxCompute et définissez ce qui doit être mesuré. Les analystes de données conçoivent généralement des métriques clés — telles que le taux de clics (CTR) et le taux de conversion (CVR) — ainsi que des métriques indispensables qui ne doivent pas régresser pendant l'expérience.
Enregistrer une table de données
Dans la console PAI-Rec, accédez à Metric Management > Data Registration . Associez une table MaxCompute à votre instance de test A/B. Définissez Data Table Name sur un nom qui reflète le contexte métier.
Sélectionnez une table contenant les champs requis. Pour les exigences relatives aux champs, consultez Enregistrement des données et configuration des champs .
Si votre projet MaxCompute ne dispose pas d'une table contenant tous les champs requis, créez-en une :
Connectez-vous à la console MaxCompute et créez une table de données.
Dans DataWorks, créez une table source pour les rapports d'expérience de test A/B dans MaxCompute.
Après l'enregistrement, la table apparaît dans la liste des tables de données. Cliquez sur View Fields dans la colonne Actions pour inspecter ou modifier les mappages de champs.
Types de métriques
PAI-Rec prend en charge trois catégories de métriques :
| Catégorie | Exemples | Quand l'utiliser |
|---|---|---|
| Métriques basées sur des ratios | Taux de conversion des clics, CTR, CVR, taux de rétention à J+1 | Comparer les taux entre les groupes ; le plus courant pour les expériences de recommandation |
| Métriques par utilisateur | Nombre moyen de clics par utilisateur, panier moyen (AOV) | Mesurer l'impact par utilisateur plutôt que les taux agrégés |
| Métriques absolues | Total des clics, montant total des commandes | À comparer uniquement lorsque les groupes de test ont le même nombre d'utilisateurs |
De plus, faites la distinction entre :
Métriques clés (KPI) : les principaux résultats que l'expérience vise à améliorer
Métriques indispensables : métriques qui doivent être observées pendant un test ; la capacité testée ne doit pas les affecter négativement
Configurer les métriques
Sur la page Metric Configurations , cliquez sur Metrics . Définissez les paramètres Recommendation Scenario et Metric Timeliness.
Les métriques à dimension unique sont calculées à partir d'une seule agrégation : count, unique count, sum ou average. Par exemple, les clics quotidiens et les visites quotidiennes sont des métriques à dimension unique.
Dans le paramètre Metric Definition :
Page Views : compte chaque visite de page
Unique Visitors : compte chaque utilisateur une seule fois, lors de la première visite
Les métriques dérivées combinent plusieurs métriques à dimension unique. Par exemple :
CTR = Daily clicks / Daily visits
Ajoutez d'abord les clics quotidiens et les visites quotidiennes en tant que métriques à dimension unique, puis définissez le CTR comme une métrique dérivée en utilisant la formule ci-dessus.
Configurer les groupes de métriques
Regroupez les métriques connexes pour les calculer et les comparer en tant qu'ensemble.
Dans l'onglet Metric Groups , créez un groupe de métriques et définissez le paramètre Metric Selection pour inclure les métriques souhaitées.
Cliquez sur Calculate dans la colonne Actions pour déclencher le calcul des métriques.
Étape 6 : Calculer les métriques et générer des rapports
Calculer les métriques
Dans l'onglet Metric Groups de la page Metric Configurations , cliquez sur Calculate dans la colonne Actions . Sélectionnez les métriques à calculer dans le panneau qui s'affiche.
Suivez la progression des tâches sur la page Jobs . Lorsque toutes les tâches sont terminées, le statut passe à Succeeded.
Afficher les rapports
Sur la page Performance Reports sous Experiment Platform, configurez les paramètres et cliquez sur Start Analysis .
Detail Data : affiche les différences de métriques entre l'expérience de référence et les expériences normales
Trend Analysis : montre l'évolution des métriques sélectionnées sur la période de l'expérience
Étapes suivantes
Activation et initialisation du service — configuration détaillée des espaces de travail
Concepts de base — référence terminologique des tests A/B PAI-Rec
Enregistrement des données et configuration des champs — champs requis pour les tables de données MaxCompute