Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Redis

เริ่มต้นใช้งานงานฉลองด้วย Redis:บทแนะนำการเริ่มต้นอย่างรวดเร็วของร้านคุณลักษณะแมชชีนเลิร์นนิง

บทแนะนำนี้มีขั้นตอน งานเลี้ยงสำหรับการเริ่มต้นอย่างรวดเร็วของ Redis ซึ่งจะแนะนำคุณผ่านตัวอย่างแบบ end-to-end ของการใช้ Feast ร่วมกับ Redis เป็นร้านค้าคุณสมบัติออนไลน์สำหรับการเรียนรู้ของเครื่อง อิงตามบทแนะนำ Feast Quickstart แต่แทนที่จะใช้ร้านค้าออนไลน์เริ่มต้น จะใช้ร้านค้าออนไลน์ของ Redis เพื่อแสดงการคาดการณ์ตามเวลาจริงในวงกว้าง หากคุณไม่คุ้นเคยกับ Feast หรือ Redis วิธีที่เร็วที่สุดในการเริ่มต้นใช้งาน Feast โดยใช้ Redis คือผ่านบทช่วยสอนนี้ โปรดดูที่ร้านค้าคุณลักษณะและงานฉลองโดยใช้บทความบล็อก Redis สำหรับการแนะนำระดับสูง ดูข้อมูลโดยละเอียดเพิ่มเติมเกี่ยวกับ Redis และ Feast ตลอดจนแหล่งข้อมูลเพิ่มเติมที่ส่วนท้ายของบทช่วยสอนนี้

ในบทช่วยสอนนี้ คุณจะ:

  1. ปรับใช้ร้านค้าคุณลักษณะในพื้นที่ด้วยร้านค้าออฟไลน์ไฟล์ Parquet และร้านค้าออนไลน์ Redis
  2. สร้างชุดข้อมูลการฝึกอบรมโดยใช้คุณลักษณะอนุกรมเวลาสาธิตจากไฟล์ Parquet
  3. กำหนดค่าคุณสมบัติ (โหลด) จากร้านค้าออฟไลน์ลงในร้านค้าออนไลน์ของ Redis
  4. อ่านคุณลักษณะล่าสุดจากร้านค้าออนไลน์ของ Redis เพื่อการอนุมาน

คุณสามารถเรียกใช้บทแนะนำบน Google Colab หรือบนโฮสต์ในพื้นที่ของคุณโดยทำตามขั้นตอนที่แนะนำด้านล่าง

เริ่มต้นใช้งานงานฉลองด้วย Redis:บทแนะนำการเริ่มต้นอย่างรวดเร็วของร้านคุณลักษณะแมชชีนเลิร์นนิง สรุปงานเลี้ยง:

งานเลี้ยง (Fea ture st ore) เป็นที่เก็บฟีเจอร์โอเพ่นซอร์สและเป็นส่วนหนึ่งของ Linux Foundation AI &Data Foundation สามารถให้บริการข้อมูลคุณสมบัติแก่โมเดลจากร้านค้าออนไลน์ที่มีเวลาแฝงต่ำ (สำหรับการให้บริการตามเวลาจริง) หรือร้านค้าออฟไลน์ (สำหรับการฝึกโมเดลหรือการให้บริการแบบกลุ่ม) นอกจากนี้ยังมีการลงทะเบียนส่วนกลางเพื่อให้วิศวกรการเรียนรู้ของเครื่อง และนักวิทยาศาสตร์ข้อมูล สามารถค้นพบคุณลักษณะที่เกี่ยวข้องสำหรับกรณีการใช้งาน ML ด้านล่างเป็นสถาปัตยกรรมระดับสูงของงานฉลอง:

Feast คือไลบรารี Python + CLI ที่เป็นตัวเลือก คุณสามารถติดตั้ง Feast โดยใช้ pip ได้ ซึ่งจะอธิบายในบทช่วยสอนนี้เร็วๆ นี้

