พาเพื่อนๆมารู้จักกับ Feature Stores

พาเพื่อนๆมารู้จักกับ Feature Stores
เพราะ Model ML ต้องการ Features

จินตนาการสิ ถ้าต้องทำงานกับ DS หลายสิบคน
Features ของแต่ละคน นอกจากไม่เหมือนกันแล้ว
ยังมีปริมาณที่เยอะอีกมากๆเลยด้วย
การจัดเก็บยิ่งเป็น O(nmds)
n จำนวนแถว data
m จำนวน columns data
ds จำนวน data scientist

:flushed: Feature Stores สร้างขึ้นมาเพื่ออะไร

  • เพื่อต้องการ Share Features ที่สร้างขึ้นมา
    เช่น นายตู่ทำ Features 2 ชุด
    แล้ว นายป้อม บอกว่าขอใช้ Features มาใช้ด้วยสิ
    นายตู่บอก ไม่ให้ !!!
    นายป้อม ก็ต้องสร้างขึ้นมาเองอีก
    ทำให้ซ้ำซ้อน วุ่นวายกันไปหมด
    (นามสมมตินะครับ :face_with_hand_over_mouth:)

ถ้ามี FS (Feature Stores)
ก็ไม่ต้องทะเลาะกันละ
ใครทำ Features เสร็จก็อัพขึ้น FS
ใครอยากใช้กดึงจาก FS มาใช้

  • เพื่อความต่อเนื่องของการใช้ Features
    เพราะ Model มีทั้งช่วงที่ Training
    เราเรียกช่วงนี้ว่า Offline ยังไม่ได้ส่งไปทำนาย
    ทีนี้ Model ของเราแข็งแกร่ง
    พร้อมเผชิญโลกกว้าง
    ก็นำไปใช้ Serving หรือในระบบ Online
    ทำให้ Features ที่ใช้มีความต่อเนื่อง
    ทั้งการนำมา Training และ Serving

  • ช่วยลดเวลาที่ซ้ำซ้อน
    ไม่ต้องมานั่งทำ Feature Engineering ซ้ำกัน
    นายตู่ และนายป้อมก็ไม่ต้องมาทะเลาะกันอีกต่อไป

  • ใครๆในทีม DS ก็เข้าถึง Features เพื่อใช้งานได้

:woman_firefighter: จุดกำเนิดของ Feature Stores
:woman_scientist: ฝั่ง DS ก็งานไม่ทันล้าวว

  • เสียเวลามานั่ง Preprocess Data
  • เสียเวลามา Tuning Model
  • ชั้นไม่อยากมานั่ง Manage Pipeline หร่อกนะ
  • ไม่อยากยุ่งเรื่อง Features บน Production
  • ไม่อยากกังวลเรื่อง Data Consistency
    ในช่วงระหว่าง Traning กับ Serving

:woman_scientist: ฝั่ง DE ก็หัวจะปวด

  • ชั้น Manage Data ฝั่ง Infrastructure นะโว้ย
  • นี่ชั้นยังต้องมานั่งทำ Adhoc ให้แกรอีกหรอนาง DS
  • ขอเวลาไป Manage ฝั่ง Infra หน่อยเถอะพี่จ๋า
  • ทำ Serving Features บน Production ยากนะเออ
  • Data Preprocesing ที่ต้อง Scale ได้ด้วยน่ะเหรอ ถถถถถ lol

:rocket: ลอง Feature Stores สิเว้ยยย วัยรุ่นน !

  • ช่วยทั้งรวมศูนย์กลาง Features ไว้ที่เดียว
    คราวนี้เราไม่ต้องถามนายตู่ หรือนายป้อมละ
    ว่าเห้ยย ทำ Features นี้ยังไงว้าาาา
    เอาไปเก็บไว้ไหนว้าาาาา
    แล้วเอาไปใช้ไงว้าาาาาา

  • Data Model ขึ้นกับ Entity ที่เราสร้าง
    หรือก็คือ ID ที่ใช้ Training หรือ Inferencing
    เน้นเก็บข้อมูลแบบ Wide Table โลด
    อารมณ์ Data Warehouse เลย
    แต่เป็น Data Warehouse ของ Features
    เพื่อใช้นำไปสร้าง Model

  • สามารถใช้งานได้ทั้ง Batch และ Realtime

  • มีการแยก API ทั้ง 2 ส่วน
    คือส่วนของ Training, และ Serving

  • FS ยังช่วยให้เราทำ Feature Validation ได้ด้วย
    หรือก็คือการเช็ค Data ก่อนนำไปใช้งาน
    ซึ่งสำคัญมากในเรื่องของ Data Drift
    เพราะหาก Features มีการเปลี่ยนแปลง
    ก็จะได้เตือนเราได้ทันการ
    หรือทำการสร้าง Trigger
    เพื่อบอกให้ Re-train model ใหม่อีกที
    เพราะ Data มีการเปลี่ยนแปลงของ Distribution

  • ทำเป็น Features Aggregation ก็ได้ด้วยเช่นกัน
    อารมณ์เดียวกับ Data Mart เลย โฮะๆ

:hatching_chick: เพื่อนๆที่สนใจเรื่อง Feature Stores
สามารถไปลองเล่น Product ชื่อ Feast กันดูได้นะเออ

Feast นั้นเดิมททีเป็น Products ของ Gojek
สร้างขึ้นเพราะปัญหาทีม DS ที่มีจำนวนเยอะขึ้น
อีกทั้ง ML Products ที่มีเยอะมากมายอีก
จึงเกิดขึ้นมาเพื่อให้งาน DS ในทีมมีความง่ายขึ้น
และลดความซับซ้อนในงานลงได้เยอะมหาศาลเลย

การใช้งานก็ไม่ยาก
สามารถติดตั้งได้โดยใช้ pip install feast
แล้วทำการ Set up ตามงานที่เราใช้เลย
โดยหลักๆ คือการแบ่งงาน 2 ส่วน
ส่วนของ Model และ Data ที่เก็บไว้ Training
หรือเรียกว่า Offline

และอีกส่วนคือ Serving หรือ Online
ดังนั้นการใช้งานก็ต้องคำนึงถึง Storage
ทั้งทางฝั่ง Offline และ Online ด้วยนั่นเอง
รวมถึง Product ML ต้องการรันแบบไหน
Batch หรือ Realtime

งาน DS ยังมีอีกเยอะเลยสำหรับทีมใหญ่ๆ
ไม่ว่าจะเป็น Data Version Control
Model Version Control
บลาๆๆๆ
ไว้มีโอกาสจะมาเล่าให้ฟังเพิ่มเติมนะ :wink::heart:

เป็นบทความแรกเลยสำหรับ
Data Engineer Cafe
ฝากเนื้อฝากตัวด้วยนะคร้าบบ

3 Likes

งดงามมาก กราบขอบคุณแอดบอยด์มากครัชชช ได้เห็นพลังจากประโยค “:rocket: ลอง Feature Stores สิเว้ยยย วัยรุ่นน !” ฮ่า ๆ ชอบ ๆ

ส่วน Feast นี่ดูน่าสนใจโคตร ๆ คิดว่าน่าจะมีโอกาสได้ใช้แน่ในอนาคต อิอิ

ปล. รออ่านนนนโพสต์ถัดไปเลยครัช :heart:

1 Like

เป็นเกียรติอย่างยิ่งเลยคร้าบบบ พี่กานต์ :star_struck:

1 Like

@zkan ไว้เอาไปขาย bu กัน 55+

พร้อมครับ :fire: