שמירת קבצים במטמון ב-Cloud Storage FUSE

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

במאמר הזה מוסבר איך להגדיר את המטמון של הקבצים ולהשתמש בו.

היתרונות של שמירת קבצים במטמון

היתרונות של שמירת קבצים במטמון:

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

  • הפעלה אוטומטית של הורדות מקבילות: הורדות מקבילות מופעלות באופן אוטומטי בגרסאות 2.12 ואילך של Cloud Storage FUSE כשמטמון הקבצים מופעל. הורדות מקבילות משתמשות בכמה תהליכי עבודה כדי להוריד קובץ במקביל, תוך שימוש בספריית המטמון של הקבצים כמאגר נתונים לשליפה מראש. כך אפשר לטעון את המודל עד פי תשעה מהר יותר. מומלץ להשתמש בהורדות מקבילות בתרחישי קריאה עם שרשור יחיד שטוענים קבצים גדולים, כמו פרסום המודל ושחזור נקודות ביקורת.

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

  • חיובים מופחתים: בקשות שנענות מהמטמון מטופלות באופן מקומי, ולא כרוכות בחיובים על פעולות ב-Cloud Storage או על שימוש ברשת.

  • עלות בעלות כוללת (TCO) משופרת לאימון AI ו-ML: שמירת קבצים במטמון מגבירה את השימוש במעבדים גרפיים ל-Cloud על ידי טעינת נתונים מהירה יותר, מה שמקצר את זמן האימון ומספק יחס מחיר-ביצועים טוב יותר לעומסי עבודה של אימון AI ו-ML.

הורדות במקביל

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

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

סוג תרחיש השימוש תיאור
הדרכה כדאי להפעיל את האפשרות לשמירת קבצים במטמון אם אתם רוצים לגשת לנתונים שנקראים כמה פעמים, בין אם מדובר באותו קובץ כמה פעמים או בהיסטים שונים של אותו קובץ. אם מערך הנתונים גדול יותר מהמטמון של הקבצים, צריך להשאיר את המטמון מושבת ולהשתמש באחת מהשיטות הבאות:
קריאות של משקלי מודלים ונקודות ביקורת (checkpoint) להצגה כדי להשתמש בהורדות מקבילות, צריך להפעיל את השמירה של קבצים במטמון עם הורדות מקבילות. כך קבצים גדולים נטענים הרבה יותר מהר מאשר בלי שמירה של קבצים במטמון והורדות מקבילות.

