배치 세그먼트 작업 - Amazon Personalize

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

배치 세그먼트 작업

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

권한 요구 사항 및 입력 데이터 준비 및 가져오기를 포함하여 Amazon Personalize Personalize의 배치 워크플로에 대한 자세한 내용은 단원을 참조하십시오.배치 권장 사항 및 사용자 세그먼트 얻기.

배치 세그먼트 작업 생성

완료한 후배치 입력 데이터 준비 및 가져오기배치 세그먼트 작업을 생성할 준비가 되었습니다. 이 절차에서는 Item-Afinity 레시피를 사용하여 솔루션 버전 (훈련된 모델) 을 이미 생성했다고 가정합니다.

배치 세그먼트 작업을 생성하려면

  1. 에서 Amazon Personalize 콘솔을 엽니다.https://console.aws.amazon.com/personalize/home계정에 로그인합니다.

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

  3. 선택배치 세그먼트 작업탐색 창에서 [] 를 선택합니다.배치 세그먼트 작업 생성.

  4. In배치 세그먼트 작업,Batch 세그먼트 작업 이름배치 세그먼트 작업의 이름을 지정합니다.

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

  6. 사용자 수Amazon Personalize Personalize가 각 사용자 세그먼트에 대해 생성하는 사용자 수를 선택적으로 지정합니다. 기본값은 25입니다.

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

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

    입력 데이터는 솔루션이 사용하는 레시피에 적합한 형식이어야 합니다. 입력 데이터 예제는 다음을 참조하십시오.입력 및 출력 JSON 예제.

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

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

  9. IAM 역할에서 다음 중 하나를 선택합니다.

    • 선택새 서비스 역할 생성 및 사용[] 를 입력합니다.서비스 역할 이름[] 를 사용하여 새 역할을 생성합니다.

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

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

  10. 필터선택적으로 필터를 선택하여 출력 JSON 파일에 추가된 권장 사항에 필터를 적용합니다. 자세한 내용은 를 참조하십시오.배치 권장 사항 및 사용자 세그먼트 필터링.

  11. 태그(필요한 경우) 을 추가합니다. Amazon Personalize 리소스 태그 지정에 대한 자세한 내용은 섹션을 참조하세요.Amazon Personalize 리소스 태깅.

  12. 선택배치 세그먼트 작업 생성. Batch 세그먼트 작업 생성이 시작되고Batch 세그먼트 작업(으) 로 표시됩니다.Batch 세그먼트 작업 세부 정보섹션이 표시됩니다.

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

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

완료한 후배치 입력 데이터 준비 및 가져오기다음을 사용하여 배치 세그먼트 작업을 생성할 수 있습니다.create-batch-segment-job코드. 작업 이름 지정, 바꾸기Solution version ARN솔루션 버전의 Amazon 리소스 이름 (ARN) 으로 대체합니다.IAM service role ARN설정 중에 Amazon Personalize Personalize에 대해 생성한 IAM 서비스 역할의 ARN이 사용됩니다. 이 역할에는 입력 및 출력 Amazon S3 버킷에 대한 읽기 및 쓰기 권한이 각각 있어야 합니다. 용num-resultsAmazon Personalize에서 각 입력 데이터 라인에 대해 예측할 사용자 수를 지정합니다.

ReplaceS3 input pathS3 output path입력 파일 및 출력 위치에 대한 Amazon S3 경로를 사용합니다. 출력 데이터에 다른 위치 (폴더 또는 다른 Amazon S3 버킷) 를 사용하는 것이 좋습니다. 출력 JSON 파일에 추가된 권장 사항에 필터를 적용할 수 있습니다. 자세한 내용은 를 참조하십시오.배치 권장 사항 및 사용자 세그먼트 필터링.

입력 및 출력 위치에 다음 구문을 사용합니다.s3://<name of your S3 bucket>/<folder name>/<input JSON file name>s3://<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 \ --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" }

배치 세그먼트 작업 생성AWSSDK

완료한 후배치 입력 데이터 준비 및 가져오기를 사용하여 배치 세그먼트 작업을 생성할 수 있습니다.CreateBatchSegmentJob작업. 다음 코드는 다음을 사용하여 배치 세그먼트 작업을 생성하는 방법을 보여줍니다.AWS SDK for Python (Boto3)또는AWS SDK for Java 2.x.

입력 및 출력 위치에 다음 구문을 사용합니다.s3://<name of your S3 bucket>/<folder name>/<input JSON file name>s3://<name of your S3 bucket>/<output folder name>/.

SDK for Python (Boto3)

다음을 사용합니다.create_batch_segment_job배치 세그먼트 작업을 생성할 수 있는 코드입니다. 를 지정합니다.Job name, 바꾸기Solution version ARN솔루션 버전의 Amazon 리소스 이름 (ARN) 으로 대체합니다.IAM service role ARN설정 중에 Amazon Personalize Personalize에 대해 생성한 IAM 서비스 역할의 ARN이 사용됩니다. 이 역할에는 입력 및 출력 Amazon S3 버킷에 대한 읽기 및 쓰기 권한이 각각 있어야 합니다. 용numResultsAmazon Personalize에서 각 입력 데이터 라인에 대해 예측할 사용자 수를 지정합니다.

Amazon S3 데이터 원본 및 데이터 대상을 입력 파일 및 출력 위치에 대한 Amazon S3 경로로 바꿉니다. 출력 데이터에 다른 위치 (폴더 또는 다른 Amazon S3 버킷) 를 사용하는 것이 좋습니다. 출력 JSON 파일에 추가된 권장 사항에 필터를 적용할 수 있습니다. 자세한 내용은 를 참조하십시오.배치 권장 사항 및 사용자 세그먼트 필터링.

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, roleArn = "IAM service role ARN", jobInput = {"s3DataSource": {"path": "s3://<name of your S3 bucket>/<folder name>/<input JSON file name>"}}, jobOutput = {"s3DataDestination": {"path": "s3://<name of your S3 bucket>/<output folder name>/"}} )
SDK for Java 2.x

다음을 사용합니다.createBatchSegmentJob배치 세그먼트 작업을 생성할 수 있는 방법입니다. 다음을 파라미터로 전달합니다. Amazon Personalize 서비스 클라이언트, 솔루션 버전의 ARN (Amazon 리소스 이름), 작업 이름, 입력 데이터의 각 행에 대해 원하는 예측 사용자 수 (NumResults), 입력 데이터를 저장한 Amazon S3 위치 (S3InputDataSourcePath),bucket-name/folder name출력 데이터 위치 (S3DataDestinationPath) 와 서비스 연결 역할의 ARN (참조)Amazon Personalize에 사용되는 IAM). 출력 데이터에 다른 위치 (폴더 또는 다른 Amazon S3 버킷) 를 사용하는 것이 좋습니다.

public static String createBatchSegmentJob(PersonalizeClient personalizeClient, String solutionVersionArn, String jobName, 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) .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 ""; }

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