อัพเดทบริการ Amazon Personalize ในปี 2024

อัพเดทบริการ Amazon Personalize ในปี 2024

บทความนี้แปลมาจากบทความภาษาญี่ปุ่นที่ชื่อว่า AWS入門ブログリレー2024〜Amazon Personalize編〜 โดยเจ้าของบทความนี้คือ คุณ niino

Amazon Personalize คืออะไร

https://aws.amazon.com/th/personalize/?nc1=f_ls

บริการ Machine Learning แบบ Fully Managed ที่ให้คำแนะนำแบบส่วนบุคคลสำหรับผู้ใช้ การนำระบบแนะนำนี้มาใช้จะช่วยเพิ่มอัตราการคลิกของสินค้า สามารถสร้างมาตรการส่งเสริมการขายที่มีประสิทธิภาพมากขึ้นสำหรับผู้ใช้แต่ละราย และสามารถสร้างเส้นทางที่นำไปสู่การซื้อได้

ยกตัวอย่างเช่น ในกรณีของเว็บไซต์ E-commerce สามารถใช้ Amazon Personalize เพื่อให้บริการระบบแนะนำในรูปแบบต่างๆ ดังต่อไปนี้

  • คำแนะนำตามประวัติการซื้อสินค้า: แบบอิงสินค้า (Item-based)
    • "สินค้าแนะนำสำหรับผู้ที่ซื้อสินค้านี้"
  • คำแนะนำตามคุณลักษณะของผู้ใช้: แบบอิงผู้ใช้ (User-based)
    • "สินค้าที่แนะนำสำหรับคุณ"
  • การแสดงการจัดอันดับแบบส่วนบุคคล
    • เช่น หากมีสินค้าแนะนำ 10 รายการ ลำดับการแสดงผลจะแตกต่างกันไปตามแต่ละผู้ใช้

การติดตั้งระบบแนะนำเหล่านี้ต้องใช้ความรู้และประสบการณ์ด้าน Machine Learning แต่คนที่มีทักษะในด้านนี้มีจำนวนจำกัด ด้วยเหตุนี้ การใช้ Amazon Personalize ซึ่งเป็นบริการแบบ Fully Managed จึงช่วยให้สามารถนำเข้าข้อมูลและสร้างโมเดลได้อย่างง่ายดายผ่าน Management Console โดยทำตามคำแนะนำที่ให้ไว้

https://docs.aws.amazon.com/personalize/latest/dg/what-is-personalize.html

คำศัพท์พื้นฐานของ Personalize

ขอแนะนำแนวคิดที่ควรทราบในการใช้งานแบบคร่าวๆ ภาพรวมจะเป็นดังนี้ (ความแตกต่างระหว่างสองอย่างนี้จะอธิบายในภายหลัง)

Custom Dataset Group:

Amazon Personalize-1-1

Domain Dataset Group:

Amazon Personalize-2

Dataset Group

สิ่งแรกที่ต้องสร้างใน Personalize คือ Dataset Group โดย Dataset Group มีหน้าที่รวบรวมชุดข้อมูล (Dataset) เข้าด้วยกัน

Domain Dataset Group และ Custom Dataset Group

เมื่อสร้าง Dataset Group จะต้องระบุโดเมน

ประเภท คำอธิบาย
Domain Dataset Group dataset group ที่เฉพาะเจาะจงสำหรับการแนะนำในโดเมนเฉพาะ สามารถใช้ได้กับ VIDEO_ON_DEMAND และ ECOMMERCE รองรับเฉพาะ Real-time job เท่านั้น
Custom Dataset Group dataset group แบบกำหนดเองที่สามารถใช้สำหรับการแนะนำในวงกว้าง รองรับทั้ง Real-time job และ Batch job

ตามที่แสดงในภาพข้างต้น Domain Dataset Group เป็นฟังก์ชันที่ห่อหุ้มส่วนของ Solution/Solution Version/Campaign ทำให้มีการตั้งค่าน้อยลงและสามารถทำการประมวลผลแบบ Real-time ได้

Dataset

หมายถึงข้อมูลที่ใช้ในการสร้างโมเดลการแนะนำ แต่ละชุดข้อมูลต้องมีจำนวนข้อมูลขั้นต่ำ โดยจะสามารถสร้างคำแนะนำที่มีคุณภาพสูงได้เมื่อมีการปฏิสัมพันธ์กับสินค้า (Item Interaction) อย่างน้อย 50,000 รายการ จากผู้ใช้ 1,000 คนที่มีการปฏิสัมพันธ์กับสินค้าอย่างน้อย 2 รายการ

