Création d'une tâche d'inférence par lots - Amazon Personalize

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Création d'une tâche d'inférence par lots

Créez une tâche d'inférence par lots pour obtenir des recommandations d'articles par lots pour les utilisateurs en fonction des données d'entrée d'Amazon S3. Les données d'entrée peuvent être une liste d'utilisateurs ou d'éléments (ou les deux) au JSON format. Vous pouvez créer une tâche d'inférence par lots à l'aide de la console Amazon Personalize, du AWS Command Line Interface (AWS CLI) ou AWS SDKs.

Lorsque vous créez une tâche d'inférence par lots, vous spécifiez les chemins Amazon S3 vers vos emplacements d'entrée et de sortie. Amazon S3 est basé sur un préfixe. Si vous fournissez un préfixe pour l'emplacement des données d'entrée, Amazon Personalize utilise tous les fichiers correspondant à ce préfixe comme données d'entrée. Par exemple, si vous fournissez s3://amzn-s3-demo-bucket/folderName un dossier dont le chemin est défini par le nom de compartiments3://amzn-s3-demo-bucket/folderName_test, Amazon Personalize utilise tous les fichiers des deux dossiers comme données d'entrée. Pour utiliser uniquement les fichiers d'un dossier spécifique comme données d'entrée, terminez le chemin Amazon S3 par un délimiteur de préfixe, tel que / : s3://amzn-s3-demo-bucket/folderName/ Pour plus d'informations sur la façon dont Amazon S3 organise les objets, consultez Organisation, listage et utilisation de vos objets.

Pour plus d'informations sur le flux de travail par lots dans Amazon Personalize, notamment les exigences en matière d'autorisations, la notation des recommandations, ainsi que la préparation et l'importation des données d'entrée, consultezObtenir des recommandations d'articles par lots grâce à des ressources personnalisées.

Création d'une tâche d'inférence par lots (console)

Une fois que vous avez terminéPréparation des données d'entrée pour les recommandations par lots, vous êtes prêt à créer une tâche d'inférence par lots. Cette procédure suppose que vous avez déjà créé une solution et une version de solution (modèle entraîné).