Feast with Redis ช่วยแก้ปัญหาทั่วไปหลายประการในกระบวนการนี้:

  1. การเบี่ยงเบนของการให้บริการฝึกอบรมและข้อมูลที่ซับซ้อน :ค่าคุณลักษณะมักมีอยู่ในหลายตาราง การเข้าร่วมชุดข้อมูลเหล่านี้อาจซับซ้อน ช้า และเกิดข้อผิดพลาดได้ง่าย
    • งานฉลองเข้าร่วมตารางเหล่านี้ด้วยตรรกะที่ผ่านการทดสอบการต่อสู้ ซึ่งรับประกันความถูกต้องในช่วงเวลาหนึ่ง เพื่อไม่ให้ค่าฟีเจอร์ในอนาคตรั่วไหลไปยังโมเดลต่างๆ
  2. ความพร้อมใช้งานของฟีเจอร์ออนไลน์ที่มีเวลาแฝงต่ำและหลากหลาย: ในเวลาอนุมาน โมเดลมักต้องการการเข้าถึงคุณลักษณะที่ไม่พร้อมใช้งานและจำเป็นต้องได้รับการคำนวณล่วงหน้าจากแหล่งข้อมูลอื่นในแบบเรียลไทม์
    • การนำ Feast ไปใช้งานด้วย Redis คุณจะมั่นใจได้ว่าคุณลักษณะที่จำเป็นจะพร้อมใช้งานอย่างสม่ำเสมอและคำนวณใหม่ ณ เวลาอนุมาน ด้วยเวลาแฝงต่ำและปริมาณงานสูง
  3. คุณสมบัติการนำกลับมาใช้ใหม่ได้และการกำหนดเวอร์ชันโมเดล: ทีมต่างๆ ภายในองค์กรมักไม่สามารถใช้คุณลักษณะซ้ำในโครงการต่างๆ ได้ ส่งผลให้เกิดตรรกะการสร้างคุณลักษณะที่ซ้ำกัน โมเดลมีการพึ่งพาข้อมูลที่จำเป็นต้องมีการกำหนดเวอร์ชัน เช่น เมื่อรันการทดสอบ A/B ในเวอร์ชันของโมเดล
    • งานฉลองช่วยให้ค้นพบและทำงานร่วมกันในคุณลักษณะที่ใช้ก่อนหน้านี้ และเปิดใช้งานการกำหนดเวอร์ชันของชุดคุณลักษณะ (ผ่านบริการคุณลักษณะ)
    • งานฉลองเปิดใช้งานการแปลงคุณลักษณะเพื่อให้ผู้ใช้สามารถใช้ตรรกะการเปลี่ยนแปลงซ้ำในกรณีการใช้งานและรุ่นออนไลน์/ออฟไลน์

ฉลองด้วยภาพรวมบทแนะนำ Redis

ในบทช่วยสอนนี้ เราใช้ฟีเจอร์สโตร์เพื่อสร้างข้อมูลการฝึกและการอนุมานโมเดลออนไลน์สำหรับโมเดลการทำนายความพึงพอใจของผู้ขับขี่ในการแชร์รถ ในสถานการณ์ข้อมูลสาธิต: 

  • เราได้สำรวจผู้ขับขี่บางคนเพื่อพิจารณาว่าพวกเขาพึงพอใจกับประสบการณ์การใช้แอปแชร์รถมากน้อยเพียงใด
  • เราต้องการสร้างการคาดคะเนความพึงพอใจของผู้ขับขี่สำหรับผู้ใช้ที่เหลือ เพื่อให้เราติดต่อผู้ใช้ที่อาจไม่พึงพอใจได้

ขั้นตอนการสอน:

  1. ติดตั้ง Redis และเรียกใช้ Redis-Server ในพื้นหลัง
  2. ติดตั้งงานฉลองด้วย Redis
  3. สร้างที่เก็บคุณลักษณะและกำหนด Redis เป็นร้านค้าออนไลน์
  4. ลงทะเบียนข้อกำหนดคุณลักษณะและปรับใช้ที่เก็บคุณลักษณะของคุณ
  5. สร้างข้อมูลการฝึก
  6. โหลดคุณสมบัติลงในร้านค้าออนไลน์ Redis ของคุณ
  7. ดึงเวกเตอร์คุณลักษณะสำหรับการอนุมาน 

ขั้นตอนที่ 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
registry: data/registry.db
provider: local
online_store:
  type: redis
  connection_string: localhost:6379

ผู้ให้บริการกำหนดตำแหน่งที่มีข้อมูลดิบ (สำหรับการสร้างข้อมูลการฝึกอบรมและค่าคุณลักษณะสำหรับการให้บริการ) ในการสาธิตนี้ในเครื่อง ร้านค้าออนไลน์ กำหนดตำแหน่งที่จะเป็นจริง (โหลด) ค่าคุณลักษณะในฐานข้อมูลร้านค้าออนไลน์ (สำหรับการให้บริการ)

โปรดทราบว่าการกำหนดค่าข้างต้นแตกต่างจากไฟล์ YAML เริ่มต้นที่ให้ไว้สำหรับบทช่วยสอนที่ใช้ร้านค้าออนไลน์เริ่มต้นแทน :

project: my_project
registry: data/registry.db
provider: local
online_store:
    path: data/online_store.db

ดังนั้นโดยการเพิ่มสองบรรทัดนี้สำหรับ

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:ตรวจสอบข้อมูลดิบ

สุดท้าย เรามาตรวจสอบข้อมูลดิบกัน ข้อมูลดิบที่เรามีในการสาธิตนี้จัดเก็บไว้ในไฟล์ปาร์เก้ในเครื่อง ชุดข้อมูลจะรวบรวมสถิติรายชั่วโมงของคนขับในแอปแชร์รถ

เริ่มต้นใช้งานงานฉลองด้วย Redis:บทแนะนำการเริ่มต้นอย่างรวดเร็วของร้านคุณลักษณะแมชชีนเลิร์นนิง

