- OpenZL ที่ Meta เปิดตัวคือ เฟรมเวิร์กบีบอัดโอเพนซอร์สแบบใหม่ ที่ให้ การบีบอัดแบบไม่สูญเสียข้อมูล สำหรับข้อมูลที่มีโครงสร้าง โดยสามารถรับรู้รูปแบบข้อมูลและทำกระบวนการแปลงได้อย่างมีประสิทธิภาพ
- แม้จะใช้ขั้นตอนการแปลงที่แตกต่างกันตามแต่ละฟอร์แมตไฟล์ แต่ถูกออกแบบมาให้สามารถถอดกลับไฟล์ทั้งหมดได้ด้วย ตัวแตกไฟล์แบบสากลเพียงตัวเดียว
- สามารถ ส่งโครงสร้างข้อมูลให้ตัวบีบอัดโดยตรง เพื่อปรับกระบวนการแปลงให้เหมาะสม และเลือกจุดสมดุลระหว่างความเร็วกับอัตราการบีบอัดได้ผ่าน คอนฟิกการบีบอัด (config) ที่ผ่านการฝึกแล้ว
- จุดเด่นคือทำงานร่วมกับระบบ Managed Compression ภายในของ Meta ทำให้สามารถ ฝึกใหม่และอัปเดตอัตโนมัติ ตามการเปลี่ยนแปลงของข้อมูลได้
- แสดงประสิทธิภาพสูงกับชุดข้อมูลที่มีโครงสร้างชัดเจน ช่วย ปรับปรุงประสิทธิภาพการประมวลผลของดาต้าเซ็นเตอร์ และชี้ให้เห็นความเป็นไปได้ในการทำให้ระบบนิเวศการบีบอัดเรียบง่ายขึ้นด้วยดีโคเดอร์เพียงตัวเดียว
ภาพรวมของ OpenZL
- OpenZL คือ เฟรมเวิร์กบีบอัดข้อมูลแบบรับรู้ฟอร์แมต ที่ Meta เปิดตัว โดยให้ ประสิทธิภาพการบีบอัดที่ปรับให้เหมาะกับงานเฉพาะ สำหรับข้อมูลแบบมีโครงสร้าง
- หากระบุฟอร์แมตของข้อมูลอย่างชัดเจน ระบบจะใช้กราฟการแปลงภายในเพื่อค้นหารูปแบบและความซ้ำของข้อมูล แล้วบีบอัดได้อย่างมีประสิทธิภาพยิ่งขึ้น
- เป็นแนวคิดต่อยอดจาก Zstandard ที่รวมทั้งประสิทธิภาพของการบีบอัดที่ปรับจูนตามฟอร์แมต และความง่ายในการดูแลรักษาแบบมีไฟล์ปฏิบัติการเดียว
- Zstandard สร้างก้าวกระโดดครั้งใหญ่ในดาต้าเซ็นเตอร์ด้วยการตอบโจทย์ทั้ง ความเร็วและอัตราการบีบอัด แต่ก็มี ข้อจำกัดของการปรับปรุงแบบค่อยเป็นค่อยไป จากความเป็นอัลกอริทึมอเนกประสงค์
- สำหรับข้อมูลที่มีโครงสร้าง การบีบอัดแบบปรับให้เข้ากับรูปแบบข้อมูลมักได้เปรียบกว่าวิธีบีบอัดทั่วไปทั้งในด้านอัตราการบีบอัดและความเร็ว
- อย่างไรก็ตาม การสร้างและดูแล ตัวบีบอัด/ตัวกู้คืนเฉพาะทาง สำหรับแต่ละฟอร์แมตไฟล์มี ภาระสูง
- OpenZL มุ่งให้ได้ทั้งประสิทธิภาพของตัวบีบอัดแบบปรับแต่งเฉพาะ และ ความสะดวกของการใช้งานแบบไบนารีเดียว ไปพร้อมกัน
วิธีบีบอัดตามโครงสร้าง
- ขณะที่ตัวบีบอัดทั่วไปประมวลผลข้อมูลแบบคาดเดารูปแบบ OpenZL จะ รับโครงสร้างข้อมูลเป็นอินพุตอย่างชัดเจน
- ผู้ใช้สามารถอธิบายรูปร่างของข้อมูลได้ผ่าน Simple Data Description Language (SDDL) เช่น แถว คอลัมน์ enum และโครงสร้างแบบซ้อน
- จากข้อมูลนี้ OpenZL จะสร้าง ลำดับการแปลงที่เหมาะสมที่สุด (Plan) ผ่านการฝึกแบบออฟไลน์ด้วยเทรนเนอร์
- จากนั้นในขั้นตอนบีบอัด จะสร้าง กราฟถอดรหัสจริง (Resolved Graph) ตาม Plan และฝังไว้ในเฟรม
ตัวอย่าง: การบีบอัดข้อมูล SAO
- โดยใช้ไฟล์ SAO จาก Silesia Compression Corpus เป็นตัวอย่าง OpenZL จะแยกแต่ละฟิลด์ออกแล้วแปลงเป็น สตรีมข้อมูลชนิดเดียวกัน ก่อนทำการปรับให้เหมาะสมแต่ละส่วน
- พิกัดแกน X (SRA0) มีแนวโน้มเรียงลำดับ จึงใช้ การแปลงแบบ delta
- พิกัดแกน Y (SDEC0) ใช้ข้อจำกัดของช่วงค่าเพื่อทำ transpose transformation
- ฟิลด์ที่เหลือมีจำนวนค่าที่ไม่ซ้ำต่ำ จึงใช้ tokenize transformation เพื่อบีบอัดแบบอาศัยพจนานุกรม
- ผลลัพธ์คือทำอัตราการบีบอัดได้ มากกว่า 2 เท่าเมื่อเทียบกับ zstd และยังมี ความเร็วสูงกว่า (340 MB/s)
การสร้างตัวบีบอัดอัตโนมัติและกระบวนการฝึก
- เทรนเนอร์ของ OpenZL จะ ค้นหาและเรียนรู้กลยุทธ์การบีบอัดโดยอัตโนมัติ จากตัวอย่างข้อมูล
- กระบวนการฝึก: describe(SDDL) → train(สร้าง Plan) → compress(ฝังกราฟ) → decode(กู้คืนด้วยไบนารีเดียว)
- ใช้ control points เพื่อเลือกเส้นทางที่เหมาะสมที่สุดในรันไทม์ตามข้อมูลสถิติ
- แม้นำ Plan ใหม่มาใช้ ก็ยัง ถอดรหัสข้อมูลเดิมได้เหมือนเดิม ทำให้คงความเข้ากันได้ย้อนหลัง
ข้อดีของตัวแตกไฟล์เพียงตัวเดียว
- OpenZL สามารถกู้คืนข้อมูลได้ด้วย ไบนารีตัวแตกไฟล์เพียงตัวเดียว ไม่ว่าจะถูกบีบอัดด้วยฟอร์แมตใดก็ตาม
- ทำ การตรวจสอบด้านความปลอดภัยและความเสถียร เพียงครั้งเดียว แล้วนำไปใช้ได้กับทั้งระบบ
- เมื่ออัปเดตตัวแตกไฟล์ ก็สามารถนำ ประโยชน์ด้านประสิทธิภาพที่ดีขึ้น ไปใช้กับข้อมูลเก่าทั้งหมดได้
- ได้ทั้ง ความเรียบง่ายในการปฏิบัติการ และ ความสม่ำเสมอทั่วทั้งฟลีต
- จัดการหลายฟอร์แมตพร้อมกันได้โดยยัง คงความเข้ากันได้ย้อนหลัง
ผลการเปรียบเทียบประสิทธิภาพ
- ในหลายชุดข้อมูล OpenZL ทำได้ทั้ง อัตราการบีบอัดและความเร็วที่สูงกว่า เมื่อเทียบกับตัวบีบอัดอเนกประสงค์อย่าง zstd และ xz
- SAO: อัตราการบีบอัด 2.06 เท่า, ความเร็วในการกู้คืน 1200 MB/s
- ERA5 (ข้อมูลเชิงตัวเลข): ได้อัตราการบีบอัดที่สูงกว่าในเวลาเท่ากัน หรือเร็วกว่าในอัตราการบีบอัดเท่ากัน
- ในชุดข้อมูล Parquet และ CSV ก็สามารถทำ การปรับแต่งเฉพาะตามฟอร์แมต ได้จากการรับรู้รูปแบบ
- อย่างไรก็ตาม สำหรับข้อมูล ไร้โครงสร้าง เช่นข้อความล้วน ประสิทธิภาพที่ได้มีข้อจำกัด และจะ fallback ไปใช้ zstd เพื่อรับประกันประสิทธิภาพขั้นต่ำ
- สามารถเลือกชุดค่าผสมได้หลากหลายใน 3 แกนคือ อัตราการบีบอัด / ความเร็วการบีบอัด / ความเร็วการกู้คืน ซึ่งให้ ความยืดหยุ่นที่ต่างจากการปรับ “ระดับ” ของตัวบีบอัดแบบดั้งเดิม
การเปลี่ยนแปลงของข้อมูลและการฝึกใหม่อัตโนมัติ
- เชื่อมต่อกับ Managed Compression ของ Meta เพื่อ ฝึกแผนการบีบอัดใหม่โดยอัตโนมัติ เมื่อฟอร์แมตข้อมูลเปลี่ยน
- มีการสุ่มตัวอย่างและประเมินผลเป็นระยะ และหากพบ Plan ที่ดีกว่าจะอัปเดตให้อัตโนมัติ
- ตัวแตกไฟล์ยังคงเดิม จึง ลดความเสี่ยงในการปฏิบัติการ ให้ต่ำที่สุด
การมีส่วนร่วมในระบบนิเวศโอเพนซอร์สและทิศทางในอนาคต
- OpenZL เหมาะกับ ข้อมูลโครงสร้างแบบเวกเตอร์ ตาราง และต้นไม้ และให้ประสิทธิภาพโดดเด่นกับข้อมูลอนุกรมเวลา, ML tensor และตารางฐานข้อมูล
- สำหรับข้อความไร้โครงสร้าง (เช่น enwik, dickens) จะใช้ zstd
- แผนในอนาคต:
- ขยายไลบรารีการแปลงสำหรับข้อมูลอนุกรมเวลาและข้อมูลกริด
- เพิ่มความสามารถของ SDDL ในการแสดงข้อมูลแบบซ้อน
- ปรับปรุงประสิทธิภาพและความเสถียรของระบบค้นหาตัวบีบอัดอัตโนมัติ
- วิธีเข้าร่วมกับชุมชน:
- ดูตัวอย่างและเอกสารได้ที่ เว็บไซต์ OpenZL และ GitHub repository
- ทดสอบฟอร์แมตข้อมูลใหม่และเสนอ Plan
- มีส่วนร่วมได้ทั้งการปรับแต่งเอนจิน C/C++, การเพิ่มการแปลงใหม่ และการทำ benchmark
บทสรุป
- OpenZL คือแนวทางใหม่ที่ ทำให้การบีบอัดแบบรับรู้ฟอร์แมตกลายเป็นมาตรฐาน พร้อมกับ รวมระบบนิเวศเดิมให้ยึดตัวถอดรหัสเพียงตัวเดียวเป็นศูนย์กลาง
- Meta ต้องการใช้สิ่งนี้เพื่อปรับปรุงทั้ง ประสิทธิภาพการบีบอัด ความเร็ว และความง่ายในการบำรุงรักษา ของดาต้าเซ็นเตอร์โดยรวม
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News