พื้นที่เก็บข้อมูลนี้มีจุดมุ่งหมายเพื่อสร้างต้นแบบเครื่องมือค้นหาที่ขับเคลื่อนด้วยการเรียนรู้ด้วยเครื่อง (ML) เพื่อดึงและแนะนำผลิตภัณฑ์ตามข้อความหรือรูปภาพ นี่คือคำแนะนำทีละขั้นตอนเกี่ยวกับวิธีสร้างโมเดล SageMaker ด้วยการฝึกอบรมล่วงหน้าด้านภาษาที่ตัดกัน (CLIP) ใช้โมเดลเพื่อเข้ารหัสรูปภาพและข้อความลงในการฝัง นำเข้าการฝังลงในดัชนี Amazon OpenSearch Service และสืบค้นดัชนี ใช้ฟังก์ชัน OpenSearch Service k-nearest Neighbors (KNN)
การเรียกค้นแบบฝัง (EBR) ใช้อย่างดีในระบบการค้นหาและการแนะนำ ใช้อัลกอริธึมการค้นหาเพื่อนบ้านที่ใกล้ที่สุด (โดยประมาณ) เพื่อค้นหารายการที่คล้ายกันหรือเกี่ยวข้องอย่างใกล้ชิดจากร้านค้าที่ฝัง (หรือที่เรียกว่าฐานข้อมูลเวกเตอร์) กลไกการค้นหาแบบคลาสสิกขึ้นอยู่กับการจับคู่คำสำคัญเป็นอย่างมาก และไม่สนใจความหมายของคำศัพท์หรือบริบทของคำค้นหา เป้าหมายของ EBR คือการให้ผู้ใช้สามารถค้นหาผลิตภัณฑ์ที่เกี่ยวข้องมากที่สุดโดยใช้ข้อความอิสระ เป็นที่นิยมเนื่องจากเมื่อเปรียบเทียบกับการจับคู่คำสำคัญ จะใช้แนวคิดเชิงความหมายในกระบวนการดึงข้อมูล
ใน repo นี้ เรามุ่งเน้นไปที่การสร้างต้นแบบเครื่องมือค้นหาที่ขับเคลื่อนด้วยการเรียนรู้ของเครื่อง (ML) เพื่อดึงและแนะนำผลิตภัณฑ์ตามข้อความหรือรูปภาพที่สืบค้น ซึ่งใช้ Amazon OpenSearch Service และฟังก์ชัน k-nearest Neighbors (KNN) รวมถึง Amazon SageMaker และคุณสมบัติการอนุมานแบบไร้เซิร์ฟเวอร์ Amazon SageMaker เป็นบริการที่มีการจัดการเต็มรูปแบบซึ่งช่วยให้นักพัฒนาและนักวิทยาศาสตร์ข้อมูลทุกคนสามารถสร้าง ฝึกอบรม และปรับใช้โมเดล ML สำหรับกรณีการใช้งานใดๆ ด้วยโครงสร้างพื้นฐาน เครื่องมือ และเวิร์กโฟลว์ที่มีการจัดการเต็มรูปแบบ Amazon OpenSearch Service เป็นบริการที่มีการจัดการเต็มรูปแบบซึ่งทำให้การวิเคราะห์บันทึกเชิงโต้ตอบ การตรวจสอบแอปพลิเคชันแบบเรียลไทม์ การค้นหาเว็บไซต์ และอื่นๆ เป็นเรื่องง่าย
Contrastive Language-Image Pre-Training (CLIP) เป็นโครงข่ายประสาทเทียมที่ได้รับการฝึกอบรมเกี่ยวกับคู่รูปภาพและข้อความที่หลากหลาย โครงข่ายประสาทเทียม CLIP สามารถฉายภาพและข้อความในพื้นที่แฝงเดียวกันได้ ซึ่งหมายความว่าสามารถเปรียบเทียบได้โดยใช้การวัดความคล้ายคลึงกัน เช่น ความคล้ายคลึงโคไซน์ คุณสามารถใช้ CLIP เพื่อเข้ารหัสรูปภาพหรือคำอธิบายผลิตภัณฑ์ของคุณเป็นการฝัง จากนั้นจัดเก็บไว้ในฐานข้อมูลเวกเตอร์ จากนั้นลูกค้าของคุณจะสามารถดำเนินการสืบค้นในฐานข้อมูลเพื่อเรียกดูผลิตภัณฑ์ที่พวกเขาอาจสนใจได้ ในการสืบค้นฐานข้อมูล ลูกค้าของคุณจะต้องระบุรูปภาพหรือข้อความที่ป้อน จากนั้นอินพุตจะถูกเข้ารหัสด้วย CLIP ก่อนที่จะส่งไปยังฐานข้อมูลเวกเตอร์สำหรับการค้นหา KNN
ฐานข้อมูลเวกเตอร์ที่นี่มีบทบาทเป็นเครื่องมือค้นหา ฐานข้อมูลเวกเตอร์นี้รองรับการรวมรูปภาพและการค้นหาด้วยข้อความ ซึ่งมีประโยชน์อย่างยิ่งในอุตสาหกรรมอีคอมเมิร์ซและการค้าปลีก ตัวอย่างหนึ่งของการค้นหาด้วยรูปภาพคือลูกค้าของคุณสามารถค้นหาผลิตภัณฑ์โดยการถ่ายภาพ จากนั้นจึงสอบถามฐานข้อมูลโดยใช้รูปภาพ เกี่ยวกับการค้นหาด้วยข้อความ ลูกค้าของคุณสามารถอธิบายผลิตภัณฑ์ในรูปแบบข้อความอิสระ จากนั้นใช้ข้อความเป็นแบบสอบถาม ผลการค้นหาจะถูกจัดเรียงตามคะแนนความคล้ายคลึงกัน (ความคล้ายคลึงโคไซน์) หากรายการสินค้าคงคลังของคุณคล้ายกับข้อความค้นหามากกว่า (รูปภาพหรือข้อความที่ป้อน) คะแนนจะเข้าใกล้ 1 มากขึ้น มิฉะนั้นคะแนนจะใกล้กับ 0. ผลิตภัณฑ์ K ยอดนิยมในผลการค้นหาของคุณคือผลิตภัณฑ์ที่เกี่ยวข้องมากที่สุดในสินค้าคงคลังของคุณ
OpenSearch Service ให้การจับคู่ข้อความและการฝังการค้นหาตาม KNN เราจะใช้การค้นหาแบบฝัง KNN ในโซลูชันนี้ คุณสามารถใช้ทั้งรูปภาพและข้อความเป็นแบบสอบถามเพื่อค้นหารายการจากสินค้าคงคลัง การใช้อิมเมจแบบครบวงจรนี้และทดสอบแอปพลิเคชันการค้นหาที่ใช้ KNN ประกอบด้วยสองขั้นตอน:
โซลูชันใช้บริการและคุณสมบัติของ AWS ต่อไปนี้:
ในเทมเพลต opensearch.yml
จะสร้างโดเมน OpenSearch และมอบบทบาท SageMaker Studio Execution ของคุณเพื่อใช้โดเมนนั้น
ในเทมเพลต sagemaker-studio-opensearch.yml
จะสร้างโดเมน SageMaker ใหม่ โปรไฟล์ผู้ใช้ในโดเมน และโดเมน OpenSearch คุณจึงใช้โปรไฟล์ผู้ใช้ StageMaker เพื่อสร้าง POC ได้
คุณสามารถเลือกเทมเพลตใดเทมเพลตหนึ่งเพื่อดำเนินการโดยทำตามขั้นตอนด้านล่าง
ขั้นตอนที่ 1: ไปที่ CloudFormation Service ในคอนโซล AWS ของคุณ
ขั้นตอนที่ 2: อัปโหลดเทมเพลตเพื่อสร้าง CloudFormation stack clip-poc-stack
หากคุณใช้งาน SageMaker Studio อยู่แล้ว คุณสามารถใช้เทมเพลต opensearch.yml
ได้
หากคุณไม่มี SageMaker Studio ในขณะนี้ คุณสามารถใช้เทมเพลต sagemaker-studio-opensearch.yml
ได้ มันจะสร้างโดเมนสตูดิโอและโปรไฟล์ผู้ใช้ให้กับคุณ
ขั้นตอนที่ 3: ตรวจสอบสถานะของสแตก CloudFormation จะใช้เวลาประมาณ 20 นาทีในการสร้างให้เสร็จสิ้น
เมื่อสร้างสแต็กแล้ว คุณสามารถไปที่ SageMaker Console แล้วคลิก Open Studio
เพื่อเข้าสู่สภาพแวดล้อม Jupyter
หากในระหว่างดำเนินการ CloudFormation แสดงข้อผิดพลาดเกี่ยวกับไม่พบบทบาทที่เชื่อมโยงบริการ OpenSearch คุณต้องสร้างบทบาทที่เชื่อมโยงกับบริการโดยการเรียกใช้ aws iam create-service-linked-role --aws-service-name es.amazonaws.com
ในบัญชี AWS ของคุณ
โปรดเปิดไฟล์ blog_clip.ipynb
ด้วย SageMaker Studio และใช้เคอร์เนล Data Science Python 3
คุณสามารถดำเนินการเซลล์ได้ตั้งแต่เริ่มต้น
ชุดข้อมูล Amazon Berkeley Objects ใช้ในการนำไปใช้งาน ชุดข้อมูลคือชุดรายการผลิตภัณฑ์ 147,702 รายการพร้อมข้อมูลเมตาหลายภาษา และรูปภาพแคตตาล็อกที่ไม่ซ้ำกัน 398,212 รายการ เราจะใช้รูปภาพรายการและชื่อรายการเป็นภาษาอังกฤษแบบสหรัฐอเมริกาเท่านั้น เพื่อจุดประสงค์ในการสาธิต เราจะใช้ผลิตภัณฑ์ประมาณ 1,600 รายการ
ส่วนนี้สรุปข้อควรพิจารณาด้านต้นทุนสำหรับการสาธิตนี้ การจัดทำ POC ให้เสร็จสิ้นจะทำให้ OpenSearch Cluster และ SageMaker Studio ใช้งานได้ ซึ่งจะมีค่าใช้จ่ายน้อยกว่า 2 USD ต่อชั่วโมง หมายเหตุ: ราคาที่แสดงด้านล่างคำนวณโดยใช้ภูมิภาค us-east-1 ค่าใช้จ่ายแตกต่างกันไปในแต่ละภูมิภาค และต้นทุนอาจมีการเปลี่ยนแปลงเมื่อเวลาผ่านไปเช่นกัน (ราคาที่นี่บันทึกไว้ 2022-11-22)
รายละเอียดต้นทุนเพิ่มเติมอยู่ด้านล่าง
บริการ OpenSearch – ราคาแตกต่างกันไปขึ้นอยู่กับการใช้งานประเภทอินสแตนซ์และต้นทุนพื้นที่จัดเก็บ สำหรับข้อมูลเพิ่มเติม โปรดดูราคา Amazon OpenSearch Service
t3.small.search
ทำงานประมาณ 1 ชั่วโมงโดยมีค่าใช้จ่าย 0.036 USD ต่อชั่วโมงSageMaker – ราคาจะแตกต่างกันไปขึ้นอยู่กับการใช้งานอินสแตนซ์ EC2 สำหรับแอป Studio, งาน Batch Transform และอุปกรณ์ปลายทาง Serverless Inference สำหรับข้อมูลเพิ่มเติม โปรดดูราคา Amazon SageMaker
ml.t3.medium
สำหรับ Studio Notebooks ใช้เวลาประมาณ 1 ชั่วโมงที่ 0.05 USD ต่อชั่วโมงml.c5.xlarge
สำหรับ Batch Transform ใช้เวลาประมาณ 6 นาทีที่ 0.204 USD ต่อชั่วโมงS3 – ต้นทุนต่ำ ราคาจะแตกต่างกันไปขึ้นอยู่กับขนาดของโมเดล/อาร์ติแฟกต์ที่เก็บไว้ 50 TB แรกในแต่ละเดือนจะมีราคาเพียง 0.023 USD ต่อ GB ที่จัดเก็บ สำหรับข้อมูลเพิ่มเติม โปรดดูราคา Amazon S3
ดูการมีส่วนร่วมสำหรับข้อมูลเพิ่มเติม
ห้องสมุดนี้ได้รับอนุญาตภายใต้ใบอนุญาต MIT-0 ดูไฟล์ใบอนุญาต