แนะนำ Storage Buckets บน Hugging Face Hub: พื้นที่เก็บข้อมูลที่ยืดหยุ่นสำหรับงาน Machine Learning
Hugging Face Hub กำลังก้าวไปอีกขั้นในการพัฒนาและทำให้ปัญญาประดิษฐ์เป็นประชาธิปไตย ด้วยการเปิดตัว Storage Buckets เครื่องมือใหม่ที่จะเข้ามาช่วยจัดการข้อมูลและโมเดลสำหรับงาน Machine Learning ได้อย่างมีประสิทธิภาพยิ่งขึ้น
ทำไมต้องมี Storage Buckets?
การทำงานกับ Machine Learning มักเกี่ยวข้องกับการจัดการข้อมูลปริมาณมหาศาลและไฟล์ที่เปลี่ยนแปลงอยู่เสมอ เช่น:
- การเทรนโมเดล: การเขียน Checkpoints และ Optimizer States ซ้ำไปมาตลอดการรัน
- Data Pipelines: การประมวลผลชุดข้อมูลดิบแบบวนซ้ำ
- Agents: การจัดเก็บ Traces, Memory, และ Knowledge Graphs ที่ใช้ร่วมกัน
ความต้องการพื้นฐานในทุกกรณีคือการเขียนที่รวดเร็ว, การเขียนทับเมื่อจำเป็น, การซิงค์ไดเรกทอรี, การลบไฟล์ที่ไม่จำเป็น และการทำให้กระบวนการดำเนินไปอย่างราบรื่น Git ซึ่งเดิมทีใช้จัดการโค้ด อาจไม่ตอบโจทย์เหล่านี้ได้ดีนัก
Storage Buckets คืออะไร?
Storage Buckets คือพื้นที่เก็บข้อมูลแบบไม่ระบุเวอร์ชัน (non-versioned storage container) บน Hub สามารถใช้งานได้ทั้งในระดับผู้ใช้ (user) และองค์กร (organization) มีระบบการจัดการสิทธิ์เช่นเดียวกับทรัพยากรอื่นๆ บน Hugging Face สามารถตั้งค่าเป็นส่วนตัว (private) หรือสาธารณะ (public) ได้ โดยมีหน้าเว็บให้เข้าชม และสามารถเข้าถึงได้ผ่านโปรแกรมด้วย Handle เช่น hf://buckets/username/my-training-bucket
หัวใจสำคัญของ Buckets คือการทำงานบน Xet ซึ่งเป็น Storage Backend แบบ Chunk-based ของ Hugging Face การทำงานแบบนี้มีข้อดีเหนือกว่าการจัดการไฟล์แบบเดิมๆ ตรงที่:
- Deduplication: Xet จะแบ่งเนื้อหาออกเป็นส่วนย่อยๆ (chunks) และทำการขจัดข้อมูลที่ซ้ำซ้อนกัน หากคุณอัปโหลดชุดข้อมูลที่ประมวลผลแล้วซึ่งคล้ายกับข้อมูลดิบมาก ส่วนของข้อมูล (chunks) ที่ซ้ำกันจะไม่ถูกอัปโหลดใหม่ ทำให้ประหยัด Bandwidth, ลดเวลาในการถ่ายโอน และเพิ่มประสิทธิภาพในการจัดเก็บ
- ประสิทธิภาพสำหรับ ML: เหมาะอย่างยิ่งกับเวิร์กโฟลว์ ML ที่มักสร้าง Artifacts ที่เกี่ยวข้องกัน เช่น ข้อมูลดิบและข้อมูลที่ประมวลผล, Checkpoints ที่แตกต่างกันเล็กน้อย, หรือ Traces ของ Agent
สำหรับลูกค้าองค์กร การคิดค่าบริการจะอิงตามพื้นที่จัดเก็บที่ถูก Deduplicate แล้ว ซึ่งหมายความว่าส่วนของข้อมูลที่ใช้ร่วมกันจะช่วยลดค่าใช้จ่ายในการจัดเก็บได้อย่างมีนัยสำคัญ
Pre-warming: นำข้อมูลไปไว้ใกล้ Compute
Buckets ตั้งอยู่บน Hub ซึ่งหมายถึงการเป็น Global Storage โดยปริยาย แต่สำหรับเวิร์กโฟลว์ที่ต้องการความเร็วสูง เช่น Distributed Training หรือ Large-scale Pipelines ตำแหน่งที่ตั้งของ Storage มีผลโดยตรงต่อ Throughput
Pre-warming ช่วยให้คุณสามารถนำข้อมูลที่ใช้งานบ่อย (hot data) ไปไว้ใกล้กับ Cloud Provider และ Region ที่คุณใช้งาน Compute ได้ แทนที่ข้อมูลจะต้องเดินทางข้าม Region ทุกครั้งที่อ่าน คุณสามารถระบุตำแหน่งที่ต้องการ และ Buckets จะทำให้แน่ใจว่าข้อมูลพร้อมใช้งานเมื่อ Job เริ่มต้น ฟีเจอร์นี้มีประโยชน์อย่างยิ่งสำหรับ Training Clusters ที่ต้องการเข้าถึงชุดข้อมูลขนาดใหญ่หรือ Checkpoints อย่างรวดเร็ว รวมถึงการตั้งค่าแบบ Multi-region ที่ส่วนต่างๆ ของ Pipeline ทำงานใน Cloud ที่ต่างกัน
Hugging Face กำลังร่วมมือกับ AWS และ GCP ในเบื้องต้น และจะขยายไปยัง Cloud Provider อื่นๆ ในอนาคต
เริ่มต้นใช้งาน Storage Buckets
คุณสามารถตั้งค่า Bucket ได้ภายในเวลาไม่ถึง 2 นาที ด้วย hf CLI
- ติดตั้งและเข้าสู่ระบบ CLI:
pip install huggingface_hub[cli]
huggingface-cli login- สร้าง Bucket สำหรับโปรเจกต์ของคุณ:
hf buckets create my-training-bucket --namespace username- ซิงค์ไดเรกทอรีที่มีข้อมูล (เช่น Checkpoints) เข้าสู่ Bucket:
สมมติว่างานเทรนของคุณเขียน Checkpoints ไปยัง ./checkpoints
hf buckets sync ./checkpoints hf://buckets/username/my-training-bucket- ทดลอง Dry Run (สำหรับไฟล์ขนาดใหญ่):
เพื่อดูแผนการทำงานก่อนที่จะมีการย้ายข้อมูลจริง
hf buckets sync ./checkpoints hf://buckets/username/my-training-bucket --dry-run- บันทึกแผนการทำงาน:
คุณสามารถบันทึกแผนการไว้เพื่อตรวจสอบและนำไปใช้ในภายหลัง
hf buckets sync ./checkpoints hf://buckets/username/my-training-bucket --plan-path sync_plan.json
hf buckets apply-plan sync_plan.json- ตรวจสอบ Bucket:
ผ่าน CLI หรือเข้าชมบน Hub โดยตรงที่ ขอบคุณ แหล่งข้อมูล
https://huggingface.co/buckets/username/my-training-bucket
hf buckets list hf://buckets/username/my-training-bucketนอกจากนี้ ยังมีคำสั่งอื่นๆ เช่น hf buckets cp สำหรับคัดลอกไฟล์ทีละไฟล์ และ hf buckets remove สำหรับลบ Object ที่ไม่จำเป็น
การใช้งาน Buckets ผ่าน Python
ฟังก์ชันทั้งหมดข้างต้นสามารถใช้งานผ่าน Library huggingface_hub ใน Python ได้เช่นกัน (ตั้งแต่เวอร์ชัน 1.5.0) API มีรูปแบบคล้ายคลึงกัน: การสร้าง, การซิงค์, และการตรวจสอบ ทำให้การผสานรวม Buckets เข้ากับสคริปต์เทรน, Data Pipelines, หรือ Service อื่นๆ เป็นไปอย่างราบรื่น Python Client ยังรองรับการอัปโหลดเป็นชุด, การดาวน์โหลดแบบเลือกรายการ, การลบ, และการย้าย Bucket เพื่อการควบคุมที่ละเอียดมากขึ้น
การทำงานร่วมกับ Filesystem (fsspec)
Buckets ยังรองรับการทำงานผ่าน HfFileSystem ซึ่งเป็น Filesystem ที่เข้ากันได้กับ fsspec หมายความว่าคุณสามารถใช้คำสั่ง Filesystem มาตรฐาน เช่น การลิสต์, อ่าน, เขียน, และ Glob เนื้อหาใน Bucket ได้ และ Library ใดๆ ที่รองรับ fsspec ก็สามารถเข้าถึง Buckets ได้โดยตรง
เนื่องจาก fsspec เป็น Interface มาตรฐานของ Python สำหรับ Remote Filesystem Library อย่าง pandas, Polars, และ Dask จึงสามารถอ่านและเขียนข้อมูลจาก Buckets ได้โดยตรง โดยใช้ Path hf:// โดยไม่ต้องตั้งค่าเพิ่มเติม
import pandas as pd
from huggingface_hub import hf_fs
# ใช้ HfFileSystem กับ fsspec
fs = hf_fs.HfFileSystem()
# อ่านข้อมูลจาก Bucket โดยตรง
df = pd.read_csv("hf://buckets/username/my-bucket/data.csv")
# เขียนข้อมูลไปยัง Bucket
df.to_csv("hf://buckets/username/my-bucket/processed_data.csv")สิ่งนี้ช่วยให้การเชื่อมต่อ Buckets เข้ากับ Data Workflow ที่มีอยู่ทำได้ง่าย โดยไม่ต้องเปลี่ยนแปลงวิธีการอ่านหรือเขียนไฟล์ในโค้ดของคุณ
จาก Buckets สู่ Versioned Repos
Buckets คือพื้นที่ที่รวดเร็วและยืดหยุ่นสำหรับ Artifacts ที่ยังอยู่ในระหว่างการเคลื่อนไหว เมื่อ Artifact นั้นกลายเป็นผลลัพธ์ที่เสถียรแล้ว มักจะถูกจัดเก็บใน Versioned Model หรือ Dataset Repo
Hugging Face มีแผนที่จะรองรับการถ่ายโอนข้อมูลโดยตรงระหว่าง Buckets และ Repos ในทั้งสองทิศทาง ทำให้สามารถโปรโมต Checkpoint สุดท้ายไปยัง Model Repo หรือ Commit Shards ที่ประมวลผลแล้วไปยัง Dataset Repo ได้เมื่อ Pipeline เสร็จสมบูรณ์ ทำให้ชั้นการทำงาน (working layer) และชั้นการเผยแพร่ (publishing layer) แยกออกจากกัน แต่ยังคงอยู่ใน Workflow แบบ Hub-native ที่ต่อเนื่อง
บทสรุป
Storage Buckets นำเสนอชั้นการจัดเก็บข้อมูลที่ขาดหายไปบน Hub ช่วยให้คุณมีพื้นที่แบบ Hub-native สำหรับส่วนที่ต้องเปลี่ยนแปลงบ่อยและต้องการ Throughput สูงของ ML เช่น Checkpoints, ข้อมูลที่ประมวลผลแล้ว, Agent Traces, Logs และอื่นๆ
เนื่องจากทำงานบน Xet, Buckets ไม่เพียงแต่นำมาซึ่งความง่ายในการใช้งานที่เหนือกว่า Git แต่ยังมอบประสิทธิภาพที่เหนือกว่าสำหรับ Artifacts ที่เกี่ยวข้องกัน ซึ่งเป็นสิ่งที่ระบบ AI สร้างขึ้นตลอดเวลา ส่งผลให้การถ่ายโอนข้อมูลเร็วขึ้น, Deduplication ดีขึ้น, และสำหรับ Enterprise Plans ยังช่วยลดค่าใช้จ่ายในการจัดเก็บอีกด้วย
หากคุณใช้งาน Hub อยู่แล้ว Buckets จะช่วยให้คุณจัดการ Workflow ได้ครบวงจรมากขึ้น หากคุณคุ้นเคยกับการจัดเก็บแบบ S3-style, Buckets มอบรูปแบบที่คุ้นเคย พร้อมการปรับปรุงที่สอดคล้องกับ AI Artifacts และเส้นทางที่ชัดเจนสู่การเผยแพร่บน Hub
Buckets รวมอยู่ในแผนการจัดเก็บข้อมูลที่มีอยู่ของ Hub บัญชีฟรีมีพื้นที่ให้เริ่มต้นใช้งาน และแผน PRO และ Enterprise ก็มีขีดจำกัดที่สูงขึ้น สามารถดูรายละเอียดเพิ่มเติมได้ที่ [Storage Page](ขอบคุณ แหล่งข้อมูล
https://huggingface.co/settings/billing/storage)
แหล่งข้อมูลเพิ่มเติม:
- [คู่มือการติดตั้ง CLI](ขอบคุณ แหล่งข้อมูล
https://huggingface.co/docs/huggingfacehub/main/en/packagereference/cli#huggingface-cli-buckets) - [คู่มือและเอกสารอ้างอิง CLI](ขอบคุณ แหล่งข้อมูล
https://huggingface.co/docs/huggingfacehub/main/en/packagereference/cli) - [ตัวอย่าง Bucket บน Hub](ขอบคุณ แหล่งข้อมูล
https://huggingface.co/buckets/username/my-training-bucket) (โปรดแทนที่usernameด้วยชื่อผู้ใช้ของคุณ)
#StorageBuckets #HuggingFaceHub #MachineLearning #AI
ขอบคุณ แหล่งข้อมูล
https://huggingface.co/blog/storage-buckets