מידע על מנהל התקן ה-CSI של Cloud Storage FUSE ל-GKE

בסקירה הכללית הזו מוצג מנהל ההתקן של ה-CSI של Cloud Storage FUSE לטעינה של קטגוריות של Cloud Storage כמערכות קבצים מקומיות ב-Google Kubernetes Engine‏ (GKE). התכונה הזו שימושית במיוחד לעומסי עבודה של למידת מכונה שצריך לאחסן בהם נתוני אימון, מודלים ונקודות ביקורת ב-Cloud Storage.

הסקירה הכללית הזו מיועדת למפתחים ולמדעני נתונים שרוצים לגשת לנתוני אימון, למשקלים של מודל היסק (inference) ולנקודות ביקורת שמאוחסנים ב-Cloud Storage, או לאחסן אותם, מאפליקציות Kubernetes שלהם.

לפני שאתם קוראים את הדף הזה, ודאו שאתם מכירים את Kubernetes, את GKE ואת Cloud Storage.

איך זה עובד

מנהל ההתקן משתמש בתקן Container Storage Interface‏ (CSI) כדי לאפשר לאפליקציות שפועלות ב-Pods לגשת בצורה חלקה לקטגוריות של Cloud Storage, כאילו הן מערכות קבצים שטעונות. זה אומר שאתם יכולים להתייחס לקטגוריות של Cloud Storage כמקור נתונים קבוע וניתן להתאמה לאפליקציות Kubernetes, בלי הגדרות מורכבות או שינויים בקוד.

מנהל התקן ה-CSI של Cloud Storage FUSE מספק חוויה מנוהלת במלואה שמבוססת על התוסף בקוד פתוח Google Cloud Storage FUSE CSI. מנהל התקן ה-CSI מאפשר להשתמש ב-Kubernetes API כדי לצרוך קטגוריות קיימות של Cloud Storage כנפחי אחסון. האפליקציות שלכם יכולות להעלות ולהוריד אובייקטים באמצעות הסמנטיקה של מערכת הקבצים של Cloud Storage FUSE.

‫Filesystem in Userspace (FUSE) הוא ממשק שמשמש לייצוא של מערכת קבצים לליבה של Linux. ‫Cloud Storage FUSE מאפשר לטעון קטגוריות של Cloud Storage כמערכת קבצים, כדי שאפליקציות יוכלו לגשת לאובייקטים בקטגוריה באמצעות פעולות קלט/פלט נפוצות של קבצים (לדוגמה, פתיחה, קריאה, כתיבה וסגירה) במקום להשתמש בממשקי API ספציפיים לענן.

מנהל ההתקן תומך באופן מובנה בדרכים הבאות להגדרת אמצעי האחסון שמגובים ב-Cloud Storage:

  • ‫CSI ephemeral volumes (כרכים זמניים של CSI): מציינים את הקטגוריה של Cloud Storage בשורה עם מפרט ה-Pod. אם אתם רוצים ממשק יעיל שמבוסס על Pod ולא דורש ניסיון קודם עם נפחי אחסון קבועים ב-Kubernetes, כדאי להשתמש בנפחי אחסון זמניים של CSI. כדי להשתמש באפשרות הזו, קראו את המאמר טעינת קטגוריות של Cloud Storage בתור נפחים זמניים של CSI.
  • ‫PersistentVolumes: אתם יוצרים משאב PersistentVolume שמפנה לקטגוריה של Cloud Storage, באמצעות הקצאת משאבים סטטית. לאחר מכן, ה-Pod יכול להפנות ל-PersistentVolumeClaim שקשור ל-PersistentVolume הזה. אפשר להשתמש באפשרות הזו אם אתם כבר מכירים את PersistentVolumes ורוצים עקביות עם הפריסות הקיימות שלכם שמסתמכות על סוג המשאב הזה. כדי להשתמש באפשרות הזו, אפשר לעיין במאמר בנושא הוספת קטגוריות של Cloud Storage כנפחי אחסון קבועים.

תרחישים לדוגמה

מנהל התקן ה-CSI של Cloud Storage FUSE מתאים לתרחישים כמו:

