พาเพื่อนๆมารู้จักกับ Feature Stores
เพราะ Model ML ต้องการ Features
จินตนาการสิ ถ้าต้องทำงานกับ DS หลายสิบคน
Features ของแต่ละคน นอกจากไม่เหมือนกันแล้ว
ยังมีปริมาณที่เยอะอีกมากๆเลยด้วย
การจัดเก็บยิ่งเป็น O(nmds)
n จำนวนแถว data
m จำนวน columns data
ds จำนวน data scientist
Feature Stores สร้างขึ้นมาเพื่ออะไร
- เพื่อต้องการ Share Features ที่สร้างขึ้นมา
เช่น นายตู่ทำ Features 2 ชุด
แล้ว นายป้อม บอกว่าขอใช้ Features มาใช้ด้วยสิ
นายตู่บอก ไม่ให้ !!!
นายป้อม ก็ต้องสร้างขึ้นมาเองอีก
ทำให้ซ้ำซ้อน วุ่นวายกันไปหมด
(นามสมมตินะครับ )
ถ้ามี FS (Feature Stores)
ก็ไม่ต้องทะเลาะกันละ
ใครทำ Features เสร็จก็อัพขึ้น FS
ใครอยากใช้กดึงจาก FS มาใช้
-
เพื่อความต่อเนื่องของการใช้ Features
เพราะ Model มีทั้งช่วงที่ Training
เราเรียกช่วงนี้ว่า Offline ยังไม่ได้ส่งไปทำนาย
ทีนี้ Model ของเราแข็งแกร่ง
พร้อมเผชิญโลกกว้าง
ก็นำไปใช้ Serving หรือในระบบ Online
ทำให้ Features ที่ใช้มีความต่อเนื่อง
ทั้งการนำมา Training และ Serving -
ช่วยลดเวลาที่ซ้ำซ้อน
ไม่ต้องมานั่งทำ Feature Engineering ซ้ำกัน
นายตู่ และนายป้อมก็ไม่ต้องมาทะเลาะกันอีกต่อไป -
ใครๆในทีม DS ก็เข้าถึง Features เพื่อใช้งานได้
จุดกำเนิดของ Feature Stores
ฝั่ง DS ก็งานไม่ทันล้าวว
- เสียเวลามานั่ง Preprocess Data
- เสียเวลามา Tuning Model
- ชั้นไม่อยากมานั่ง Manage Pipeline หร่อกนะ
- ไม่อยากยุ่งเรื่อง Features บน Production
- ไม่อยากกังวลเรื่อง Data Consistency
ในช่วงระหว่าง Traning กับ Serving
ฝั่ง DE ก็หัวจะปวด
- ชั้น Manage Data ฝั่ง Infrastructure นะโว้ย
- นี่ชั้นยังต้องมานั่งทำ Adhoc ให้แกรอีกหรอนาง DS
- ขอเวลาไป Manage ฝั่ง Infra หน่อยเถอะพี่จ๋า
- ทำ Serving Features บน Production ยากนะเออ
- Data Preprocesing ที่ต้อง Scale ได้ด้วยน่ะเหรอ ถถถถถ lol
ลอง 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 เลย โฮะๆ
เพื่อนๆที่สนใจเรื่อง 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
บลาๆๆๆ
ไว้มีโอกาสจะมาเล่าให้ฟังเพิ่มเติมนะ
เป็นบทความแรกเลยสำหรับ
Data Engineer Cafe
ฝากเนื้อฝากตัวด้วยนะคร้าบบ