Pour créer une tâche d'inférence par lots (console)
  1. Ouvrez la console Amazon Personalize https://console.aws.amazon.com/personalize/chez vous et connectez-vous à votre compte.

  2. Sur la page Groupes de jeux de données, choisissez votre groupe de jeux de données.

  3. Dans le volet de navigation, sous Ressources personnalisées, choisissez Batch inference jobs.

  4. Choisissez Create batch inference job (Créer une tâche d'inférence par lots).

  5. Choisissez le type de tâche d'inférence par lots.

    • Pour générer des recommandations d'articles sans thèmes, choisissez Recommandations d'articles.

    • Si vous utilisez la recette Similar-Items et que vous souhaitez ajouter des thèmes descriptifs à des groupes d'articles similaires, choisissez Recommandations thématiques avec le générateur de contenu. Pour générer des thèmes, vous devez disposer d'un jeu de données Items contenant des données de nom d'élément et des données textuelles. Pour de plus amples informations, veuillez consulter Recommandations par lots avec des thèmes issus du générateur de contenu.

  6. Dans Batch inference job details (Détails de la tâche d'inférence par lots), dans Batch inference job name (Nom de la tâche d'inférence par lots), spécifiez un nom pour votre tâche d'inférence par lots.

  7. Pour Solution, choisissez la solution, puis choisissez l'ID de version de solution que vous souhaitez utiliser pour générer les recommandations.

  8. Pour Nombre de résultats, spécifiez éventuellement le nombre de recommandations pour chaque ligne de données d'entrée. La valeur par défaut est 25.

  9. Si votre traitement par lots génère des recommandations avec des thèmes, dans Détails des recommandations thématiques, choisissez la colonne contenant les noms ou les titres des éléments de votre jeu de données Items. Ces données peuvent aider à générer des thèmes plus pertinents. Pour de plus amples informations, veuillez consulter Recommandations par lots avec des thèmes issus du générateur de contenu.

  10. Dans Source d'entrée, spécifiez le chemin Amazon S3 vers votre fichier d'entrée.

    Utilisez la syntaxe suivante : s3://amzn-s3-demo-bucket/<folder name>/<input JSON file name>.json

    Vos données d'entrée doivent être au format adapté à la recette utilisée par votre solution. Pour des exemples de données d'entrée, voirExemples d'entrée et de sortie JSON de tâches d'inférence par lots.

  11. Pour la clé de déchiffrement, si vous utilisez votre propre AWS KMS clé pour le chiffrement des compartiments, spécifiez le nom de ressource Amazon (ARN) de votre clé. Amazon Personalize doit être autorisé à utiliser votre clé. Pour plus d'informations sur l'octroi d'autorisations, consultezAutoriser Amazon Personalize à utiliser votre AWS KMS clé.

  12. Dans Destination de sortie, spécifiez le chemin d'accès à votre emplacement de sortie. Nous vous recommandons d'utiliser un autre emplacement pour vos données de sortie (soit un dossier, soit un autre compartiment Amazon S3).

    Utilisez la syntaxe suivante : s3://amzn-s3-demo-bucket/<output folder name>/

  13. Pour la clé de chiffrement, si vous utilisez votre propre AWS KMS clé pour le chiffrement, spécifiez ARN celle de votre clé. Amazon Personalize doit être autorisé à utiliser votre clé. Pour plus d'informations sur l'octroi d'autorisations, consultezAutoriser Amazon Personalize à utiliser votre AWS KMS clé.

  14. Pour le rôle IAM de service, choisissez le rôle IAM de service que vous avez créé pour Amazon Personalize lors de la configuration. Ce rôle doit avoir un accès en lecture et en écriture à vos compartiments Amazon S3 d'entrée et de sortie respectivement.

  15. Dans Filtres, choisissez éventuellement un filtre pour appliquer un filtre aux recommandations par lots. Si votre filtre utilise des paramètres d'espace réservé, assurez-vous que les valeurs des paramètres sont incluses dans votre saisieJSON. Pour de plus amples informations, veuillez consulter Fournir des valeurs de filtre dans votre JSON d'entrée.

  16. Pour les balises, ajoutez éventuellement des balises. Pour plus d'informations sur le balisage des ressources Amazon Personalize, consultezMarquer les ressources Amazon Personalize.

  17. Choisissez Create batch inference job (Créer une tâche d'inférence par lots). La création d'une tâche d'inférence par lots démarre et la page Batch inference jobs (Tâches d'inférence par lots) apparaît avec la section Batch inference job detail (Détails de la tâche d'inférence par lots) affichée.

    Lorsque le statut de la tâche d'inférence par lots passe à Active, vous pouvez récupérer le résultat de la tâche dans le compartiment de sortie Amazon S3 désigné. Le nom du fichier de sortie est au format input-name.out.

Création d'une tâche d'inférence par lots ()AWS CLI

Une fois que vous avez terminéPréparation des données d'entrée pour les recommandations par lots, vous êtes prêt à créer une tâche d'inférence par lots avec l'CreateBatchInferenceJobopération.

Création d'une tâche d'inférence par lots

Vous pouvez utiliser la create-batch-inference-job commande pour créer une tâche d'inférence par lots. Spécifiez un nom de tâche, remplacez-le Solution version ARN par le nom de ressource Amazon (ARN) de la version de votre solution et remplacez le IAM service role ARN par le rôle ARN de IAM service que vous avez créé pour Amazon Personalize lors de la configuration. Ce rôle doit avoir un accès en lecture et en écriture à vos compartiments Amazon S3 d'entrée et de sortie respectivement. Fournissez éventuellement un filtre ARN pour filtrer les recommandations. Si votre filtre utilise des paramètres d'espace réservé, assurez-vous que les valeurs des paramètres sont incluses dans votre saisieJSON. Pour de plus amples informations, veuillez consulter Filtrer les recommandations par lots et les segments d'utilisateurs (ressources personnalisées).

Remplacez S3 input path et S3 output path par le chemin Amazon S3 menant à votre fichier d'entrée et à votre emplacement de sortie. Nous vous recommandons d'utiliser un autre emplacement pour vos données de sortie (soit un dossier, soit un autre compartiment Amazon S3). Utilisez la syntaxe suivante pour les emplacements d'entrée et de sortie : s3://amzn-s3-demo-bucket/<folder name>/<input JSON file name>.json ets3://amzn-s3-demo-bucket/<output folder name>/.

L'exemple inclut les itemExplorationConfig hyperparamètres facultatifs spécifiques à la recette de personnalisation utilisateur : et. explorationWeight explorationItemAgeCutOff Incluez éventuellement explorationWeight des explorationItemAgeCutOff valeurs et pour configurer l'exploration. Pour de plus amples informations, veuillez consulter Recette de personnalisation par l'utilisateur.

aws personalize create-batch-inference-job \ --job-name Batch job name \ --solution-version-arn Solution version ARN \ --filter-arn Filter ARN \ --job-input s3DataSource={path=s3://S3 input path} \ --job-output s3DataDestination={path=s3://S3 output path} \ --role-arn IAM service role ARN \ --batch-inference-job-config "{\"itemExplorationConfig\":{\"explorationWeight\":\"0.3\",\"explorationItemAgeCutOff\":\"30\"}}"

Création d'une tâche d'inférence par lots qui génère des thèmes

Pour générer des thèmes pour des éléments similaires, vous devez utiliser la recette Similar-Items et votre jeu de données Items doit comporter un champ textuel et une colonne de données de nom d'élément. Pour plus d'informations sur les recommandations avec des thèmes, consultezRecommandations par lots avec des thèmes issus du générateur de contenu.

Le code suivant crée une tâche d'inférence par lots qui génère des recommandations avec des thèmes. Laissez le batch-inference-job-mode set àTHEME_GENERATION. COLUMN_NAMERemplacez-le par le nom de la colonne qui contient les données relatives au nom de l'article.

aws personalize create-batch-inference-job \ --job-name Themed batch job name \ --solution-version-arn Solution version ARN \ --filter-arn Filter ARN \ --job-input s3DataSource={path=s3://S3 input path} \ --job-output s3DataDestination={path=s3://S3 output path} \ --role-arn IAM service role ARN \ --batch-inference-job-mode THEME_GENERATION \ --theme-generation-config "{\"fieldsForThemeGeneration\": {\"itemName\":\"COLUMN_NAME\"}}"

Création d'une tâche d'inférence par lots ()AWS SDKs

Une fois que vous avez terminéPréparation des données d'entrée pour les recommandations par lots, vous êtes prêt à créer une tâche d'inférence par lots avec l'CreateBatchInferenceJobopération.

Création d'une tâche d'inférence par lots

Vous pouvez utiliser le code suivant pour créer une tâche d'inférence par lots. Spécifiez le nom de la tâche, le nom de ressource Amazon (ARN) de la version de votre solution et le rôle ARN de IAM service que vous avez créé pour Amazon Personalize lors de la configuration. Ce rôle doit disposer d'un accès en lecture et en écriture à vos compartiments Amazon S3 d'entrée et de sortie.

Nous vous recommandons d'utiliser un autre emplacement pour vos données de sortie (soit un dossier, soit un autre compartiment Amazon S3). Utilisez la syntaxe suivante pour les emplacements d'entrée et de sortie : s3:/amzn-s3-demo-bucket/<folder name>/<input JSON file name>.json ets3://amzn-s3-demo-bucket/<output folder name>/.

PournumResults, spécifiez le nombre d'articles que vous souhaitez qu'Amazon Personalize prédise pour chaque ligne de données d'entrée. Fournissez éventuellement un filtre ARN pour filtrer les recommandations. Si votre filtre utilise des paramètres d'espace réservé, assurez-vous que les valeurs des paramètres sont incluses dans votre saisieJSON. Pour de plus amples informations, veuillez consulter Filtrer les recommandations par lots et les segments d'utilisateurs (ressources personnalisées).

SDK for Python (Boto3)

L'exemple inclut les itemExplorationConfig hyperparamètres facultatifs spécifiques à la recette de personnalisation utilisateur : et. explorationWeight explorationItemAgeCutOff Incluez éventuellement explorationWeight des explorationItemAgeCutOff valeurs et pour configurer l'exploration. Pour de plus amples informations, veuillez consulter Recette de personnalisation par l'utilisateur.

import boto3 personalize_rec = boto3.client(service_name='personalize') personalize_rec.create_batch_inference_job ( solutionVersionArn = "Solution version ARN", jobName = "Batch job name", roleArn = "IAM service role ARN", filterArn = "Filter ARN", batchInferenceJobConfig = { # optional USER_PERSONALIZATION recipe hyperparameters "itemExplorationConfig": { "explorationWeight": "0.3", "explorationItemAgeCutOff": "30" } }, jobInput = {"s3DataSource": {"path": "s3://amzn-s3-demo-bucket/<folder name>/<input JSON file name>.json"}}, jobOutput = {"s3DataDestination": {"path": "s3:/amzn-s3-demo-bucket/<output folder name>/"}} )
SDK for Java 2.x

L'exemple inclut les itemExplorationConfig champs facultatifs spécifiques à la recette de personnalisation utilisateur : explorationWeight et. explorationItemAgeCutOff Incluez éventuellement explorationWeight des explorationItemAgeCutOff valeurs et pour configurer l'exploration. Pour de plus amples informations, veuillez consulter Recette de personnalisation par l'utilisateur.

public static String createPersonalizeBatchInferenceJob(PersonalizeClient personalizeClient, String solutionVersionArn, String jobName, String filterArn, String s3InputDataSourcePath, String s3DataDestinationPath, String roleArn, String explorationWeight, String explorationItemAgeCutOff) { long waitInMilliseconds = 60 * 1000; String status; String batchInferenceJobArn; try { // Set up data input and output parameters. S3DataConfig inputSource = S3DataConfig.builder() .path(s3InputDataSourcePath) .build(); S3DataConfig outputDestination = S3DataConfig.builder() .path(s3DataDestinationPath) .build(); BatchInferenceJobInput jobInput = BatchInferenceJobInput.builder() .s3DataSource(inputSource) .build(); BatchInferenceJobOutput jobOutputLocation = BatchInferenceJobOutput.builder() .s3DataDestination(outputDestination) .build(); // Optional code to build the User-Personalization specific item exploration config. HashMap<String, String> explorationConfig = new HashMap<>(); explorationConfig.put("explorationWeight", explorationWeight); explorationConfig.put("explorationItemAgeCutOff", explorationItemAgeCutOff); BatchInferenceJobConfig jobConfig = BatchInferenceJobConfig.builder() .itemExplorationConfig(explorationConfig) .build(); // End optional User-Personalization recipe specific code. CreateBatchInferenceJobRequest createBatchInferenceJobRequest = CreateBatchInferenceJobRequest.builder() .solutionVersionArn(solutionVersionArn) .jobInput(jobInput) .jobOutput(jobOutputLocation) .jobName(jobName) .filterArn(filterArn) .roleArn(roleArn) .batchInferenceJobConfig(jobConfig) // Optional .build(); batchInferenceJobArn = personalizeClient.createBatchInferenceJob(createBatchInferenceJobRequest) .batchInferenceJobArn(); DescribeBatchInferenceJobRequest describeBatchInferenceJobRequest = DescribeBatchInferenceJobRequest.builder() .batchInferenceJobArn(batchInferenceJobArn) .build(); long maxTime = Instant.now().getEpochSecond() + 3 * 60 * 60; // wait until the batch inference job is complete. while (Instant.now().getEpochSecond() < maxTime) { BatchInferenceJob batchInferenceJob = personalizeClient .describeBatchInferenceJob(describeBatchInferenceJobRequest) .batchInferenceJob(); status = batchInferenceJob.status(); System.out.println("Batch inference job status: " + status); if (status.equals("ACTIVE") || status.equals("CREATE FAILED")) { break; } try { Thread.sleep(waitInMilliseconds); } catch (InterruptedException e) { System.out.println(e.getMessage()); } } return batchInferenceJobArn; } catch (PersonalizeException e) { System.out.println(e.awsErrorDetails().errorMessage()); } return ""; }
SDK for JavaScript v3
// Get service clients module and commands using ES6 syntax. import { CreateBatchInferenceJobCommand } from "@aws-sdk/client-personalize"; import { personalizeClient } from "./libs/personalizeClients.js"; // Or, create the client here. // const personalizeClient = new PersonalizeClient({ region: "REGION"}); // Set the batch inference job's parameters. export const createBatchInferenceJobParam = { jobName: 'JOB_NAME', jobInput: { /* required */ s3DataSource: { /* required */ path: 'INPUT_PATH', /* required */ // kmsKeyArn: 'INPUT_KMS_KEY_ARN' /* optional */' } }, jobOutput: { /* required */ s3DataDestination: { /* required */ path: 'OUTPUT_PATH', /* required */ // kmsKeyArn: 'OUTPUT_KMS_KEY_ARN' /* optional */' } }, roleArn: 'ROLE_ARN', /* required */ solutionVersionArn: 'SOLUTION_VERSION_ARN', /* required */ numResults: 20 /* optional integer*/ }; export const run = async () => { try { const response = await personalizeClient.send(new CreateBatchInferenceJobCommand(createBatchInferenceJobParam)); console.log("Success", response); return response; // For unit tests. } catch (err) { console.log("Error", err); } }; run();

Le traitement de la tâche par lots peut prendre un certain temps. Vous pouvez vérifier l'état d'une tâche en appelant DescribeBatchInferenceJob et en transmettant un batchRecommendationsJobArn comme paramètre d'entrée. Vous pouvez également répertorier toutes les tâches d'inférence par lots Amazon Personalize de votre AWS environnement en appelantListBatchInferenceJobs.

Création d'une tâche d'inférence par lots qui génère des thèmes

Pour générer des thèmes pour des éléments similaires, vous devez utiliser la recette Similar-Items et votre jeu de données Items doit comporter un champ textuel et une colonne de données de nom d'élément. Pour plus d'informations sur les recommandations avec des thèmes, consultezRecommandations par lots avec des thèmes issus du générateur de contenu.

Le code suivant crée une tâche d'inférence par lots qui génère des recommandations avec des thèmes. Laissez le batchInferenceJobMode set à"THEME_GENERATION". COLUMNN_NAMERemplacez-le par le nom de la colonne qui contient les données relatives au nom de l'article.

import boto3 personalize_rec = boto3.client(service_name='personalize') personalize_rec.create_batch_inference_job ( solutionVersionArn = "Solution version ARN", jobName = "Batch job name", roleArn = "IAM service role ARN", filterArn = "Filter ARN", batchInferenceJobMode = "THEME_GENERATION", themeGenerationConfig = { "fieldsForThemeGeneration": { "itemName": "COLUMN_NAME" } }, jobInput = {"s3DataSource": {"path": "s3://amzn-s3-demo-bucket/<folder name>/<input JSON file name>.json"}}, jobOutput = {"s3DataDestination": {"path": "s3://amzn-s3-demo-bucket/<output folder name>/"}} )