ประเภทชุดข้อมูล คำอธิบาย
Item interactions ประวัติการปฏิสัมพันธ์ระหว่างผู้ใช้กับสินค้า ต้องมีข้อมูลอย่างน้อย 1,000 รายการ (เช่น ประวัติการกด "ถูกใจ" สินค้าของผู้ใช้)
Users ข้อมูลเมตาดาต้าเกี่ยวกับผู้ใช้ ต้องมี userID ที่ไม่ซ้ำกันอย่างน้อย 25 รายการ (เช่น อายุ, เพศ, สมาชิกแบบมีคะแนนสะสม)
Items ข้อมูลเมตาดาต้าเกี่ยวกับสินค้า (เช่น ราคา, ประเภท SKU, สถานะสินค้าคงคลัง)
Actions ข้อมูลเมตาดาต้าเกี่ยวกับกิจกรรมที่ต้องการแนะนำให้ลูกค้าทำ (เช่น การติดตั้งแอพ, การกรอกโปรไฟล์, การสมัครรับอีเมลโปรโมชั่น)
Action interactions ประวัติการปฏิสัมพันธ์ระหว่างผู้ใช้กับแอคชั่น (กิจกรรมที่ต้องการแนะนำให้ลูกค้าทำ) ต้องมีอย่างน้อย 2 รายการ (เช่น ประวัติว่าผู้ใช้รายนั้นกรอก/ไม่กรอกโปรไฟล์)

Recipe

หมายถึงอัลกอริทึมที่ใช้ในการแนะนำ โดยมี Recipe ที่สามารถใช้งานได้ดังต่อไปนี้

Recipe คำอธิบาย
USER_PERSONALIZATION รับรายการที่ปรับแต่งสำหรับผู้ใช้เฉพาะราย (เช่น "สินค้าที่แนะนำสำหรับคุณ")
PERSONALIZED_RANKING จัดเรียงลำดับรายการสินค้าสำหรับผู้ใช้เฉพาะราย (เช่น "สินค้าที่คุณน่าจะชอบ")
RELATED_ITEMS แนะนำสินค้าที่คล้ายกัน (เช่น "สินค้าที่แนะนำสำหรับผู้ที่ซื้อสินค้านี้")
POPULAR_ITEMS แนะนำสินค้าที่กำลังเป็นที่นิยมหรือเทรนด์
PERSONALIZED_ACTIONS แนะนำการกระทำถัดไปที่เหมาะสมที่สุดสำหรับผู้ใช้เฉพาะราย (เช่น แนะนำให้เข้าร่วมโปรแกรมสมาชิก)
USER_SEGMENTATION รับกลุ่มผู้ใช้ (เช่น ค้นหาผู้ใช้ที่เหมาะกับสินค้าที่ต้องการขาย)

สำหรับข้อจำกัดอื่นๆ และรายละเอียดเพิ่มเติม กรุณาตรวจสอบจากเอกสารด้านล่าง

Choosing a recipe - Amazon Personalize

เมื่อวันที่ 2 พฤษภาคม 2024 ได้มีการอัพเดท v2 สำหรับ user-personalization และ personalized-ranking เมื่อเทียบกับเวอร์ชันก่อนหน้า:

  • ความแม่นยำในการแนะนำเพิ่มขึ้นสูงสุด 9%
  • ขอบเขตของการแนะนำขยายเพิ่มขึ้นสูงสุด 1.8 เท่า

https://aws.amazon.com/th/about-aws/whats-new/2024/05/amazon-personalize-recipes-item-catalogs-lower-latency/?nc1=f_ls

Solution

เปรียบเสมือนกล่องที่สามารถบรรจุโมเดลหลายๆ โมเดลได้ โดยสร้างโซลูชันด้วยการระบุ Recipe และพารามิเตอร์ต่างๆ

Solution Version

เมื่อทำการเทรนนิ่งในโซลูชัน จะมีการสร้าง Solution Version ขึ้นมา ให้คิดว่าเป็นเหมือนโมเดลชนิดหนึ่ง

Campaign

สร้างแคมเปญจาก Solution Version เพื่อสร้างสภาพแวดล้อมที่สามารถเรียกดูผลการแนะนำผ่าน API ได้

Recommender

เปรียบเสมือนสิ่งที่ห่อหุ้ม Solution และ Campaign เข้าด้วยกัน เมื่อใช้ Domain Dataset Group จะต้องส่งคำขอไปยัง Recommender

อ้างอิง:

Amazon Personalize terms - Amazon Personalize

วิธีการใช้งาน

ภาพรวมขั้นตอนการทำงาน

ลำดับการใช้งาน Amazon Personalize มีดังนี้:

  • การเตรียมและนำเข้าข้อมูล
  • การสร้างและเทรนโมเดล
  • การสร้างคำแนะนำ

ลองทดสอบการประมวลผลแบบ Batch

มาลองใช้ Personalize กัน โดยครั้งนี้จะทดลองทำการประมวลผลแบบ Batch

