Einen Batch-Segment-Job 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-Segment-Job erstellen

Wenn Sie ein USER_SEGMENTATION-Rezept verwendet haben, können Sie Batch-Segmentjobs erstellen, um Benutzersegmente mit Ihrer Lösungsversion abzurufen. Jedes Benutzersegment wird in absteigender Reihenfolge sortiert, basierend auf der Wahrscheinlichkeit, dass jeder Benutzer mit Artikeln in Ihrem Inventar interagiert. Je nach Rezept müssen Ihre Eingabedaten eine Liste von Artikeln (Item-Affinity-Rezept) oder Artikelattributen (Rezept für Artikelattribute-Affinität) im JSON-Format sein. Sie können einen Batch-Segment-Job mit der Amazon Personalize Personalize-Konsole, den AWS Command Line Interface (AWS CLI) oder AWS SDKs erstellen.

Wenn Sie einen Batch-Segment-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://<name of your S3 bucket>/folderName und Ihr Bucket auch über einen Ordner verfügts3://<name of your S3 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://<name of your S3 bucket>/folderName/ Weitere Informationen darüber, wie Amazon S3 Objekte organisiert, auflisten und mit ihnen arbeiten.

Einen Batch-Segment-Job erstellen (Konsole)

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

Um einen Batch-Segment-Job zu erstellen (Konsole)
  1. Öffnen Sie die Amazon Personalize Personalize-Konsole unter https://console.aws.amazon.com/personalize/home und melden Sie sich bei Ihrem Konto an.

  2. Wählen Sie auf der Gruppenseite „Datensätze“ Ihre Datensatzgruppe aus.

  3. Wählen Sie im Navigationsbereich Batch-Segment-Jobs und dann Batch-Segment-Job erstellen aus.

  4. Geben Sie in den Details des Batchsegmentauftrags für den Namen des Batchsegmentauftrags einen Namen für Ihren Batchsegmentauftrag ein.

  5. 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. Sie können Batch-Segmentaufträge nur erstellen, wenn Sie ein USER_SEGEMENTATION-Rezept verwendet haben.

  6. Geben Sie für Anzahl der Benutzer optional die Anzahl der Benutzer an, die Amazon Personalize für jedes Benutzersegment generiert. Der Standardwert ist 25. Das Maximum liegt bei 5 Millionen.

  7. Geben Sie als Eingabequelle den Amazon S3 S3-Pfad zu Ihrer Eingabedatei an oder verwenden Sie Browse S3, um Ihren Amazon S3 S3-Bucket auszuwählen.

    Verwenden Sie die folgende Syntax: s3://<name of your S3 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 Batch-Segment-Auftragseingaben und -ausgabe-JSON.

  8. Geben Sie unter Ausgabeziel den Pfad zu Ihrem Ausgabespeicherort an oder verwenden Sie Browse S3, um Ihren Amazon S3 S3-Bucket auszuwählen. 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://<name of your S3 bucket>/<output folder name>/

  9. Wählen Sie für die IAM-Rolle eine der folgenden Optionen aus:

    • Wählen Sie Neue Servicerolle erstellen und verwenden und geben Sie den Namen der Servicerolle ein, um eine neue Rolle zu erstellen, oder

    • Wenn Sie bereits eine Rolle mit den richtigen Berechtigungen erstellt haben, wählen Sie Bestehende Servicerolle verwenden und wählen Sie die IAM-Rolle aus.

    Die Rolle, die Sie verwenden, muss Lese- und Schreibzugriff auf Ihre Amazon S3 S3-Eingabe- bzw. Ausgabe-Buckets haben.

  10. Wählen Sie für die Filterkonfiguration optional einen Filter aus, um einen Filter auf die Benutzersegmente anzuwenden. 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 Bereitstellung von Filterwerten in Ihrem Eingabe-JSON.

  11. 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

  12. Wählen Sie Batch-Segment-Job erstellen. Die Erstellung von Batchsegmentaufträgen wird gestartet, und die Seite Batchsegmentaufträge wird mit dem Abschnitt Batchsegmentauftragsdetails angezeigt.

  13. Wenn sich der Status des Batch-Segment-Jobs in Aktiv ändert, können Sie die Ausgabe des Jobs aus dem dafür vorgesehenen Amazon S3 S3-Ausgabe-Bucket abrufen. Der Name der Ausgabedatei entspricht dem Format input-name.out.

Einen Batch-Segment-Job erstellen (AWS CLI)

Nachdem Sie den Vorgang abgeschlossen habenVorbereiten der Eingabedaten für Batch-Empfehlungen, können Sie mithilfe des folgenden create-batch-segment-job Codes einen Batch-Segmentauftrag erstellen. Geben Sie einen Jobnamen an, Solution version ARN ersetzen Sie ihn durch den Amazon Resource Name (ARN) Ihrer Lösungsversion und ersetzen Sie den durch den IAM service role ARN 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. num-resultsGeben Sie für die Anzahl der Benutzer an, die Amazon Personalize für jede Zeile von Eingabedaten vorhersagen soll. Der Standardwert ist 25. Das Maximum liegt bei 5 Millionen. Geben Sie optional a filter-arn an, um Benutzersegmente 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).

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://<name of your S3 bucket>/<folder name>/<input JSON file name>.json unds3://<name of your S3 bucket>/<output folder name>/.

