บทแนะนำนี้มีขั้นตอน งานเลี้ยงสำหรับการเริ่มต้นอย่างรวดเร็วของ Redis ซึ่งจะแนะนำคุณผ่านตัวอย่างแบบ end-to-end ของการใช้ Feast ร่วมกับ Redis เป็นร้านค้าคุณสมบัติออนไลน์สำหรับการเรียนรู้ของเครื่อง อิงตามบทแนะนำ Feast Quickstart แต่แทนที่จะใช้ร้านค้าออนไลน์เริ่มต้น จะใช้ร้านค้าออนไลน์ของ Redis เพื่อแสดงการคาดการณ์ตามเวลาจริงในวงกว้าง หากคุณไม่คุ้นเคยกับ Feast หรือ Redis วิธีที่เร็วที่สุดในการเริ่มต้นใช้งาน Feast โดยใช้ Redis คือผ่านบทช่วยสอนนี้ โปรดดูที่ร้านค้าคุณลักษณะและงานฉลองโดยใช้บทความบล็อก Redis สำหรับการแนะนำระดับสูง ดูข้อมูลโดยละเอียดเพิ่มเติมเกี่ยวกับ Redis และ Feast ตลอดจนแหล่งข้อมูลเพิ่มเติมที่ส่วนท้ายของบทช่วยสอนนี้
ในบทช่วยสอนนี้ คุณจะ:
- ปรับใช้ร้านค้าคุณลักษณะในพื้นที่ด้วยร้านค้าออฟไลน์ไฟล์ Parquet และร้านค้าออนไลน์ Redis
- สร้างชุดข้อมูลการฝึกอบรมโดยใช้คุณลักษณะอนุกรมเวลาสาธิตจากไฟล์ Parquet
- กำหนดค่าคุณสมบัติ (โหลด) จากร้านค้าออฟไลน์ลงในร้านค้าออนไลน์ของ Redis
- อ่านคุณลักษณะล่าสุดจากร้านค้าออนไลน์ของ Redis เพื่อการอนุมาน
คุณสามารถเรียกใช้บทแนะนำบน Google Colab หรือบนโฮสต์ในพื้นที่ของคุณโดยทำตามขั้นตอนที่แนะนำด้านล่าง
สรุปงานเลี้ยง:
งานเลี้ยง (Fea ture st ore) เป็นที่เก็บฟีเจอร์โอเพ่นซอร์สและเป็นส่วนหนึ่งของ Linux Foundation AI &Data Foundation สามารถให้บริการข้อมูลคุณสมบัติแก่โมเดลจากร้านค้าออนไลน์ที่มีเวลาแฝงต่ำ (สำหรับการให้บริการตามเวลาจริง) หรือร้านค้าออฟไลน์ (สำหรับการฝึกโมเดลหรือการให้บริการแบบกลุ่ม) นอกจากนี้ยังมีการลงทะเบียนส่วนกลางเพื่อให้วิศวกรการเรียนรู้ของเครื่อง และนักวิทยาศาสตร์ข้อมูล สามารถค้นพบคุณลักษณะที่เกี่ยวข้องสำหรับกรณีการใช้งาน ML ด้านล่างเป็นสถาปัตยกรรมระดับสูงของงานฉลอง:
Feast คือไลบรารี Python + CLI ที่เป็นตัวเลือก คุณสามารถติดตั้ง Feast โดยใช้ pip ได้ ซึ่งจะอธิบายในบทช่วยสอนนี้เร็วๆ นี้
Feast with Redis ช่วยแก้ปัญหาทั่วไปหลายประการในกระบวนการนี้:
- การเบี่ยงเบนของการให้บริการฝึกอบรมและข้อมูลที่ซับซ้อน :ค่าคุณลักษณะมักมีอยู่ในหลายตาราง การเข้าร่วมชุดข้อมูลเหล่านี้อาจซับซ้อน ช้า และเกิดข้อผิดพลาดได้ง่าย
- งานฉลองเข้าร่วมตารางเหล่านี้ด้วยตรรกะที่ผ่านการทดสอบการต่อสู้ ซึ่งรับประกันความถูกต้องในช่วงเวลาหนึ่ง เพื่อไม่ให้ค่าฟีเจอร์ในอนาคตรั่วไหลไปยังโมเดลต่างๆ
- งานฉลองเข้าร่วมตารางเหล่านี้ด้วยตรรกะที่ผ่านการทดสอบการต่อสู้ ซึ่งรับประกันความถูกต้องในช่วงเวลาหนึ่ง เพื่อไม่ให้ค่าฟีเจอร์ในอนาคตรั่วไหลไปยังโมเดลต่างๆ
- ความพร้อมใช้งานของฟีเจอร์ออนไลน์ที่มีเวลาแฝงต่ำและหลากหลาย: ในเวลาอนุมาน โมเดลมักต้องการการเข้าถึงคุณลักษณะที่ไม่พร้อมใช้งานและจำเป็นต้องได้รับการคำนวณล่วงหน้าจากแหล่งข้อมูลอื่นในแบบเรียลไทม์
- การนำ Feast ไปใช้งานด้วย Redis คุณจะมั่นใจได้ว่าคุณลักษณะที่จำเป็นจะพร้อมใช้งานอย่างสม่ำเสมอและคำนวณใหม่ ณ เวลาอนุมาน ด้วยเวลาแฝงต่ำและปริมาณงานสูง
- การนำ Feast ไปใช้งานด้วย Redis คุณจะมั่นใจได้ว่าคุณลักษณะที่จำเป็นจะพร้อมใช้งานอย่างสม่ำเสมอและคำนวณใหม่ ณ เวลาอนุมาน ด้วยเวลาแฝงต่ำและปริมาณงานสูง
- คุณสมบัติการนำกลับมาใช้ใหม่ได้และการกำหนดเวอร์ชันโมเดล: ทีมต่างๆ ภายในองค์กรมักไม่สามารถใช้คุณลักษณะซ้ำในโครงการต่างๆ ได้ ส่งผลให้เกิดตรรกะการสร้างคุณลักษณะที่ซ้ำกัน โมเดลมีการพึ่งพาข้อมูลที่จำเป็นต้องมีการกำหนดเวอร์ชัน เช่น เมื่อรันการทดสอบ A/B ในเวอร์ชันของโมเดล
- งานฉลองช่วยให้ค้นพบและทำงานร่วมกันในคุณลักษณะที่ใช้ก่อนหน้านี้ และเปิดใช้งานการกำหนดเวอร์ชันของชุดคุณลักษณะ (ผ่านบริการคุณลักษณะ)
- งานฉลองเปิดใช้งานการแปลงคุณลักษณะเพื่อให้ผู้ใช้สามารถใช้ตรรกะการเปลี่ยนแปลงซ้ำในกรณีการใช้งานและรุ่นออนไลน์/ออฟไลน์
ฉลองด้วยภาพรวมบทแนะนำ Redis
ในบทช่วยสอนนี้ เราใช้ฟีเจอร์สโตร์เพื่อสร้างข้อมูลการฝึกและการอนุมานโมเดลออนไลน์สำหรับโมเดลการทำนายความพึงพอใจของผู้ขับขี่ในการแชร์รถ ในสถานการณ์ข้อมูลสาธิต:
- เราได้สำรวจผู้ขับขี่บางคนเพื่อพิจารณาว่าพวกเขาพึงพอใจกับประสบการณ์การใช้แอปแชร์รถมากน้อยเพียงใด
- เราต้องการสร้างการคาดคะเนความพึงพอใจของผู้ขับขี่สำหรับผู้ใช้ที่เหลือ เพื่อให้เราติดต่อผู้ใช้ที่อาจไม่พึงพอใจได้
ขั้นตอนการสอน:
- ติดตั้ง Redis และเรียกใช้ Redis-Server ในพื้นหลัง
- ติดตั้งงานฉลองด้วย Redis
- สร้างที่เก็บคุณลักษณะและกำหนด Redis เป็นร้านค้าออนไลน์
- ลงทะเบียนข้อกำหนดคุณลักษณะและปรับใช้ที่เก็บคุณลักษณะของคุณ
- สร้างข้อมูลการฝึก
- โหลดคุณสมบัติลงในร้านค้าออนไลน์ Redis ของคุณ
- ดึงเวกเตอร์คุณลักษณะสำหรับการอนุมาน
ขั้นตอนที่ 1:ติดตั้ง Redis และเรียกใช้เซิร์ฟเวอร์ Redis ในพื้นหลัง
ในการติดตั้ง Redis ให้ทำตามทางเลือกใดทางหนึ่งด้านล่าง:
อูบุนตู:
$ sudo snap install redis
นักเทียบท่า:
$ docker run --name redis --rm -p 6379:6379 -d redis
Mac (Homebrew):
$ brew install redis
ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีการอื่นในการติดตั้ง Redis ได้ที่นี่ ดูข้อมูลการกำหนดค่าเพิ่มเติมได้ในคู่มือเริ่มต้นอย่างรวดเร็วของ Redis
ขั้นตอนที่ 2:ติดตั้งงานฉลองด้วย Redis
ติดตั้ง Feast SDK และ CLI โดยใช้ pip:
$ pip install 'feast[redis]'
ขั้นตอนที่ 3:สร้างที่เก็บคุณลักษณะและกำหนดค่า Redis เป็นร้านค้าออนไลน์
ที่เก็บคุณลักษณะคือไดเร็กทอรีที่มีการกำหนดค่าของที่เก็บคุณลักษณะและคุณลักษณะแต่ละรายการ
ขั้นตอนที่ 3a:สร้างที่เก็บคุณลักษณะ
วิธีที่ง่ายที่สุดในการสร้างที่เก็บคุณลักษณะใหม่คือการใช้คำสั่ง feast init สิ่งนี้จะสร้างนั่งร้านพร้อมข้อมูลสาธิตเบื้องต้น
$ feast init feature_repo $ cd feature_repo
เอาท์พุต:
Creating a new Feast repository in /Users/nl/dev_fs/feast/feature_repo
ลองดูที่ repo สาธิตที่ได้เอง แบ่งออกเป็น:
- feature_store.yaml มีการตั้งค่าสาธิตการกำหนดค่าแหล่งข้อมูลและร้านค้าออนไลน์
example.py
มีคำจำกัดความคุณลักษณะการสาธิต- data/ มีข้อมูลดิบของไม้ปาร์เก้
ขั้นตอนที่ 3b:กำหนดค่า Redis เป็นร้านค้าออนไลน์ในไฟล์การกำหนดค่า YAML
ในการกำหนดค่า Redis เป็นร้านค้าออนไลน์ เราจำเป็นต้องตั้งค่าประเภทและ connection_string สำหรับ online_store ใน feature_store.yaml ดังนี้
project: my_project |
ผู้ให้บริการกำหนดตำแหน่งที่มีข้อมูลดิบ (สำหรับการสร้างข้อมูลการฝึกอบรมและค่าคุณลักษณะสำหรับการให้บริการ) ในการสาธิตนี้ในเครื่อง ร้านค้าออนไลน์ กำหนดตำแหน่งที่จะเป็นจริง (โหลด) ค่าคุณลักษณะในฐานข้อมูลร้านค้าออนไลน์ (สำหรับการให้บริการ)
โปรดทราบว่าการกำหนดค่าข้างต้นแตกต่างจากไฟล์ YAML เริ่มต้นที่ให้ไว้สำหรับบทช่วยสอนที่ใช้ร้านค้าออนไลน์เริ่มต้นแทน :
project: my_project |
ดังนั้นโดยการเพิ่มสองบรรทัดนี้สำหรับ
online_store(
type: redis, connection_string: localhost:6379) ในไฟล์ YAML ตามด้านบน จากนั้น Feast จะสามารถอ่านและเขียนจาก Redis เป็นร้านค้าออนไลน์ได้ Redis Online Store เป็นส่วนหนึ่งของรหัสหลักของ Feast และด้วยเหตุนี้ Feast จึงรู้วิธีใช้ Redis ทันทีที่แกะกล่อง
ขั้นตอนที่ 3c:การตรวจสอบข้อกำหนดคุณลักษณะการสาธิตที่ example.py
มาดูคำจำกัดความของคุณสมบัติการสาธิตที่ example.py (หากต้องการดูในเทอร์มินัล คุณสามารถเรียกใช้
cat
example.
py)
Example.py
ขั้นตอนที่ 3d:ตรวจสอบข้อมูลดิบ
สุดท้าย เรามาตรวจสอบข้อมูลดิบกัน ข้อมูลดิบที่เรามีในการสาธิตนี้จัดเก็บไว้ในไฟล์ปาร์เก้ในเครื่อง ชุดข้อมูลจะรวบรวมสถิติรายชั่วโมงของคนขับในแอปแชร์รถ
ขั้นตอนที่ 4:ลงทะเบียนข้อกำหนดคุณลักษณะและปรับใช้ที่เก็บคุณลักษณะของคุณ
ตอนนี้เราเรียกใช้
feast applyเพื่อลงทะเบียนมุมมองคุณลักษณะและเอนทิตีที่กำหนดไว้ใน example.py . คำสั่ง Apply จะสแกนไฟล์ Python ในไดเร็กทอรีปัจจุบันเพื่อดูคุณสมบัติ/คำจำกัดความของเอนทิตี ลงทะเบียนอ็อบเจ็กต์ และปรับใช้โครงสร้างพื้นฐาน ในตัวอย่างนี้ จะอ่านว่า example.py (ดังแสดงด้านบน) และตั้งค่าร้านค้าออนไลน์ Redis
$ feast apply
เอาท์พุต:
Registered entity driver_id |
ขั้นตอนที่ 5:การสร้างข้อมูลการฝึกอบรม
ในการฝึกโมเดล เราต้องการคุณลักษณะและป้ายกำกับ บ่อยครั้ง ข้อมูลป้ายกำกับนี้ถูกจัดเก็บแยกต่างหาก (เช่น คุณมีตารางหนึ่งจัดเก็บผลการสำรวจผู้ใช้และอีกชุดหนึ่งของตารางที่มีค่าคุณลักษณะ)
ผู้ใช้สามารถสอบถามตารางของป้ายชื่อที่มีการประทับเวลา และส่งไปยัง Feast เป็น dataframe ของเอนทิตีสำหรับการสร้างข้อมูลการฝึกอบรม ในหลายกรณี Feast จะรวมตารางที่เกี่ยวข้องอย่างชาญฉลาดเพื่อสร้างเวกเตอร์คุณลักษณะที่เกี่ยวข้อง
- โปรดทราบว่าเรารวมการประทับเวลาเนื่องจากเราต้องการใช้คุณลักษณะสำหรับไดรเวอร์เดียวกันในการประทับเวลาต่างๆ ในแบบจำลอง
งูหลาม
(คัดลอกโค้ดด้านล่างลงในไฟล์ gen_train_data.py แล้วเรียกใช้):
เอาท์พุต:
----- Feature schema ----- |
ขั้นตอนที่ 6:โหลดคุณลักษณะต่างๆ ลงในร้านค้าออนไลน์ Redis ของคุณ
ตอนนี้เราจะโหลดหรือทำให้ข้อมูลคุณลักษณะเป็นจริงในร้านค้าออนไลน์ Redis ของคุณ เพื่อให้เราสามารถให้บริการคุณลักษณะล่าสุดแก่โมเดลสำหรับการคาดคะเนออนไลน์
materializeคำสั่งอนุญาตให้ผู้ใช้สร้างคุณลักษณะในช่วงเวลาในอดีตที่เฉพาะเจาะจงในร้านค้าออนไลน์ จะสอบถามแหล่งที่มาของชุดงานสำหรับมุมมองคุณลักษณะทั้งหมดในช่วงเวลาที่กำหนด และโหลดค่าคุณลักษณะล่าสุดลงในร้านค้าออนไลน์ที่กำหนดค่าไว้
materialize–
incrementalคำสั่งจะนำเข้าเฉพาะข้อมูลใหม่ที่มาถึงในร้านค้าออฟไลน์ นับตั้งแต่การโทรครั้งล่าสุด
$ CURRENT_TIME=$(date -u +"%Y-%m-%dT%H:%M:%S")
$ feast materialize-incremental $CURRENT_TIME
เอาท์พุต:
Materializing 1 feature views to 2021-08-23 16:25:46+00:00 into the redis online store. |
ขั้นตอนที่ 7:การดึงเวกเตอร์คุณลักษณะสำหรับการอนุมาน
ในเวลาอนุมาน เราจำเป็นต้องอ่านค่าคุณลักษณะล่าสุดอย่างรวดเร็วสำหรับไดรเวอร์ต่างๆ (ซึ่งอาจมีอยู่เฉพาะในแหล่งที่มาของชุดงาน) จากที่เก็บคุณลักษณะออนไลน์ของ Redis โดยใช้
get_online_features(). จากนั้นจึงป้อนเวกเตอร์คุณลักษณะเหล่านี้ไปยังโมเดลได้
งูหลาม
(คัดลอกโค้ดด้านล่างลงในไฟล์ get_feature_vectors.py แล้วเรียกใช้):
เอาท์พุต
{ |
ยินดีด้วย! คุณถึงจุดสิ้นสุดของบทช่วยสอนแล้ว หากต้องการปิดเซิร์ฟเวอร์ Redis ที่ทำงานอยู่เบื้องหลัง คุณสามารถใช้
redis-cli shutdownคำสั่ง
สรุปบทแนะนำ:
ในบทช่วยสอนนี้ คุณได้ปรับใช้ที่เก็บฟีเจอร์ในเครื่องด้วยร้านค้าออฟไลน์ไฟล์ Parquet และร้านค้าออนไลน์ Redis จากนั้นคุณสร้างชุดข้อมูลการฝึกอบรมโดยใช้คุณสมบัติอนุกรมเวลาจากไฟล์ Parquet จากนั้น คุณได้แสดงค่าคุณลักษณะจากร้านค้าออฟไลน์ลงในร้านค้าออนไลน์ของ Redis สุดท้าย คุณอ่านคุณสมบัติล่าสุดจากร้านค้าออนไลน์ของ Redis เพื่อการอนุมาน ด้วย Redis เป็นร้านค้าออนไลน์ คุณสามารถอ่านคุณลักษณะล่าสุดได้อย่างรวดเร็วสำหรับกรณีการใช้งาน ML แบบเรียลไทม์ โดยมีความหน่วงแฝงต่ำและปริมาณงานสูงตามขนาด
จะเป็นอย่างไรต่อไป
- อ่านหน้าแนวคิดงานฉลองเพื่อทำความเข้าใจโมเดลข้อมูลงานฉลอง และอ่านหน้าสถาปัตยกรรมงานฉลอง
- อ่านคู่มือการกำหนดค่าแบบเต็มสำหรับ Feast with Redis และโมเดลข้อมูลที่ใช้เก็บค่าคุณลักษณะใน Redis
- กรณีศึกษา – เรียนรู้จากเพื่อนร่วมงานของคุณ:เรียนรู้วิธีที่บริษัทต่างๆ ใช้ร้านค้าฟีเจอร์ที่มี Redis เป็นร้านค้าออนไลน์ (Wix, Swiggy, Comcast, Zomato, AT&T, DoorDash, iFood) และเจาะจงว่าพวกเขาใช้ Feast กับ Redis อย่างไรสำหรับ ร้านค้าออนไลน์ของพวกเขา (Gojek, Udaan, Robinhood)
- อ่านเกี่ยวกับ Azure Managed Feature Store ด้วย Feast และ Redis และทำตามบทแนะนำการเริ่มต้นใช้งาน Feast บน Azure รวมถึงบทช่วยสอน Feast อื่นๆ
- คุณยังสามารถค้นหาข้อมูลเพิ่มเติมเกี่ยวกับ Feast หรือ Redis ได้ในหน้าแนะนำผลิตภัณฑ์ทั่วไปใน Feast และ Redis ตามลำดับ
เข้าร่วมผู้ใช้ Feast และผู้มีส่วนร่วมคนอื่นๆ ใน Slack และเป็นส่วนหนึ่งของชุมชน!