Einen Batch-Inferenzjob erstellen - 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.

Einen Batch-Inferenzjob erstellen

Erstellen Sie einen Batch-Inferenzjob, um anhand von Eingabedaten aus Amazon S3 Empfehlungen für Batch-Artikel für Benutzer zu erhalten. Bei den Eingabedaten kann es sich um eine Liste von Benutzern oder um Elemente (oder beides) handelnJSON. Sie können einen Batch-Inferenzjob mit der Amazon Personalize Personalize-Konsole, dem AWS Command Line Interface (AWS CLI) oder erstellen. AWS SDKs

Wenn Sie einen Batch-Inferenz-Job erstellen, geben Sie die Amazon S3 S3-Pfade zu Ihren Eingabe- und Ausgabespeicherorten an. Amazon S3 basiert auf Präfixen. Wenn Sie ein Präfix für den Speicherort der Eingabedaten angeben, verwendet Amazon Personalize alle Dateien, die diesem Präfix entsprechen, als Eingabedaten. Wenn Sie beispielsweise einen Ordner mit einem Pfad von angeben s3://amzn-s3-demo-bucket/folderName und Ihr Bucket auch über einen Ordner verfügts3://amzn-s3-demo-bucket/folderName_test, verwendet Amazon Personalize alle Dateien in beiden Ordnern als Eingabedaten. Um nur die Dateien in einem bestimmten Ordner als Eingabedaten zu verwenden, beenden Sie den Amazon S3-Pfad mit einem Präfix-Trennzeichen, z. B./: s3://amzn-s3-demo-bucket/folderName/ Weitere Informationen darüber, wie Amazon S3 Objekte organisiert, auflisten und mit ihnen arbeiten.

Weitere Informationen zum Batch-Workflow in Amazon Personalize, einschließlich Berechtigungsanforderungen, Empfehlungsbewertung und Vorbereitung und Import von Eingabedaten, finden Sie unterEmpfehlungen für Chargenartikel mit benutzerdefinierten Ressourcen abrufen.

Einen Batch-Inferenzjob erstellen (Konsole)

Nachdem Sie den Vorgang abgeschlossen habenVorbereiten der Eingabedaten für Batch-Empfehlungen, können Sie einen Batch-Inferenzjob erstellen. Bei diesem Verfahren wird davon ausgegangen, dass Sie bereits eine Lösung und eine Lösungsversion (trainiertes Modell) erstellt haben.