AI ולמידת מכונה

  • אימון: אתם יכולים להשתמש במנהל התקן ה-CSI של Cloud Storage FUSE כדי לקרוא נתוני אימון ולשמור מודלים בנקודות ביקורת, באמצעות Cloud Storage כמקור האמת. לדוגמה, כשמאמנים מודל ב-GKE באמצעות PyTorch,‏ JAX או TensorFlow, מנהל ההתקן יכול לספק גישה למערכי נתונים לאימון שמאוחסנים בקטגוריות של Cloud Storage.
  • היקש: אתם יכולים להכניס לשימוש בסביבת הייצור מודלים של ML להיקש, שמסיקים תוצאות מקבצים שמאוחסנים ב-Cloud Storage. אתם יכולים להשתמש ב-Cloud Storage FUSE CSI כדי לטעון מראש משקלי מודלים שמאוחסנים ב-Cloud Storage. בנוסף, אתם יכולים להשתמש בהורדה מקבילה עם מטמון קבצים כדי להאיץ את הקריאה של קבצים גדולים מ-Cloud Storage להורדות מרובות-תהליכים. אתם יכולים להשתמש בתכונה הזו כדי לשפר את זמני הטעינה של המודל, במיוחד לקריאות בגודל של יותר מ-1GB.

צינורות עיבוד נתונים לניתוח נתונים

אתם יכולים להשתמש במנהל התקן ה-CSI של Cloud Storage FUSE כדי לייעל את משימות עיבוד הנתונים, על ידי מתן גישה ישירה לאפליקציות לניתוח מערכי נתונים גדולים שמאוחסנים ב-Cloud Storage. לדוגמה, משימת Spark שפועלת ב-GKE יכולה להשתמש במנהל ההתקן של CSI כדי לעבד נתונים שמאוחסנים ב-Cloud Storage בלי להוריד אותם קודם.

יתרונות

השימוש במנהל ההתקן של CSI מספק את היתרונות הבאים:

  • הגדרה קלה: מנהל התקן ה-CSI של Cloud Storage FUSE פורס ומנהל באופן אוטומטי את מנהל ההתקן באשכולות Standard ו-Autopilot. שימוש באמצעי אחסון זמניים של CSI מפשט את ההגדרה והניהול של אמצעי האחסון. הסיבה לכך היא שלא צריך אובייקטים מסוג PersistentVolumeClaim ו-PersistentVolume.
  • אבטחה: מנהל התקן ה-CSI של Cloud Storage FUSE לא צריך גישה עם הרשאות. כך אפשר לצמצם את הסיכונים שקשורים לגישה עם הרשאות ולשפר את מצב האבטחה. אתם יכולים להשתמש באיחוד זהויות של עומסי עבודה ל-GKE כדי לנהל את האימות, וכך לקבל שליטה מפורטת על האופן שבו הפודים ניגשים לאובייקטים של Cloud Storage.
  • ביצועים: כדי לשפר את הביצועים של עומסי עבודה של AI/ML, אפשר להשתמש בפרופילים מוגדרים מראש של Cloud Storage FUSE לאימון, להצגה ולנקודות ביקורת, כדי לשפר את הביצועים באופן אוטומטי על סמך עומס העבודה והגדרת הצומת. מנהל ההתקן של Cloud Storage FUSE CSI גם משפר את הביצועים באמצעות תכונות כמו קונטיינר Sidecar לאינטראקציות אופטימליות, הורדות מקבילות לגישה מהירה יותר לנתונים, ושמירת מטא-נתונים וקבצים במטמון כדי לשפר את ביצועי הקריאה ולקצר את זמן האחזור. מידע נוסף על התכונות האלה מופיע במאמר אפשרויות ותכונות לכוונון הביצועים.
  • ניידות וגמישות: מנהל התקן ה-CSI של Cloud Storage FUSE מאפשר לטעון קטגוריות של Cloud Storage ולגשת אליהן באמצעות סמנטיקה סטנדרטית של מערכת קבצים. כך מקבלים ממשק מוכר שמשפר את הניידות של עומסי עבודה של ML, ולא צריך לבצע שינויים נרחבים בקוד או באפליקציה. מנהל ההתקנים נתמך בכל האקסלרטורים שזמינים ב-GKE, כולל GPU ו-TPU. מנהל התקן ה-CSI של Cloud Storage FUSE תומך במצבי הגישה ReadWriteMany,‏ ReadOnlyMany ו-ReadWriteOnce. אפשר להשתמש בנפחי אחסון של Cloud Storage FUSE בקונטיינרים של init.
  • יכולת ניהול: מנהל ההתקן מאפשר להריץ את Cloud Storage FUSE מאחורי הקלעים בלי להתקין או לנהל אותו. אפשר גם לראות תובנות לגבי מדדים של Cloud Storage FUSE, כולל שימוש במערכת הקבצים, ב-Cloud Storage ובמטמון הקבצים.

