[AWS] Personalize에서 생성형 AI를 활용한 Content Generator

AWS Personalize를 통한 GenAI 추천기

주의사항

위 리전에서만 생성형 AI를 통한 Content Generator를 지원하고 있으므로 주의해야합니다. 

개요

공식 문서는 아래와 같습니다.

레시피

aws-sims (Similar Items)

aws-similar-items

aws-personalized-ranking

aws-user-personalization

aws-popularity-count

정보

LLM 모델을 사용하여 Batch 처리 방식으로 Personalize를 위한 테마를 생성합니다. 하나의 테마를 출력할 때마다 1달러가 청구되므로 ItemID 확장시 주의하여야합니다.

프로세스

데이터 준비

Personalize 데이터를 저장할 버킷을 생성하고 다음과 같은 정책을 추가합니다.

{
    "Version": "2012-10-17",
    "Id": "PersonalizeS3BucketAccessPolicy",
    "Statement": [
        {
            "Sid": "PersonalizeS3BucketAccessPolicy",
            "Effect": "Allow",
            "Principal": {
                "Service": "personalize.amazonaws.com"
            },
            "Action": [
                "s3:GetObject",
                "s3:ListBucket",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::{your-bucket-name}",
                "arn:aws:s3:::{your-bucket-name}/*"
            ]
        }
    ]
}

데이터셋 그룹 설정

필수 데이터셋 추가

{
    "type": "record",
    "name": "Interactions",
    "namespace": "com.amazonaws.personalize.schema",
    "fields": [
        {
            "name": "USER_ID",
            "type": "string"
        },
        {
            "name": "ITEM_ID",
            "type": "string"
        },
        {
            "name": "TIMESTAMP",
            "type": "long"
        },
        {
            "name": "EVENT_TYPE",
            "type": "string"
        }
    ],
    "version": "1.0"
}

이후 Next를 누르면,  Dataset이 저장되어 계속해서 Import job의 작성 화면으로 이동합니다.

Import job 만들기

아이템 데이터셋 추가

{
	"type": "record",
	"name": "Items",
	"namespace": "com.amazonaws.personalize.schema",
	"fields": [
		{
			"name": "ITEM_ID",
			"type": "string"
		},
		{
			"name": "name",
			"type": "string"
		},
		{
			"name": "price",
			"type": "int"
		},
		{
			"name": "CATEGORY_L1",
			"type": [
				"string"
			],
			"categorical": true
		},
		{
			"name": "CATEGORY_L2",
			"type": [
				"string"
			],
			"categorical": true
		},
		{
			"name": "PRODUCT_DESCRIPTION",
			"type": [
				"string"
			],
			"textual": true
		}
	],
	"version": "1.0"
}

Solution 생성

Create solutions를 입력하고 aws-similar-items를 선택합니다.

해당 설정을 넘어가서 솔루션을 생성하면 됩니다.

Content Generator Batch inference

학습시킨 솔루션에 itemId를 전달하면 Theme 기반으로 유사한 상품의 추천이 가능합니다.

{"itemId": "3dbfc503-b595-4fed-bb7f-b60202b0b835"}
{"itemId": "c4a3ded4-0004-49dd-9f98-542bb6d71f2c"}
{"itemId": "f3407b88-742a-44b0-88da-3cc775bdb55b"}
{"itemId": "546784ce-5a1e-4880-85ce-fcc8b84ce7b6"}
{"itemId": "c4daa771-3583-4cb4-8d38-f5b3bf0aa3b2"}
[
  {
    "itemId": "546784ce-5a1e-4880-85ce-fcc8b84ce7b6",
    "theme": "Groceries",
    "recommendedItems": [
      "4527bda1-0338-439f-9a56-749943dff6cb",
      "e1c8e574-93fa-4bb4-8f17-374fdcf85da6",
      "58c4056b-bad4-4098-9996-2c6d3be93218",
      "089baa54-b066-4359-83ff-8a41011d3110",
      "14c5314c-6325-41e9-8e5b-4f72f5b05f27",
      "62f6d1c3-33ea-415c-95dd-b3cf8a8051c9",
      "9abdf04d-a9b7-4627-9ce8-b11668db3c98",
      "82aa8f53-3556-4fb9-aeed-547a4ea726ff",
      ...
    ],
    "itemsThemeRelevanceScores": [
      0.449,
      0.432,
      0.432,
      0.432,
      0.418,
      0.418,
      0.418,
      0.383,
      ...
    ]
  },
]

데이터 interactions이 필수인만큼 중요한 부분을 차지하는데, 아이템 값을 채우기 위해 랜덤으로 돌려둔만큼 정확한 데이터가 추론되지 않는 것으로 보입니다.