배치 세그먼트 작업 생성 - Amazon Personalize

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

배치 세그먼트 작업 생성

USER_SEGMENTATION 레시피를 사용한 경우, 일괄 세그먼트 작업을 생성하여 솔루션 버전으로 사용자 세그먼트를 가져올 수 있습니다. 각 사용자 세그먼트는 각 사용자가 인벤토리의 항목과 상호작용할 확률을 기준으로 내림차순으로 정렬됩니다. 레시피에 따라 입력 데이터는 JSON 형식의 항목 목록(항목-친화도 레시피) 또는 항목 속성(항목-속성-친화도 레시피)이어야만 합니다. Amazon Personalize 콘솔, AWS Command Line Interface (AWS CLI) 또는 AWS SDK를 사용하여 배치 세그먼트 작업을 생성할 수 있습니다.

배치 세그먼트 작업을 생성할 때 입력 및 출력 위치에 Amazon S3 경로를 지정합니다. Amazon S3는 접두사를 기반으로 합니다. 입력 데이터 위치에 접두사를 제공하는 경우, Amazon Personalize는 해당 접두사와 일치하는 모든 파일을 입력 데이터로 사용합니다. 예를 들어, 사용자가 s3://<name of your S3 bucket>/folderName을 제공하고 버킷에 경로가 s3://<name of your S3 bucket>/folderName_test인 폴더가 있는 경우, Amazon Personalize는 두 폴더의 모든 파일을 입력 데이터로 사용합니다. 특정 폴더 내의 파일만을 입력 데이터로 사용하려면 Amazon S3 경로 끝에 접두사 구분 기호를 붙입니다(예: /: s3://<name of your S3 bucket>/folderName/). Amazon S3에서 객체를 구성하는 방법에 대한 자세한 내용은 객체 구성, 나열 및 객체 작업을 참조하세요.

배치 세그먼트 작업 생성(콘솔)

배치 추천을 위한 입력 데이터 준비 작업을 완료했으면 배치 세그먼트 작업을 만들 준비가 된 것입니다. 이 절차에서는 USER_SEGEMENTATION 레시피를 사용하여 솔루션과 솔루션 버전(교육된 모델)을 이미 생성한 것으로 가정합니다.

배치 세그먼트 작업을 생성하려면(콘솔)
  1. https://console.aws.amazon.com/acm-pca/home에서 Amazone Personalize 콘솔을 열고 계정에 로그인하세요.

  2. 데이터세트 그룹 페이지에서 데이터세트 그룹을 선택합니다.

  3. 탐색 창에서 배치 세그먼트 작업을 선택한 다음 배치 세그먼트 작업 생성을 선택합니다.

  4. 배치 세그먼트 작업 세부 정보에서 배치 세그먼트 작업 이름의 경우, 배치 세그먼트 작업의 이름을 지정합니다.

  5. 솔루션의 경우, 솔루션을 선택한 다음 권장 사항을 생성하는 데 사용하려는 솔루션 버전 ID를 선택합니다. USER_SEGEMENTATION 레시피를 사용한 경우에만 배치 세그먼트 작업을 생성할 수 있습니다.

  6. 사용자 수의 경우, Amazon Personalize가 각 사용자 세그먼트에 대해 생성하는 사용자의 수를 원하는 대로 지정합니다. 기본값은 25입니다. 최대값은 5백만 명입니다.

  7. 입력 소스의 경우, 입력 파일에 대한 Amazon S3 경로를 지정하거나 S3 찾아보기를 사용하여 Amazon S3 버킷을 선택합니다.

    다음 구문 사용: s3://<name of your S3 bucket>/<folder name>/<input JSON file name>.json

    입력 데이터는 솔루션에서 사용하는 레시피에 맞는 올바른 형식이어야 합니다. 입력 데이터 예제는 배치 세그먼트 작업 입력 및 출력 JSON 예제 단원을 참조하세요.

  8. 출력 대상의 경우, 출력 위치에 대한 경로를 지정하거나 S3 찾아보기를 사용하여 Amazon S3 버킷을 선택합니다. 출력 데이터에 대한 다른 위치(폴더 또는 다른 Amazon S3 버킷)를 사용하는 것이 좋습니다.

    다음 구문 사용: s3://<name of your S3 bucket>/<output folder name>/

  9. IAM 역할의 경우, 다음 중 하나를 선택합니다.

    • 새 서비스 역할 생성 및 사용을 선택하고 서비스 역할 이름을 입력하여 새 역할을 생성합니다. 또는,

    • 올바른 권한이 있는 역할을 이미 생성한 경우, 기존 서비스 역할 사용을 선택하고 IAM 역할을 선택합니다.

    사용하는 역할에는 각각 입력 및 출력 Amazon S3 버킷에 대한 읽기 및 쓰기 액세스 권한이 있어야 합니다.

  10. 필터 구성 경우, 원하는 필터를 선택하여 사용자 세그먼트에 필터를 적용할 수 있습니다. 필터가 자리표시자 파라미터를 사용하는 경우, 파라미터 값이 입력 JSON에 포함되어 있는지 확인하세요. 자세한 내용은 입력 JSON에서 필터 값 제공 섹션을 참조하세요.

  11. 태그의 경우, 원하는 태그를 추가할 수 있습니다. Amazon Personalize 리소스 태그 지정에 대한 자세한 내용은 Amazon Personalize 리소스에 태그 지정 단원을 참조하세요.

  12. 배치 세그먼트 작업 생성을 선택합니다. 배치 세그먼트 작업 생성이 시작되고 배치 세그먼트 작업 페이지가 나타나고 배치 세그먼트 작업 세부 정보) 단원이 표시됩니다.

  13. 배치 세그먼트 작업의 상태가 활성으로 변경되면 지정된 출력 S3 버킷에서 작업 출력을 찾을 수 있습니다. 출력 파일 이름의 형식은 input-name.out이 됩니다.

