מה הם Safetensors ומדוע הם עדיפים על .ckpt (pickletensor)?

Categorized as AI/ML, Open Source Tagged , , , , ,
Save and Share:

Safetensors הוא פורמט מודל יוצא דופן שנועד לאחסון מאובטח של טנסורים, והוא מתהדר במהירות וביצועים מרשימים בהשוואה לחלופות רבות בתחום. לא רק ש-Safetensors מהיר להפליא, אלא שהוא גם תוכנן תוך שימת דגש על פשטות ובטיחות, מה שמייחד אותו מפורמטים מסורתיים רבים המשמשים בלמידת מכונה.

מדוע לבחור ב-Safetensors?

עם שפע של פורמטים זמינים ללמידת מכונה ואחסון נתונים, אתם עשויים לתהות מה מייחד את Safetensors. ובכן, בואו נקדיש רגע להשוואה בין חלק מהפורמטים הללו כדי להבין כיצד Safetensors מספק מענה לפרמטרים מרכזיים:

  • בטוח: האם קובץ שהורד באופן אקראי לא יריץ קוד שרירותי?
  • אפס-העתקה (Zero-copy): האם קריאת הקובץ דורשת יותר זיכרון מהקובץ המקורי?
  • טעינה עצלה (Lazy loading): האם ניתן לבדוק את הקובץ מבלי לטעון את הכל? והאם ניתן לטעון רק חלק מהטנסורים בו מבלי לסרוק את כל הקובץ (חשוב בהגדרה מבוזרת)?
  • שליטה בפריסה (Layout control): האם ניתן לשלוט במיקום הטנסורים בתוך הקובץ כדי להבטיח גישה מהירה לטנסורים בודדים?
  • אין מגבלת גודל קובץ: האם יש מגבלה על גודל הקובץ?
  • גמישות: האם ניתן לשמור קוד מותאם אישית בפורמט ולהשתמש בו מאוחר יותר ללא קוד נוסף?
  • Bfloat16: האם הפורמט תומך באופן מקורי ב-bfloat16 ללא צורך בפתרונות מוזרים?

כל סימן ✔ מייצג נוכחות, ❌ היעדר, ~ נוכחות חלקית ו-? נוכחות לא ידועה של תכונה.

פורמטבטוחאפס-העתקהטעינה עצלהללא מגבלת גודל קובץשליטה בפריסהגמישותBfloat16
SafeTensors
pickle (PyTorch)
H5 (Tensorflow)~~
SavedModel (Tensorflow)
MsgPack (flax)
Protobuf (ONNX)
Cap'n'Proto~~
Numpy (npy,npz)??
pdparams (Paddle)

מהשוואה זו, ניתן לראות ש-Safetensors עומד או עולה על התכונות המוצעות על ידי פורמטי מודלים אחרים. הוא בולט במיוחד בזכות יכולתו ל'אפס-העתקה' של נתונים וטעינה עצלה, שיכולים לשפר משמעותית את יעילות הטיפול בנתונים במשימות למידת מכונה.

כמה השוואות ראויות לציון

למרות שלכל הפורמטים יש את היתרונות הייחודיים שלהם, בואו נבחן כיצד Safetensors מתמודד מול חלק מהפורמטים הנפוצים יותר:

  • Pickle (PyTorch): פורמט בשימוש נרחב, אבל ל-pickle יש חיסרון משמעותי – הוא לא בטוח מכיוון שהוא מאפשר ביצוע קוד שרירותי.
  • H5 (Tensorflow): למרות שהוא מאובטח, הוא לא תומך באפס-העתקה, תכונה חיונית לטיפול יעיל בנתונים.
  • SavedModel (Tensorflow): פורמט זה ספציפי ל-Tensorflow וחסר גמישות עבור יישומים אחרים.
  • Numpy (npz): למרות שהוא פופולרי, פורמט זה אינו תומך ב-bfloat16, תכונה חשובה יותר ויותר בעולם ה-ML.

מתחת למכסה המנוע של Safetensors

אם נצלול קצת יותר לעומק לתוך Safetensors, נגלה שזה לא רק פורמט נתונים, אלא שילוב של בחירות עיצוביות מתחשבות המשפרות את הבטיחות, היעילות והתועלת:

  • אפס-העתקה: העיצוב של Safetensors מאפשר אפס-העתקה אמיתית על ה-CPU אם הקובץ כבר נמצא במטמון. ב-GPU, למרות שהעתקה תמיד הכרחית עקב היעדר מטמון דיסק, העיצוב עוקף את הצורך להקצות את כל הטנסורים על ה-CPU בכל נקודת זמן נתונה.
  • סדר בתים (Endianness): Safetensors משתמש בסדר בתים קטן (little-endian), בחירה פופולרית באחסון נתונים.
  • סדר: הוא מאמץ סידור 'C' או סדר ראשי-שורות (row-major). בחירה זו מתיישבת עם התקן הנפוץ באחסון נתונים.
  • צעדים (Stride): צעדים אינם נתמכים. יש לארוז את כל הטנסורים לפני סריאליזציה. החלטה עיצובית זו התקבלה על סמך דפוסי שימוש נוכחיים בפורמטים סריאליים.

צעד נוסף קדימה

מעבר להיותו פורמט אחסון נתונים יעיל ובטוח, Safetensors מביא לשולחן גם כמה יתרונות נוספים:

  • מניעת התקפות מניעת שירות (DOS): העיצוב של Safetensors מצמצם את האפשרות שקבצים זדוניים יגרמו להתקפות DOS. יש מגבלה על גודל הכותרת כדי למנוע ניתוח JSON גדול במיוחד, ויש ערובה לכך שכתובות בקובץ אינן חופפות, מה שאומר שטעינת קובץ לעולם לא תעלה על גודל הקובץ בזיכרון.
  • טעינה מהירה יותר: Safetensors עוקף את העתקת ה-CPU הנוספת ב-PyTorch, ומאפשר זמני טעינת CPU מהירים במיוחד בהשוואה ל-pickle. זמני טעינת GPU מהירים או מהירים יותר מהמקבילה שלהם ב-PyTorch.
  • טעינה עצלה: בהגדרות מבוזרות (ריבוי-צמתים או ריבוי-GPU), Safetensors מאפשר טעינה של חלק מהטנסורים בלבד, מה שמאיץ משמעותית את זמני טעינת המודל ומשפר את משוב הפיתוח.

בשטח

Safetensors כבר זוכה לאימוץ נרחב בארגוני AI מובילים כמו  Hugging FaceEleutherAI, ו- StabilityAI. כמה פרויקטים בולטים המשתמשים ב-Safetensors כוללים:

לסיכום, Safetensors, עם מערך התכונות והיתרונות הייחודי שלו, עומד להיות גורם משנה משחק בעולם של למידת מכונה ואחסון נתונים. אז קדימה, נסו אותו – עתיד פורמטי המודלים מחכה לכם!

Leave a comment

האימייל לא יוצג באתר. שדות החובה מסומנים *