[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 확장시 주의하여야합니다.

프로세스

데이터 준비

items
download-circle

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