배치 세그먼트 작업 생성(AWS CLI)

배치 추천을 위한 입력 데이터 준비 작업을 완료했으면 다음 create-batch-segment-job 코드를 사용하여 배치 세그먼트 작업을 만들 준비가 된 것입니다. 작업 이름을 지정하고, Solution version ARN을 솔루션 버전의 Amazon 리소스 이름 (ARN)으로 대체하고, IAM service role ARN을 설정 중에 Amazon Personalize용으로 생성한 IAM 서비스 역할의 ARN으로 대체하세요. 이 역할에는 각각 입력 및 출력 Amazon S3 버킷에 대한 읽기 및 쓰기 액세스 권한이 있어야 합니다. num-results의 경우, Amazon Personalize가 각 입력 데이터 라인에 대해 예측하기를 원하는 사용자의 수를 지정합니다. 기본값은 25입니다. 최대값은 5백만 명입니다. 원하는 대로 filter-arn을 제공하여 사용자 세그먼트를 필터링합니다. 필터가 자리표시자 파라미터를 사용하는 경우, 파라미터 값이 입력 JSON에 포함되어 있는지 확인하세요. 자세한 내용은 배치 추천 및 사용자 세그먼트(사용자 지정 리소스) 필터링 섹션을 참조하세요.

S3 input pathS3 output path를 입력 파일 및 출력 위치에 대한 Amazon S3 경로로 대체합니다. 출력 데이터에 대한 다른 위치(폴더 또는 다른 Amazon S3 버킷)를 사용하는 것이 좋습니다. 입력 및 출력 위치에는 구문: s3://<name of your S3 bucket>/<folder name>/<input JSON file name>.jsons3://<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" }

일괄 세그먼트 작업 (AWS SDK) 생성

배치 추천을 위한 입력 데이터 준비 작업을 완료했으면 CreateBatchSegmentJob 작업을 사용하여 배치 세그먼트 작업을 생성할 준비가 된 것입니다. 다음 코드는 배치 세그먼트 작업을 생성하는 방법을 보여줍니다. 작업 이름을 지정하고, 사용할 솔루션 버전의 Amazon 리소스 이름 (ARN)을 지정하고, Amazon Personalize IAM 역할의 ARN을 지정하고, 입력 파일 및 출력 위치에 대한 Amazon S3 경로를 지정합니다. IAM 서비스 역할에는 각각 입력 및 출력 Amazon S3 버킷에 대한 읽기 및 쓰기 액세스 권한이 있어야 합니다.

출력 데이터에 대한 다른 위치(폴더 또는 다른 Amazon S3 버킷)를 사용하는 것이 좋습니다. 입력 및 출력 위치에는 구문: s3://<name of your S3 bucket>/<folder name>/<input JSON file name>.jsons3://<name of your S3 bucket>/<output folder name>/을 사용합니다.

numResults의 경우, Amazon Personalize가 각 입력 데이터 라인에 대해 예측하기를 원하는 사용자의 수를 지정합니다. 기본값은 25입니다. 최대값은 5백만 명입니다. 원하는 대로 filterArn을 제공하여 사용자 세그먼트를 필터링합니다. 필터가 자리표시자 파라미터를 사용하는 경우, 파라미터 값이 입력 JSON에 포함되어 있는지 확인하세요. 자세한 내용은 배치 추천 및 사용자 세그먼트(사용자 지정 리소스) 필터링 섹션을 참조하세요.

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 = Number of predicted users, 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();

배치 작업을 처리하는 데 시간이 걸릴 수 있습니다. DescribeBatchSegmentJob을 호출하고 batchSegmentJobArn을 입력 파라미터로 전달하여 작업 상태를 확인할 수 있습니다. 또한 호출을 통해 사용자 AWS 환경의 모든 Amazon Personalize 배치 세그먼트 작업을 나열할 수 있습니다. ListBatchSegmentJobs