ที่เก็บนี้ถือสินทรัพย์ที่เสริมบทความ " ออฟไลน์ไปยังออนไลน์: ที่เก็บข้อมูลคุณสมบัติสำหรับระบบแนะนำแบบเรียลไทม์กับ Nvidia Merlin " เขียนขึ้นมาสำหรับบล็อก Nvidia Developer
เราให้ตัวอย่างของสถาปัตยกรรมระบบแนะนำและให้คำแนะนำการปรับใช้คลาวด์สำหรับการใช้งานการผลิต ตัวอย่างแต่ละตัวอย่างขึ้นอยู่กับ Redis และ Nvidia Merlin Framework ซึ่งมีการสร้างบล็อกจำนวนมากสำหรับการสร้างระบบแนะนำ
มี 3 ตัวอย่างภายในที่เก็บนี้
ขนาดใหญ่ขยายตัวในสถาปัตยกรรมที่สองสำหรับกรณีการใช้งานที่ต้องการการฝึกอบรมหรือการอนุมานขนาดใหญ่ (> 1 GPU)
ตัวอย่างแต่ละตัวอย่างได้รับการออกแบบให้ทำงานในพื้นที่บนระบบที่เปิดใช้งาน Nvidia GPU ด้วยนักเทียบท่าและนักเทียบท่า เราขอแนะนำให้ดำเนินการทั้งหมดต่อไปนี้ในอินสแตนซ์คลาวด์ด้วย Nvidia GPU (โดยเฉพาะอย่างยิ่ง AWS Pytorch Ami)
อย่างไรก็ตามเรายังมีชุดของสคริปต์ Terraform และสมุดบันทึก Ansible ที่สามารถปรับใช้โครงสร้างพื้นฐานที่จำเป็นในการดำเนินการตัวอย่างในอินสแตนซ์ AWS

ระบบแนะนำ "ออฟไลน์" ใช้การคำนวณแบบแบทช์เพื่อประมวลผลข้อมูลจำนวนมากแล้วจัดเก็บไว้สำหรับการดึงข้อมูลในภายหลัง แผนภาพด้านบนแสดงตัวอย่างของระบบดังกล่าวที่ใช้วิธีการสองหอเพื่อสร้างคำแนะนำจากนั้นจัดเก็บไว้ในฐานข้อมูล Redis สำหรับการดึงข้อมูลในภายหลัง
โน้ตบุ๊กออฟไลน์ให้วิธีการสร้างระบบแนะนำประเภทนี้รวมถึงรถไฟและส่งออกโมเดลที่จำเป็นสำหรับการเรียกใช้ระบบแนะนำออนไลน์ในส่วนต่อไปนี้
ในการดำเนินการสมุดบันทึกให้เรียกใช้สิ่งต่อไปนี้
$ cd offline-batch-recsys/
$ docker compose up # -d to daemonizeจากนั้นเปิดลิงก์ที่สร้างโดย Jupyter ในเบราว์เซอร์