aws personalize create-batch-segment-job \ --job-name Job name \ --solution-version-arn Solution version ARN \ --num-results The number of predicted users \ --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 { "batchSegmentJobArn": "arn:aws:personalize:us-west-2:acct-id:batch-segment-job/batchSegmentJobName" }

Einen Batch-Segment-Job (AWS SDKs) erstellen

Nachdem Sie den Vorgang abgeschlossen habenVorbereiten der Eingabedaten für Batch-Empfehlungen, können Sie einen Batch-Segment-Job mit dem CreateBatchSegmentJob Vorgang erstellen. Der folgende Code zeigt, wie Sie einen Batch-Segmentauftrag erstellen. Geben Sie dem Job einen Namen, geben Sie den Amazon-Ressourcennamen (ARN) der zu verwendenden Lösungsversion an, geben Sie den ARN für Ihre Amazon Personalize-IAM-Rolle an und geben Sie den Amazon S3 S3-Pfad zu Ihrer Eingabedatei und Ihren Ausgabespeicherorten an. Ihre IAM-Servicerolle muss Lese- und Schreibzugriff auf Ihre Amazon S3 S3-Eingabe- bzw. 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://<name of your S3 bucket>/<folder name>/<input JSON file name>.json unds3://<name of your S3 bucket>/<output folder name>/.

Geben Sie für die Anzahl der Benutzer annumResults, die Amazon Personalize für jede Zeile von Eingabedaten vorhersagen soll. Der Standardwert ist 25. Das Maximum ist 5 Millionen. Geben Sie optional a filterArn an, um Benutzersegmente 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)
import boto3 personalize_rec = boto3.client(service_name='personalize') personalize_rec.create_batch_segment_job ( solutionVersionArn = "Solution version ARN", jobName = "Job name", numResults = 25, filterArn = "Filter ARN", roleArn = "IAM service role ARN", 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
public static String createBatchSegmentJob(PersonalizeClient personalizeClient, String solutionVersionArn, String jobName, String filterArn, int numResults, String s3InputDataSourcePath, String s3DataDestinationPath, String roleArn, String explorationWeight, String explorationItemAgeCutOff) { long waitInMilliseconds = 60 * 1000; String status; String batchSegmentJobArn; try { // Set up data input and output parameters. S3DataConfig inputSource = S3DataConfig.builder() .path(s3InputDataSourcePath) .build(); S3DataConfig outputDestination = S3DataConfig.builder() .path(s3DataDestinationPath) .build(); BatchSegmentJobInput jobInput = BatchSegmentJobInput.builder() .s3DataSource(inputSource) .build(); BatchSegmentJobOutput jobOutputLocation = BatchSegmentJobOutput.builder() .s3DataDestination(outputDestination) .build(); CreateBatchSegmentJobRequest createBatchSegmentJobRequest = CreateBatchSegmentJobRequest.builder() .solutionVersionArn(solutionVersionArn) .filterArn(filterArn) .jobInput(jobInput) .jobOutput(jobOutputLocation) .jobName(jobName) .numResults(numResults) .roleArn(roleArn) .build(); batchSegmentJobArn = personalizeClient.createBatchSegmentJob(createBatchSegmentJobRequest) .batchSegmentJobArn(); DescribeBatchSegmentJobRequest describeBatchSegmentJobRequest = DescribeBatchSegmentJobRequest.builder() .batchSegmentJobArn(batchSegmentJobArn) .build(); long maxTime = Instant.now().getEpochSecond() + 3 * 60 * 60; // wait until the batch segment job is complete. while (Instant.now().getEpochSecond() < maxTime) { BatchSegmentJob batchSegmentJob = personalizeClient .describeBatchSegmentJob(describeBatchSegmentJobRequest) .batchSegmentJob(); status = batchSegmentJob.status(); System.out.println("batch segment 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 batchSegmentJobArn; } catch (PersonalizeException e) { System.out.println(e.awsErrorDetails().errorMessage()); } return ""; }
SDK for JavaScript v3
// Get service clients module and commands using ES6 syntax. import { CreateBatchSegmentJobCommand } 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 segment job's parameters. export const createBatchSegmentJobParam = { jobName: '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 */ }; export const run = async () => { try { const response = await personalizeClient.send(new CreateBatchSegmentJobCommand(createBatchSegmentJobParam)); 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 DescribeBatchSegmentJob aufrufen und als Eingabeparameter einen batchSegmentJobArn übergeben. Sie können auch alle Amazon Personalize-Batchsegmentaufträge in Ihrer AWS Umgebung auflisten, indem Sie anrufenListBatchSegmentJobs.