אפשרויות ותכונות לכוונון הביצועים

מנהל ההתקן של Cloud Storage FUSE CSI כולל כמה אפשרויות ותכונות לכוונון הביצועים, כדי לשפר את הגישה של Pods לנתונים שמאוחסנים בקטגוריות של Cloud Storage.

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

  • ‫Native sidecar: מנהל התקן ה-CSI של Cloud Storage FUSE מצרף קונטיינר sidecar לפודים כדי לנהל אינטראקציות עם Cloud Storage. ה-sidecar מטפל בהרכבה ובאינטראקציה עם Cloud Storage, ומאפשר לאפליקציות שלכם לגשת לנתונים בצורה חלקה. כדי לשפר את הביצועים, אתם יכולים להגדיר משאבים כמו מעבד (CPU) וזיכרון לקונטיינר המשני, או לשנות את ההגדרות שקשורות לשמירה במטמון ולמאגר נתונים זמני (buffer). הקונטיינר המשני (sidecar) של מנהל התקן ה-CSI של Cloud Storage FUSE ו-Istio יכולים להתקיים במקביל ולפעול בו-זמנית ב-Pod.

  • הורדה במקביל: החל מגרסה 1.30.3-gke.1571000 של GKE וגרסה 2.4.0 של Cloud Storage FUSE, כשהתכונה "שמירת קבצים במטמון" מופעלת, אתם יכולים להשתמש בתכונה הורדה במקביל כדי להאיץ את הקריאה של קבצים גדולים מ-Cloud Storage להורדות מרובות-תהליכים. אתם יכולים להשתמש בתכונה הזו כדי לקצר את זמני הטעינה של המודלים, במיוחד כשמדובר בקריאות בגודל של יותר מ-1GB (לדוגמה, עד פי שניים מהר יותר כשמטעינים את Llama 2 70B).

  • תמיכה בשמירת מטא-נתונים במטמון: מנהל התקן ה-CSI של Cloud Storage FUSE משפר את הביצועים על ידי שמירת מטא-נתונים של קבצים במטמון, כמו גודל וזמן שינוי. ה-CSI driver מפעיל את stat cache הזה כברירת מחדל ומקצר את זמן האחזור על ידי אחסון המידע באופן מקומי במקום לבקש אותו שוב ושוב מ-Cloud Storage. אתם יכולים להגדיר את הגודל המקסימלי של המטמון ואת משך הזמן שבו הנתונים יישארו במטמון. באמצעות כוונון עדין של מטמון המטא-נתונים, אפשר לצמצם את מספר קריאות ה-API ל-Google Cloud Storage, לשפר את הביצועים והיעילות של האפליקציה על ידי צמצום תעבורת הרשת והחביון.

  • תמיכה בשמירת קבצים במטמון: אתם יכולים להשתמש במנהל התקן ה-CSI של Cloud Storage FUSE עם שמירת קבצים במטמון כדי לשפר את ביצועי הקריאה של אפליקציות שמטפלות בקבצים קטנים מקטגוריות של Cloud Storage. תכונת מטמון הקבצים של Cloud Storage FUSE היא מטמון קריאה מבוסס-לקוח, שמאפשר להגיש קריאות חוזרות של קבצים מהר יותר מאחסון המטמון שתבחרו. אתם יכולים לבחור מתוך מגוון אפשרויות אחסון למטמון הקריאה, כולל SSD מקומי, אחסון מבוסס דיסק אחסון מתמיד (persistent disk) ודיסק RAM, בהתאם לצרכים שלכם מבחינת מחיר וביצועים.

  • תמיכה בהפעלה מחדש של צמתים: החל מגרסה 1.33.1-gke.1959000 של GKE, פודים שמשתמשים בנפחי CSI של Cloud Storage FUSE יכולים להתאושש באופן אוטומטי אחרי הפעלה מחדש של צומת GKE. אם ה-Pod נמצא בצומת שבו מופעלת השבתה תקינה של צומת, הוא צריך להיות מנוהל על ידי בקר (כמו Job או Deployment) שמחליף Pods שנכשלו. בינתיים, פודים עצמאיים יכולים לבצע הפעלה מחדש באופן אוטומטי בצמתים בלי להפעיל את Graceful Node Shutdown. בגרסאות GKE מוקדמות יותר מ-‎1.33.1-gke.1959000, ‏ Pods לא יכולים להתאושש וצריך לפרוס אותם מחדש. השבתה מסודרת של צומת מופעלת כברירת מחדל רק במכונות וירטואליות זמניות, ב-VM במודל Spot, ב-Confidential VMs, במכונות וירטואליות עם GPU, ב-TPU VM ובסדרות המכונות Z3,‏ Z4D,‏ C3 Metal ו-C4.