ขั้นตอนที่ 4:ลงทะเบียนข้อกำหนดคุณลักษณะและปรับใช้ที่เก็บคุณลักษณะของคุณ

ตอนนี้เราเรียกใช้

feast apply
เพื่อลงทะเบียนมุมมองคุณลักษณะและเอนทิตีที่กำหนดไว้ใน example.py . คำสั่ง Apply จะสแกนไฟล์ Python ในไดเร็กทอรีปัจจุบันเพื่อดูคุณสมบัติ/คำจำกัดความของเอนทิตี ลงทะเบียนอ็อบเจ็กต์ และปรับใช้โครงสร้างพื้นฐาน ในตัวอย่างนี้ จะอ่านว่า example.py (ดังแสดงด้านบน) และตั้งค่าร้านค้าออนไลน์ Redis

$ feast apply

เอาท์พุต:

Registered entity driver_id
Registered feature view driver_hourly_stats
Deploying infrastructure for driver_hourly_stats

ขั้นตอนที่ 5:การสร้างข้อมูลการฝึกอบรม

ในการฝึกโมเดล เราต้องการคุณลักษณะและป้ายกำกับ บ่อยครั้ง ข้อมูลป้ายกำกับนี้ถูกจัดเก็บแยกต่างหาก (เช่น คุณมีตารางหนึ่งจัดเก็บผลการสำรวจผู้ใช้และอีกชุดหนึ่งของตารางที่มีค่าคุณลักษณะ)

ผู้ใช้สามารถสอบถามตารางของป้ายชื่อที่มีการประทับเวลา และส่งไปยัง Feast เป็น dataframe ของเอนทิตีสำหรับการสร้างข้อมูลการฝึกอบรม ในหลายกรณี Feast จะรวมตารางที่เกี่ยวข้องอย่างชาญฉลาดเพื่อสร้างเวกเตอร์คุณลักษณะที่เกี่ยวข้อง

  • โปรดทราบว่าเรารวมการประทับเวลาเนื่องจากเราต้องการใช้คุณลักษณะสำหรับไดรเวอร์เดียวกันในการประทับเวลาต่างๆ ในแบบจำลอง

งูหลาม

(คัดลอกโค้ดด้านล่างลงในไฟล์ gen_train_data.py แล้วเรียกใช้):

เอาท์พุต:

----- Feature schema -----

<class 'pandas.core.frame.DataFrame'>
Int64Index: 3 entries, 0 to 2
Data columns (total 6 columns):
#   Column                              Non-Null Count  Dtype             
---  ------                              --------------  -----             
0   event_timestamp                     3 non-null      datetime64[ns, UTC]
1   driver_id                           3 non-null      int64             
2   label_driver_reported_satisfaction  3 non-null      int64             
3   conv_rate                           3 non-null      float32           
4   acc_rate                            3 non-null      float32           
5   avg_daily_trips                     3 non-null      int32             
dtypes: datetime64[ns, UTC](1), float32(2), int32(1), int64(2)
memory usage: 132.0 bytes
None

----- Example features -----

                  event_timestamp  driver_id  ...  acc_rate  avg_daily_trips
0 2021-08-23 15:12:55.489091+00:00       1003  ...  0.120588              938
1 2021-08-23 15:49:55.489089+00:00       1002  ...  0.504881              635
2 2021-08-23 16:14:55.489075+00:00       1001  ...  0.138416              606

[3 rows x 6 columns]

ขั้นตอนที่ 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.

driver_hourly_stats from 2021-08-22 16:25:47+00:00 to 2021-08-23 16:25:46+00:00:
100%|████████████████████████████████████████████| 5/5 [00:00<00:00, 592.05it/s]

ขั้นตอนที่ 7:การดึงเวกเตอร์คุณลักษณะสำหรับการอนุมาน

ในเวลาอนุมาน เราจำเป็นต้องอ่านค่าคุณลักษณะล่าสุดอย่างรวดเร็วสำหรับไดรเวอร์ต่างๆ (ซึ่งอาจมีอยู่เฉพาะในแหล่งที่มาของชุดงาน) จากที่เก็บคุณลักษณะออนไลน์ของ Redis โดยใช้

get_online_features()
. จากนั้นจึงป้อนเวกเตอร์คุณลักษณะเหล่านี้ไปยังโมเดลได้

งูหลาม

(คัดลอกโค้ดด้านล่างลงในไฟล์ get_feature_vectors.py แล้วเรียกใช้):

เอาท์พุต

{
'acc_rate': [0.5732735991477966, 0.7828438878059387],
'avg_daily_trips': [33, 984],
'conv_rate': [0.15498852729797363, 0.6263588070869446],
'driver_id': [1004, 1005]
}

ยินดีด้วย! คุณถึงจุดสิ้นสุดของบทช่วยสอนแล้ว หากต้องการปิดเซิร์ฟเวอร์ 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 และเป็นส่วนหนึ่งของชุมชน!