ระบบคำแนะนำ "ออนไลน์" สร้างคำแนะนำตามความต้องการ เมื่อเทียบกับระบบที่มุ่งเน้นแบทช์ระบบออนไลน์นั้นมีข้อ จำกัด ในเวลาแฝง เมื่อออกแบบระบบเหล่านี้ระยะเวลาในการสร้างคำแนะนำน่าจะเป็นปัจจัยที่สำคัญที่สุด โดยทั่วไปจะมีประมาณ 100-300ms แต่ละส่วนของระบบต้องการส่วนประกอบที่ไม่เพียง แต่มีประสิทธิภาพ แต่สามารถปรับขนาดได้กับผู้ใช้และรายการหลายล้านรายการ การสร้างระบบแนะนำออนไลน์มีข้อ จำกัด มากกว่าระบบแบทช์อย่างไรก็ตามผลลัพธ์มักจะเป็นคำแนะนำที่ดีกว่าเนื่องจากข้อมูล (คุณสมบัติ) สามารถอัปเดตได้แบบเรียลไทม์ แผนภาพด้านบนแสดงตัวอย่างของสถาปัตยกรรมนี้
ตัวอย่างก่อนหน้านี้สำหรับคำแนะนำแบทช
aws s3 cp s3://redisventures/merlin/merlin-recsys-data.zip ./data
ในการดำเนินการสมุดบันทึกให้เรียกใช้สิ่งต่อไปนี้
$ cd online-multi-stage-recsys/
$ docker compose up # -d to daemonizeส่วนนี้มีโน๊ตบุ๊คสอง: หนึ่งสำหรับการปรับใช้ร้านค้าคุณลักษณะ (REDIS) และการสร้างดัชนีเวกเตอร์ (REDIS) และอีกอันสำหรับการกำหนดและเรียกใช้โมเดลวงดนตรีเพื่อเรียกใช้ท่อทั้งหมด (ไทรทัน)
หมายเหตุ: ตรวจสอบให้แน่ใจว่าได้เรียกใช้สมุดบันทึกแรกก่อนที่สองหรือรุ่นจะไม่ดำเนินการ

สมุดบันทึกสุดท้ายที่แสดงวิธีจัดการชุดข้อมูลขนาดใหญ่มากเมื่อโมเดลการฝึกอบรมเช่น DLRM สำหรับระบบแนะนำ องค์กรขนาดใหญ่มักจะมีผู้ใช้และรายการหลายล้านคน ตารางการฝังทั้งหมดของโมเดลอาจไม่พอดีกับ GPU เดียว สำหรับสิ่งนี้ Nvidia ได้สร้างกรอบ Hugect
Hugect เป็นส่วนหนึ่งของกรอบ Nvidia Merlin และเพิ่มสิ่งอำนวยความสะดวกสำหรับการฝึกอบรมแบบกระจายและการให้บริการแบบจำลองคำแนะนำ รายละเอียดสมุดบันทึกที่นี่มุ่งเน้นไปที่การปรับใช้และการให้บริการของ Hugect และให้ DLRM รุ่นที่ผ่านการฝึกอบรมมาก่อนซึ่งสามารถใช้สำหรับตัวอย่าง ข้อมูลเพิ่มเติมเกี่ยวกับการฝึกอบรมแบบกระจายกับ Hugect สามารถพบได้ที่นี่
ในการดำเนินการสมุดบันทึกท้องถิ่นให้เรียกใช้สิ่งต่อไปนี้
$ cd large-scale-recsys/
$ docker compose up # -d to daemonizeโฟลเดอร์นี้มีสคริปต์ Terraform และ Ansible Playbooks ที่ปรับใช้
ทั้งหมดใน Amazon Web Services

ตัวอย่างที่นำเสนอในที่เก็บนี้สามารถทำงานบนโครงสร้างพื้นฐานที่มีการเปลี่ยนแปลงได้ด้วยการเปลี่ยนแปลงน้อยที่สุด นี่เป็นวิธีที่รวดเร็วในการปรับใช้โครงสร้างพื้นฐานนี้เพื่อลองใช้ท่อระบบคำแนะนำโดยละเอียดที่นี่ ดู readMe ภายในการปรับใช้คลาวด์เพื่อเพิ่มเติม
แบบจำลองในบทช่วยสอนนี้สามารถเรียกคืนได้ด้วย AWS CLI โดยใช้งาน
aws s3 cp s3://redisventures/merlin/merlin-recsys-data.zip ./data
ลิงก์ repostories ต่อไปนี้ไปยังรหัส/สินทรัพย์ที่ใช้ในบทความและสมุดบันทึก
สมุดบันทึกที่นี่สร้างขึ้นจากการทำงานของสมุดบันทึกที่มีอยู่แล้วมากมายเช่น
เราขอแนะนำให้อ่าน