לשיטות מומלצות לשיפור הביצועים, אפשר לעיין במאמר אופטימיזציה של מנהל התקן ה-CSI של Cloud Storage FUSE לביצועים ב-GKE.

מגבלות

ל-CSI driver יש את המגבלות הבאות:

  • מערכת הקבצים Cloud Storage FUSE שונה ממערכת קבצים של POSIX בביצועים, בזמינות, בהרשאת הגישה ובסמנטיקה.
  • מנהל התקן ה-CSI של Cloud Storage FUSE לא נתמך בGKE Sandbox.
  • מנהל התקן ה-CSI של Cloud Storage FUSE לא תומך בתמונות מצב של אמצעי אחסון, בשכפול של אמצעי אחסון או בהרחבות של אמצעי אחסון.
  • כשמשתמשים באיחוד זהויות של עומסי עבודה ל-GKE, צריך גישה אחידה ברמת הקטגוריה לעומסי עבודה של קריאה וכתיבה.
  • הבעיות המוכרות בפרויקט GitHub של מנהל התקן ה-CSI של Cloud Storage FUSE.
  • אפשר לעיין בבעיות הפתוחות בפרויקט של מנהל התקן ה-CSI של Cloud Storage FUSE ב-GitHub.
  • בגרסאות GKE מוקדמות יותר מ-1.33.3-gke.1226000, מנהל התקן ה-CSI של Cloud Storage FUSE לא תומך ב-Pods שפועלים ברשת המארח (hostNetwork: true) בגלל מגבלות של איחוד זהויות של עומסי עבודה ל-GKE. עם זאת, באשכולות GKE רגילים עם גרסה 1.33.3-gke.1226000 ואילך, הפודים ברשת המארחת שמשתמשים במנהל התקן ה-CSI של Cloud Storage FUSE יכולים להשתמש בחשבון השירות שלהם ב-Kubernetes כדי לבצע אימות. מידע נוסף זמין במאמר בנושא הגדרת גישה ל-Pods עם רשת מארחת.
  • בגרסאות של אשכולות GKE שקודמות ל-1.32.3-gke.1099000 יש מגבלה על הגודל של מחרוזות mountOption שמוצפנות ב-JSON. השילוב של שם הקטגוריה, אפשרויות הטעינה שסופקו על ידי המשתמש וה-mountOptions שסופק על ידי הדרייבר חייב להיות קצר מ-500 תווים. הגדלנו את הסף של הודעת JSON ל-5,000 בייט בגרסאות של אשכול GKE‏ ‎1.32.3-gke.1099000 ואילך.

דרישות

כדי להשתמש במנהל התקן ה-CSI של Cloud Storage FUSE, האשכולות צריכים לעמוד בדרישות הבאות של גרסת GKE:

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

המאמרים הבאים