So erstellen Sie einen Batch-Inferenzjob (Konsole)
  1. Öffnen Sie zu https://console.aws.amazon.com/personalize/Hause die Amazon Personalize Personalize-Konsole und melden Sie sich bei Ihrem Konto an.

  2. Wählen Sie auf der Seite Datensatzgruppen Ihre Datensatzgruppe aus.

  3. Wählen Sie im Navigationsbereich unter Benutzerdefinierte Ressourcen die Option Batch-Inferenzjobs aus.

  4. Wählen Sie Create batch inference job (Batch-Inferenzauftrag erstellen).

  5. Wählen Sie den Auftragstyp Batch-Inferenz aus.

    • Um Artikelempfehlungen ohne Themen zu generieren, wählen Sie Artikelempfehlungen.

    • Wenn du das Rezept für ähnliche Artikel verwendest und Gruppen ähnlicher Artikel beschreibende Themen hinzufügen möchtest, wähle Thematische Empfehlungen mit Inhaltsgenerator. Um Themen zu generieren, benötigen Sie einen Artikeldatensatz mit Artikelnamen und Textdaten. Weitere Informationen finden Sie unter Batch-Empfehlungen mit Themen aus dem Content Generator.

  6. Geben Sie unter Batch inference job details (Batch-Inferenzauftragsdetails) unter Batch inference job name (Batch-Inferenzauftragsname) einen Namen für den Batch-Inferenzauftrag an.

  7. Wählen Sie unter Lösung die Lösung und dann die Versions-ID der Lösung aus, die Sie zum Generieren der Empfehlungen verwenden möchten.

  8. Geben Sie unter Anzahl der Ergebnisse optional die Anzahl der Empfehlungen für jede Zeile mit Eingabedaten an. Der Standardwert ist 25.

  9. Wenn Ihr Batch-Job Empfehlungen mit Themen generiert, wählen Sie unter Details zu thematischen Empfehlungen die Spalte mit den Namen oder Titeln für die Elemente in Ihrem Artikel-Datensatz aus. Diese Daten können dazu beitragen, relevantere Themen zu generieren. Weitere Informationen finden Sie unter Batch-Empfehlungen mit Themen aus dem Content Generator.

  10. Geben Sie unter Eingabequelle den Amazon S3 S3-Pfad zu Ihrer Eingabedatei an.

    Verwenden Sie die folgende Syntax: s3://amzn-s3-demo-bucket/<folder name>/<input JSON file name>.json

    Ihre Eingabedaten müssen das richtige Format für das in Ihrer Lösung verwendete Rezept haben. Beispiele für Eingabedaten finden Sie unterBeispiele für die Eingabe und Ausgabe JSON von Batch-Inferenz-Jobs.

  11. Wenn Sie für den Entschlüsselungsschlüssel Ihren eigenen AWS KMS Schlüssel für die Bucket-Verschlüsselung verwenden, geben Sie den Amazon-Ressourcennamen (ARN) Ihres Schlüssels an. Amazon Personalize benötigt die Erlaubnis, Ihren Schlüssel zu verwenden. Informationen zur Erteilung von Berechtigungen finden Sie unterAmazon Personalize die Erlaubnis geben, Ihren AWS KMS Schlüssel zu verwenden.

  12. Geben Sie im Ausgabeziel den Pfad zu Ihrem Ausgabespeicherort an. Wir empfehlen, einen anderen Speicherort für Ihre Ausgabedaten zu verwenden (entweder einen Ordner oder einen anderen Amazon S3 S3-Bucket).

    Verwenden Sie die folgende Syntax: s3://amzn-s3-demo-bucket/<output folder name>/

  13. Wenn Sie unter Verschlüsselungsschlüssel Ihren eigenen AWS KMS Schlüssel für die Verschlüsselung verwenden, geben Sie den ARN Ihres Schlüssels an. Amazon Personalize benötigt die Erlaubnis, Ihren Schlüssel zu verwenden. Informationen zur Erteilung von Berechtigungen finden Sie unterAmazon Personalize die Erlaubnis geben, Ihren AWS KMS Schlüssel zu verwenden.

  14. Wählen Sie als IAM Servicerolle die IAM Servicerolle aus, die Sie bei der Einrichtung für Amazon Personalize erstellt haben. Diese Rolle muss Lese- und Schreibzugriff auf Ihre Amazon S3 S3-Eingabe- bzw. Ausgabe-Buckets haben.

  15. Wählen Sie unter Filter optional einen Filter aus, um einen Filter auf die Batch-Empfehlungen anzuwenden. Wenn Ihr Filter Platzhalterparameter verwendet, stellen Sie sicher, dass die Werte für die Parameter in Ihrer Eingabe JSON enthalten sind. Weitere Informationen finden Sie unter Bereitstellung von Filterwerten in Ihrer Eingabe JSON.

  16. Fügen Sie für Tags optional beliebige Tags hinzu. Weitere Informationen zum Taggen von Amazon Personalize Personalize-Ressourcen finden Sie unter. Taggen von Amazon Personalize Personalize-Ressourcen

  17. Wählen Sie Create batch inference job (Batch-Inferenzauftrag erstellen). Die Erstellung von Batch-Inferenzaufträgen wird gestartet, und die Seite Batch inference jobs (Batch-Inferenzaufträge) wird mit dem angezeigten Bereich Batch inference job detail (Batch-Inferenzauftrauftragsdetails) angezeigt.

    Wenn sich der Status des Batch-Inferenz-Jobs auf Aktiv ändert, können Sie die Ausgabe des Jobs aus dem angegebenen Amazon S3 S3-Ausgabe-Bucket abrufen. Der Name der Ausgabedatei entspricht dem Format input-name.out.

Einen Batch-Inferenz-Job erstellen ()AWS CLI

Nachdem Sie den Vorgang abgeschlossen habenVorbereiten der Eingabedaten für Batch-Empfehlungen, können Sie mit dem CreateBatchInferenceJob Vorgang einen Batch-Inferenzjob erstellen.

Einen Batch-Inferenzjob erstellen

Sie können den create-batch-inference-job Befehl verwenden, um einen Batch-Inferenzjob zu erstellen. Geben Sie einen Jobnamen an, Solution version ARN ersetzen Sie ihn durch den Amazon-Ressourcennamen (ARN) Ihrer Lösungsversion und ersetzen Sie den durch den IAM service role ARN Namen ARN der IAM Servicerolle, die Sie bei der Einrichtung für Amazon Personalize erstellt haben. Diese Rolle muss Lese- und Schreibzugriff auf Ihre Amazon S3 S3-Eingabe- bzw. Ausgabe-Buckets haben. Stellen Sie optional einen Filter ARN zum Filtern von Empfehlungen bereit. Wenn Ihr Filter Platzhalterparameter verwendet, stellen Sie sicher, dass die Werte für die Parameter in Ihrer Eingabe JSON enthalten sind. Weitere Informationen finden Sie unter Filtern von Batch-Empfehlungen und Benutzersegmenten (benutzerdefinierte Ressourcen).

