Création d'une tâche d'inférence par lots (AWS SDK) - 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 (AWS SDK)

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, l'Amazon Resource Name (ARN) de la version de votre solution et l'ARN du rôle de service IAM 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://<name of your S3 bucket>/<folder name>/<input JSON file name>.json ets3://<name of your S3 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 ARN de filtre 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 le JSON d'entrée. Pour plus d’informations, consultez 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://<name of your S3 bucket>/<folder name>/<input JSON file name>.json"}}, jobOutput = {"s3DataDestination": {"path": "s3://<name of your S3 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://<name of your S3 bucket>/<folder name>/<input JSON file name>.json"}}, jobOutput = {"s3DataDestination": {"path": "s3://<name of your S3 bucket>/<output folder name>/"}} )