לתשומת ליבכם

  • אורך החיים (TTL) של מטמון הקבצים: אם התוקף של רשומת מטמון הקבצים עדיין לא פג על סמך ה-TTL שלה והקובץ נמצא במטמון, פעולות הקריאה של הקובץ הזה מוגשות ממטמון הלקוח המקומי בלי לשלוח בקשה ל-Cloud Storage.

  • תפוגת התוקף של רשומת מטמון הקבצים: אם פג התוקף של רשומת מטמון הקבצים, קודם מתבצעת קריאה של מאפייני הקובץ GET ל-Cloud Storage. אם הקובץ חסר או שהמאפיינים או התוכן שלו השתנו, המערכת מאחזרת את התוכן החדש. אם המאפיינים בוטלו אבל התוכן עדיין תקף, כלומר מספר הגנרציה של האובייקט לא השתנה, התוכן מוצג מהמטמון רק אחרי שהקריאה למאפיין מאשרת את התוקף שלו. שתי הפעולות גורמות לזמני אחזור ברשת.

  • ביטול התוקף של מטמון הקבצים: כשלקוח של Cloud Storage FUSE משנה קובץ שנשמר במטמון או את המאפיינים שלו, הרשומה של הלקוח הזה במטמון מבוטלת באופן מיידי כדי לשמור על עקביות. עם זאת, לקוחות אחרים שניגשים לאותו קובץ ממשיכים לקרוא את הגרסאות שלהם שנשמרו במטמון, עד שהגדרות ה-TTL שלהם גורמות לביטול התוקף.

  • גודל הקובץ והקיבולת הזמינה: הקובץ שנקרא צריך להתאים לקיבולת הזמינה בספריית המטמון של הקבצים. אפשר לשלוט בקיבולת הזמינה באמצעות האפשרות --file-cache-max-size-mb או השדה file-cache:max-size-mb. שימו לב שאי אפשר להגדיר גודל מקסימלי לכל קובץ.

  • פינוי מטמון: פינוי המטא-נתונים והנתונים מהמטמון מבוסס על אלגוריתם של "הכי פחות בשימוש לאחרונה" (LRU), שמתחיל לפעול ברגע שמגיעים לסף המקום שהוגדר לכל מגבלת --file-cache-max-size-mb. אם פג התוקף של הרשומה לפי ה-TTL שלה, קודם מתבצעת קריאת מטא-נתונים של GET ל-Cloud Storage, והיא כפופה לזמני האחזור ברשת. מכיוון שהנתונים והמטא-נתונים מנוהלים בנפרד, יכול להיות שישות אחת תוסר או תבוטל והשנייה לא.

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

  • ניהול קריאה אקראית וקריאה חלקית: כשפעולת הקריאה הראשונה של הקובץ מתחילה מתחילת הקובץ, בהיסט 0, מטמון הקבצים של Cloud Storage FUSE מטמיע וטוען את הקובץ כולו למטמון, גם אם קוראים רק מקבוצת משנה קטנה של טווחים. כך, קריאות אקראיות או חלקיות מאותו אובייקט יוגשו ישירות מהמטמון.

    כברירת מחדל, קריאה מכל היסט אחר לא מפעילה אחזור אסינכרוני של קובץ מלא. כדי לשנות את ההתנהגות הזו כך ש-Cloud Storage FUSE יטמיע קובץ במטמון בקריאה אקראית ראשונית, מגדירים את האפשרות --file-cache-cache-file-for-range-read או את השדה file-cache:cache-file-for-range-read לערך true.

    מומלץ להפעיל את המאפיין הזה אם מתבצעות הרבה פעולות קריאה אקראיות או חלקיות שונות באותו אובייקט.

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

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

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

    • טעינת כל הקטגוריות באמצעות מטמון משותף: משתמשים בטעינה דינמית כדי לטעון את כל הקטגוריות שיש לכם גישה אליהן בתהליך אחד עם מטמון משותף. מידע נוסף זמין במאמר טעינה דינמית של Cloud Storage FUSE.

    • הפעלת מטמון בקטגוריה ספציפית: הפעלת מטמון רק בקטגוריה ספציפית באמצעות טעינה סטטית. מידע נוסף זמין במאמר טעינה סטטית של Cloud Storage FUSE.

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

לפני שמתחילים

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

  1. ב-Google Cloud Hyperdisk, קראו את המאמר יצירת נפח חדש של Google Cloud Hyperdisk.

  2. למידע על דיסקים של RAM בזיכרון, ראו יצירת דיסקים של RAM בזיכרון.

הפעלה והגדרה של התנהגות שמירת הקבצים במטמון

  1. בוחרים את השיטה שבה רוצים להפעיל ולהגדיר את שמירת הקבצים במטמון:

  2. צריך לציין את ספריית המטמון שבה רוצים להשתמש באחת מהשיטות הבאות. כך אפשר להפעיל את מטמון הקבצים בפריסות שהן לא של Google Kubernetes Engine:

    אם אתם משתמשים בפריסה של Google Kubernetes Engine באמצעות מנהל התקן ה-CSI של Cloud Storage FUSE ל-Google Kubernetes Engine, ציינו אחת מהשיטות הבאות:

  3. אופציונלי: אם ההורדות במקביל לא הופעלו באופן אוטומטי, אפשר להפעיל אותן באמצעות אחת מהשיטות הבאות, ולהגדיר את הערך true:

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

    אפשר גם לציין ערך ב-MiB או ב-GiB כדי להגביל את גודל המטמון.

  5. אופציונלי: אפשר לעקוף את תפוגת ה-TTL של הרשומות שנשמרו במטמון ולהציג את המטא-נתונים של הקובץ מהמטמון אם הוא זמין, באמצעות אחת מהשיטות הבאות והגדרת הערך -1:

    ברירת המחדל היא 60 שניות, והערך -1 מגדיר את הזמן ללא הגבלה. אפשר גם לציין ערך גבוה בהתאם לדרישות שלכם. מומלץ להגדיר את הערך של ttl-secs הכי גבוה שאפשר בהתאם לעומס העבודה. למידע נוסף על זמן החיים (TTL) של רשומות שנשמרו במטמון, ראו שיקולים.

  6. אופציונלי: מפעילים את היכולת של מטמון הקבצים לטעון באופן אסינכרוני את הקובץ כולו למטמון, אם פעולת הקריאה הראשונה של הקובץ מתחילה מכל מקום אחר מלבד offset 0, כדי שגם קריאות עוקבות של היסטים שונים מאותו קובץ יוכלו להתבצע מהמטמון. משתמשים באחת מהשיטות הבאות ומגדירים את האפשרות לערך true:

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

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

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