Ersetzen Sie S3 input path und S3 output path durch den Amazon S3-Pfad zu Ihrer Eingabedatei und Ihren Ausgabespeicherorten. Wir empfehlen, einen anderen Speicherort für Ihre Ausgabedaten zu verwenden (entweder einen Ordner oder einen anderen Amazon S3 S3-Bucket). Verwenden Sie die folgende Syntax für Eingabe- und Ausgabespeicherorte: s3://amzn-s3-demo-bucket/<folder name>/<input JSON file name>.json unds3://amzn-s3-demo-bucket/<output folder name>/.

Das Beispiel enthält optionale, rezeptspezifische itemExplorationConfig Hyperparameter für die Benutzerpersonalisierung: und. explorationWeight explorationItemAgeCutOff Fügen Sie optional explorationItemAgeCutOff Werte hinzu, um explorationWeight die Erkundung zu konfigurieren. Weitere Informationen finden Sie unter Rezept für Benutzerpersonalisierung.

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\"}}"

Erstellen eines Batch-Inferenzjobs, der Themen generiert

Um Themen für ähnliche Artikel zu generieren, müssen Sie das Rezept für ähnliche Artikel verwenden und Ihr Artikeldatensatz muss ein Textfeld und eine Spalte mit Artikelnamendaten enthalten. Weitere Informationen zu Empfehlungen mit Themen finden Sie unter. Batch-Empfehlungen mit Themen aus dem Content Generator

Der folgende Code erstellt einen Batch-Inferenzjob, der Empfehlungen mit Themen generiert. Belassen Sie das batch-inference-job-mode Set auf. THEME_GENERATION COLUMN_NAMEErsetzen Sie es durch den Namen der Spalte, in der Ihre Artikelnamendaten gespeichert sind.

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\"}}"

Einen Batch-Inferenzjob erstellen ()AWS SDKs

Nachdem Sie den Vorgang abgeschlossen habenVorbereiten der Eingabedaten für Batch-Empfehlungen, können Sie mit dem CreateBatchInferenceJob Vorgang einen Batch-Inferenzjob erstellen.

Einen Batch-Inferenzjob erstellen

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

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

Geben Sie für die Anzahl der Artikel annumResults, die Amazon Personalize für jede Zeile mit Eingabedaten vorhersagen soll. Stellen Sie optional einen Filter ARN zum Filtern von Empfehlungen bereit. Wenn Ihr Filter Platzhalterparameter verwendet, stellen Sie sicher, dass die Werte für die Parameter in Ihrer 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, rezeptspezifische itemExplorationConfig Hyperparameter für die Benutzerpersonalisierung: und. explorationWeight explorationItemAgeCutOff Fügen Sie optional explorationItemAgeCutOff Werte hinzu, um explorationWeight die Erkundung 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://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

Das Beispiel enthält optionale itemExplorationConfig Rezeptfelder für die Benutzerpersonalisierung: explorationWeight und. explorationItemAgeCutOff Fügen explorationWeight Sie optional explorationItemAgeCutOff Werte hinzu, um die Erkundung 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: { s3DataSource: { path: "INPUT_PATH", }, }, jobOutput: { s3DataDestination: { path: "OUTPUT_PATH", }, }, roleArn: "ROLE_ARN", solutionVersionArn: "SOLUTION_VERSION_ARN", numResults: 20, }; 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-Batch-Inferenzjobs in Ihrer AWS Umgebung auflisten, indem Sie anrufen. ListBatchInferenceJobs

Erstellen eines Batch-Inferenzauftrags, der Themen generiert

Um Themen für ähnliche Artikel zu generieren, müssen Sie das Rezept für ähnliche Artikel verwenden und Ihr Artikeldatensatz muss ein Textfeld und eine Spalte mit Artikelnamendaten enthalten. Weitere Informationen zu Empfehlungen mit Themen finden Sie unter. Batch-Empfehlungen mit Themen aus dem Content Generator

Der folgende Code erstellt einen Batch-Inferenzjob, der Empfehlungen mit Themen generiert. Belassen Sie das batchInferenceJobMode Set auf. "THEME_GENERATION" COLUMNN_NAMEErsetzen Sie es durch den Namen der Spalte, in der Ihre Artikelnamendaten 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://amzn-s3-demo-bucket/<folder name>/<input JSON file name>.json"}}, jobOutput = {"s3DataDestination": {"path": "s3://amzn-s3-demo-bucket/<output folder name>/"}} )