การเตรียมข้อมูล
ดาวน์โหลดข้อมูลการให้คะแนนภาพยนตร์ (ml-latest-small.zip) จากเว็บไซต์ด้านล่าง จากนั้นนำข้อมูลมาประมวลผลเพื่อสร้างรายการที่แสดงว่า "ผู้ใช้คนไหนดูหนังเรื่องอะไรเมื่อไหร่" แล้วใช้ Personalize เพื่อแนะนำภาพยนตร์ที่ควรดูต่อไป

เปลี่ยนชื่อไฟล์ ratings.csv เป็น interactions.csv และลบคอลัมน์ rating ที่ไม่ได้ใช้ในการแนะนำออก จากนั้นเปลี่ยนชื่อคอลัมน์เป็น USER_ID, ITEM_ID, TIMESTAMP ซึ่งเป็นข้อมูลที่จำเป็นต้องมี เมื่อตั้งค่าเสร็จแล้วให้อัปโหลดไฟล์ interactions.csv ไปยัง S3 bucket

  • USER_ID: ID ที่ระบุตัวผู้ใช้อย่างไม่ซ้ำกัน เช่น รหัสสมาชิก
  • ITEM_ID: ID ที่ระบุสินค้าหรือไอเทมอย่างไม่ซ้ำกัน เช่น SKU (ในกรณีนี้คือ ID ของภาพยนตร์)
  • TIMESTAMP: วันเวลาที่ทำรายการ เช่น วันเวลาที่ซื้อ (ในกรณีนี้คือวันเวลาที่ดูภาพยนตร์)
    • สามารถใช้ได้เฉพาะรูปแบบ UNIX TIMESTAMP เท่านั้น

Amazon Personalize-3

การนำเข้าข้อมูล
ขั้นแรกให้สร้างกลุ่มชุดข้อมูล (dataset group) จาก Create dataset group เนื่องจากไม่ได้เป็นการใช้งานสำหรับ E-commerce หรือ Video on demand จึงเลือกโดเมนเป็น Custom

Amazon Personalize-4

จาก Create dataset ให้เลือก item interactions dataset

Amazon Personalize-5

เลือก Import method โดยในครั้งนี้เนื่องจากข้อมูลได้ถูกจัดรูปแบบและพร้อมใช้งานแล้ว จึงเลือก Import data directly into Amazon Personalize datasets เพื่อดำเนินการต่อ

Amazon Personalize-6

กำหนด schema ของชุดข้อมูล โดยต้องกำหนดสำหรับชุดข้อมูลแต่ละประเภท
ในครั้งนี้เราได้กำหนด schema สำหรับ Interactions

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

Amazon Personalize-7

สร้าง IAM role สำหรับการใช้งาน Personalize

Amazon Personalize-8

กำหนด bucket policy สำหรับ S3 bucket ที่เก็บข้อมูลดังต่อไปนี้

{
    "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:::<Bucket name>",
                "arn:aws:s3:::<Bucket name>/*"
            ]
        }
    ]
}

เมื่อตั้งค่าทั้งหมดเสร็จแล้ว ให้รันงาน import เพื่อนำเข้าข้อมูล

การสร้างและรันโมเดล

เมื่อการนำเข้าข้อมูลเสร็จสิ้นและชุดข้อมูลถูกสร้างขึ้น จะสามารถสร้าง solution ได้ โดยดำเนินการผ่าน Create solutions โดยกำหนด Solution Type เป็น Item recommendation และเลือก Recipe เป็น aws-user-personalization

Amazon Personalize-9

แม้จะสามารถเปลี่ยนแปลงไฮเปอร์พารามิเตอร์และระบุคอลัมน์ที่จะใช้ในการเทรนได้ แต่ในครั้งนี้จะใช้การตั้งค่าเริ่มต้นและดำเนินการสร้าง solution ต่อ

Amazon Personalize-14

การสร้างคำแนะนำ

ในครั้งนี้ตามที่ได้กล่าวไว้ตอนต้น เราจะทำการประมวลผลแบบ Batch ในการทำ batch inference จำเป็นต้องเตรียมไฟล์ JSON สำหรับข้อมูลนำเข้าแบบ batch
ในครั้งนี้เราได้เตรียมไฟล์ JSONL ที่มี userId ตามด้านล่างและตั้งชื่อเป็น input.jsonl แล้วอัปโหลดไปยัง S3 bucket เราจะสามารถรับผลการแนะนำตาม userId เหล่านี้ได้

ทั้งนี้ การระบุ userId ต้องคำนึงถึงตัวพิมพ์ใหญ่และตัวพิมพ์เล็กด้วย

Preparing input data for batch recommendations - Amazon Personalize

