Erstellen eines Batch-Inferenzauftrags (AWS SDKs) - Amazon Personalize

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Erstellen eines Batch-Inferenzauftrags (AWS SDKs)

Nachdem Sie abgeschlossen habenVorbereiten der Eingabedaten für Batch-Empfehlungen, können Sie mit der Operation einen Batch-Inferenzauftrag erstellenCreateBatchInferenceJob.

Erstellen eines Batch-Inferenzauftrags

Sie können den folgenden Code verwenden, um einen Batch-Inferenzauftrag zu erstellen. Geben Sie einen Auftragsnamen, den Amazon-Ressourcennamen (ARN) Ihrer Lösungsversion und den ARN der IAM-Servicerolle an, die Sie während der Einrichtung für Amazon Personalize erstellt haben. Diese Rolle muss über Lese- und Schreibzugriff auf Ihre Amazon S3-Eingabe- und -Ausgabe-Buckets verfügen.

Wir empfehlen, einen anderen Speicherort für Ihre Ausgabedaten zu verwenden (entweder einen Ordner oder einen anderen Amazon S3-Bucket). Verwenden Sie die folgende Syntax für Eingabe- und Ausgabespeicherorte: s3://<name of your S3 bucket>/<folder name>/<input JSON file name>.json und s3://<name of your S3 bucket>/<output folder name>/.

Geben Sie für die Anzahl der Elemente annumResults, die Amazon Personalize für jede Zeile der Eingabedaten vorhersagen soll. Geben Sie optional einen Filter-ARN an, um Empfehlungen zu filtern. Wenn Ihr Filter Platzhalterparameter verwendet, stellen Sie sicher, dass die Werte für die Parameter in Ihrem Eingabe-JSON enthalten sind. Weitere Informationen finden Sie unter Filtern von Batch-Empfehlungen und Benutzersegmenten (benutzerdefinierte Ressourcen).

SDK for Python (Boto3)

Das Beispiel enthält optionale itemExplorationConfig Hyperparameter für das User-Personalization-Rezept: explorationWeight und explorationItemAgeCutOff. Fügen Sie optional - explorationWeight und -explorationItemAgeCutOffWerte ein, um die Untersuchung zu konfigurieren. Weitere Informationen finden Sie unter Rezept für Benutzerpersonalisierung.

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

Das Beispiel enthält optionale für das User-Personalization-Rezept spezifische itemExplorationConfig Felder: explorationWeight und explorationItemAgeCutOff. Fügen Sie optional - explorationWeight und -explorationItemAgeCutOffWerte ein, um die Untersuchung zu konfigurieren. Weitere Informationen finden Sie unter Rezept für Benutzerpersonalisierung.

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();

Die Verarbeitung des Batchauftrags kann eine Weile dauern. Sie können den Status eines Auftrags überprüfen, indem Sie DescribeBatchInferenceJob aufrufen und als Eingabeparameter einen batchRecommendationsJobArn übergeben. Sie können auch alle Amazon-Personalize-Stapelinferenzaufträge in Ihrer AWS Umgebung auflisten, indem Sie aufrufenListBatchInferenceJobs.

Erstellen eines Batch-Inferenzauftrags, der Designs generiert

Um Designs für ähnliche Elemente zu generieren, müssen Sie das Rezept Ähnliche Elemente verwenden und Ihr Elementdatensatz muss ein Textfeld und eine Spalte mit Elementnamendaten haben. Weitere Informationen zu Empfehlungen für Designs finden Sie unter Batch-Empfehlungen mit Themen aus dem Content Generator.

Der folgende Code erstellt einen Batch-Inferenzauftrag, der Empfehlungen mit Designs generiert. Behalten Sie den batchInferenceJobMode Wert bei"THEME_GENERATION". Ersetzen Sie COLUMNN_NAME durch den Namen der Spalte, in der Ihre Elementnamendaten gespeichert sind.

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>/"}} )