הגדרת מאפיינים תומכים להורדות במקביל

אפשר גם להגדיר את המאפיינים התומכים הבאים להורדות במקביל, באמצעות ה-CLI של Cloud Storage FUSE או קובץ תצורה של Cloud Storage FUSE:

תיאור הנכס אפשרות gcsfuse שדה קובץ התצורה
המספר המקסימלי של תהליכי worker שאפשר ליצור לכל קובץ כדי להוריד את האובייקט מ-Cloud Storage למטמון הקבצים. --file-cache-parallel-downloads-per-file file-cache:parallel-downloads-per-file
המספר המקסימלי של תהליכי עבודה שאפשר להפעיל בכל זמן נתון בכל משימות הורדת הקבצים. ברירת המחדל היא פי שניים ממספר ליבות המעבד (CPU) במכונה. כדי לציין שאין מגבלה, מזינים את הערך ‎-1. --file-cache-max-parallel-downloads file-cache:max-parallel-downloads
הגודל של כל בקשת קריאה ב-MiB שכל worker שולח ל-Cloud Storage כשהוא מוריד את האובייקט למטמון הקבצים. חשוב לזכור שהורדה מקבילה מופעלת רק אם הקובץ שנקרא הוא בגודל שצוין. --file-cache-download-chunk-size-mb file-cache:download-chunk-size-mb

השבתת הורדות מקבילות

כדי להשבית הורדות מקבילות, מגדירים את אחת מהאפשרויות הבאות לערך false:

  • gcsfuse option: --file-cache-enable-parallel-downloads
  • שדה קובץ התצורה: file-cache:enable-parallel-downloads

שליטה ביכולת לשמור במטמון ברמת פירוט של קובץ באמצעות ביטויים רגולריים

כברירת מחדל, כל הקבצים שנקראים נשמרים במטמון. אתם יכולים לקבוע אילו קבצים יישמרו במטמון ברמת פירוט של קובץ, באמצעות השדות האופציונליים include-regex ו-exclude-regex בהגדרות של file-cache. בשדות האלה אפשר לציין ביטויים רגולריים שיתאימו לנתיבי קבצים בפורמט bucket_name/object_key.

הוספת קבצים ספציפיים לשמירה במטמון

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

file-cache:
  include-regex: ".*\\.tfrecord$"

אפשר גם להשתמש בדגל --file-cache-include-regex:

gcsfuse --file-cache-include-regex ".*\\.(tfrecord)$" ..

החרגת קבצים ספציפיים מהשמירה במטמון

כדי למנוע שמירה של קבצים ספציפיים במטמון, משתמשים באפשרות exclude-regex. כל קובץ שתואם לביטוי הרגולרי הזה לא נשמר במטמון. לדוגמה, כדי להחריג את כל הקבצים בספרייה בשם logs/, מציינים את הפרטים הבאים בקובץ התצורה:

file-cache:
  exclude-regex: ".*/logs/.*"

אפשר גם להשתמש בדגל --file-cache-exclude-regex:

gcsfuse --file-cache-exclude-regex ".*/logs/.*" ..

שימוש בכללי הכללה והחרגה ביחד

אפשר להשתמש גם ב-include-regex וגם ב-exclude-regex בו-זמנית. הכלל exclude-regex תמיד נבדק ראשון. אם קובץ תואם ל-exclude-regex, הוא לא יישמר במטמון, גם אם הוא תואם גם ל-include-regex. לדוגמה, כדי לשמור במטמון את כל קובצי ה-.tfrecord חוץ מאלה שבספרייה output/, צריך לציין את הפרטים הבאים בקובץ התצורה:

file-cache:
  include-regex: ".*\\.tfrecord$"
  exclude-regex: ".*/output/.*"

או להשתמש בשני הדגלים:

gcsfuse --file-cache-include-regex ".*\\.tfrecord$" --file-cache-exclude-regex ".*/output/.*" ..

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