{"userId": 1}
{"userId": 2}
{"userId": 3}
{"userId": 4}
{"userId": 5}
{"userId": 6}
{"userId": 7}
{"userId": 8}
{"userId": 9}
{"userId": 10}

จาก Get recommendations ให้เลือก Create batch inference job
หากเลือก Create campaign จะเป็นการสร้างคำแนะนำแบบ real-time inference

Amazon Personalize-10

ดำเนินการ create batch inference job โดยระบุ solution และ solution version ที่สร้างไว้ก่อนหน้า พร้อมทั้งระบุ input data และ S3 bucket ปลายทางสำหรับผลลัพธ์

Amazon Personalize-11
Amazon Personalize-12
Amazon Personalize-13

เมื่อการทำงานเสร็จสิ้น ไฟล์ชื่อ out ต่อท้าย จะถูกสร้างขึ้นใน S3 bucket ที่ระบุเป็นปลายทาง เมื่อดูเนื้อหาภายในไฟล์จะพบว่ามีการแนะนำรายการ (ในกรณีนี้คือภาพยนตร์) เรียงลำดับตามคะแนนจากมากไปน้อย

{
  "input": {
    "userId": 1
  },
  "output": {
    "recommendedItems": [
      "2081",
      "1380",
      "3793",
      "1035",
.
.
.
      "2692",
      "4308",
      "2797",
      "2671",
      "2712"
    ],
    "scores": [
      0.0088618,
      0.0065327,
      0.0053816,
      0.0053691,
      0.0050853,
      0.0048317,
.
.
.
      0.002566
    ]
  },
  "error": null
}

ค่าใช้จ่าย

แบ่งออกเป็นสามส่วนหลักๆ ได้แก่:

  • การนำเข้าข้อมูล
  • การเทรนนิ่ง
  • การแนะนำ (แบบ Batch/Real-time)

การนำเข้าข้อมูล

คิดค่าใช้จ่าย 0.05 USD ต่อ 1GB ของข้อมูลที่อัปโหลดเข้า Personalize

การเทรนนิ่ง

คิดค่าใช้จ่าย 0.24 USD ต่อชั่วโมงสำหรับเวลาที่ใช้ในการเทรนนิ่ง

การแนะนำ

อ้างอิงจากตารางด้านล่าง

ค่าใช้จ่าย - Amazon Personalize | AWS (https://aws.amazon.com/th/personalize/pricing/?nc1=f_ls)

การประมวลผลแบบ Real-time
เนื่องจากมีการคิดค่าใช้จ่ายแบบ real-time จึงมักมีค่าใช้จ่ายสูงกว่าการประมวลผลแบบ batch โดยใช้แนวคิดที่เรียกว่า Transaction per second (TPS) ซึ่งหมายถึงจำนวนคำขอต่อวินาที และสามารถกำหนดค่าขั้นต่ำของปริมาณงานที่สามารถประมวลผลได้ต่อวินาทีผ่านการตั้งค่า Minimum provisioned transaction per second แต่เนื่องจากค่าต่ำสุดคือ 1 ดังนั้นแม้จะไม่มีคำขอเลย ก็จะถูกเรียกเก็บเงินอย่างน้อย 4 ดอลลาร์ต่อวัน

การแนะนำแบบ Real-time ค่าใช้จ่ายต่อ 1,000 คำขอ
72 ล้านคำขอแรกต่อเดือน 0.0556 USD
648 ล้านคำขอถัดไปต่อเดือน 0.0278 USD
มากกว่า 720 ล้านคำขอต่อเดือน 0.0139 USD

การประมวลผลแบบ Batch
การประมวลผลแบบ batch จะมีค่าใช้จ่ายตามจำนวนคำแนะนำที่ร้องขอ

การแนะนำแบบ Batch ค่าใช้จ่ายต่อ 1,000 คำแนะนำ
20 ล้านคำแนะนำแรกต่อเดือนในแต่ละ Region 0.067 USD
180 ล้านคำแนะนำถัดไปต่อเดือนในแต่ละ Region 0.058 USD
มากกว่า 200 ล้านคำแนะนำต่อเดือนในแต่ละ Region 0.050 USD

สรุป

Amazon Personalize ถือว่าเป็นบริการ Machine Learning ตัวหนึ่ง ซึ่งเราสามารถนำข้อมูลมาทำการ train ได้
จากนั้นตัวบริการก็จะให้ผลลัพธ์เป็นคำแนะนำ แต่ Amazon Personalize ก็มีค่าบริการที่ไม่ถูกเมื่อเทียบกับบริการอื่นๆ ดังนั้นจึงต้องคิดให้ดีว่าจะนำข้อมูลผลลัพธ์ที่ได้(คำแนะนำ) ไปต่อยอดยังไง

บทความต้นฉบับ

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.