Storage

אם אתם מעוניינים באשכולות אימון של Gemini Enterprise Agent Platform, אתם יכולים לפנות לנציג המכירות שלכם כדי לקבל גישה.

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

  • ‫Filestore: שירות קבצים מנוהל שנדרש ומספק את ספריות /homeהשיתוף לכל הצמתים באשכול.
  • ‫Google Cloud Managed Lustre: מערכת קבצים מקבילה אופציונלית שנועדה לביצועי קלט/פלט קיצוניים, ומתאימה במיוחד לאימון על מערכי נתונים עצומים. כדאי להתייחס אליו כאל אחסון עבודה עם ביצועים גבוהים ולא כאל מערכת רשומות, ולהשתמש ב-Cloud Storage כמקור המהימנות. מידע נוסף זמין במאמר בנושא גיבוי נתונים ב-Managed Lustre ל-Cloud Storage.

בדף הזה מפורטות דרישות הרשת והפריסה הספציפיות שצריך לעמוד בהן כדי להטמיע את התכונה בהצלחה באשכול.

שילוב אחסון לאשכולות אימון

הפלטפורמה Gemini Enterprise Agent Platform מסתמכת על פתרונות אחסון ספציפיים ברשת כדי לפעול. ‫Filestore נדרש כדי לספק את ספריות /home המשותפות לאשכול, ואילו Managed Lustre היא מערכת קבצים אופציונלית עם ביצועים גבוהים לעומסי עבודה תובעניים.

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

‫Filestore לספריות ביתיות

השירות הזה משתמש במופע Filestore כדי לספק את ספריית /home השיתוף לאשכול. כדי לוודא שהקישוריות תקינה, צריך ליצור את משאבי הענן בסדר הספציפי הזה:

  1. יוצרים את רשת ה-VPC: קודם פורסים רשת VPC שמוגדרת עם ה-MTU המומלץ (לדוגמה, 8896).
  2. יוצרים את מופע Filestore: לאחר מכן, פורסים את מופע Filestore ברשת ה-VPC שיצרתם זה עתה.
  3. יוצרים את אשכול האימון: לבסוף, פורסים את האשכול, שיוכל להתחבר למופע Filestore באותה רשת.

‫Google Cloud Managed Lustre לעומסי עבודה עם ביצועים גבוהים

עבור עומסי עבודה שדורשים ביצועי קלט/פלט מקסימליים, אפשר לצרף מערכת קבצים מנוהלת של Lustre. השירות הזה מתחבר ל-VPC שלכם באמצעות גישה לשירותים פרטיים.

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

גיבוי נתונים של Managed Lustre ל-Cloud Storage

להשאיר את Cloud Storage כמקור האמת מאחורי Managed Lustre. כך תוכלו להגן על נקודות השמירה ולשחזר במהירות אם מופע ייכשל או יימחק.

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

לשני הזהויות צריכות להיות הרשאות. למשתמש או לחשבון השירות שמפעילים את הייצוא צריכה להיות ההרשאה lustre.instances.exportData, שנכללת בתפקיד roles/lustre.admin או שאפשר להעניק אותה באמצעות תפקיד בהתאמה אישית. סוכן השירות של Managed Lustre צריך בנפרד הרשאת כתיבה לקטגוריית היעד.

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

    gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
      --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-lustre.iam.gserviceaccount.com \
      --role=roles/storage.objectUser
    

    כאשר:

  2. מייצאים את מערכת הקבצים לקטגוריה:

    gcloud lustre instances export-data INSTANCE_ID \
      --location=ZONE \
      --lustre-path="/" \
      --gcs-path-uri="gs://BUCKET_NAME/INSTANCE_ID/"
    

    כאשר:

    • INSTANCE_ID הוא השם של מכונת Managed Lustre שרוצים לגבות.
    • ZONE: האזור של המכונה, למשל us-central1-a.

    הערך --gcs-path-uri יכול להיות שם של דלי או נתיב בתוך דלי. אם כוללים נתיב, הוא חייב להסתיים בקו נטוי. ייצוא כל מופע לנתיב שנקרא על שמו שומר על ההפרדה בין המופעים: אם מצרפים יותר ממופע אחד של Managed Lustre לאשכול, צריך לתת לכל אחד מהם נתיב משלו, כי שני מופעים שמיוצאים לאותו נתיב דורסים את הקבצים של זה.

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

כשמתכננים גיבוי, כדאי לקחת בחשבון את הנקודות הבאות:

  • בכל רגע נתון יכולה להיות פעילה רק פעולת העברה אחת לכל מופע. העברה שהתחילה בזמן שהעברה אחרת עדיין פועלת נכשלת עם השגיאה ABORTED: unable to queue the operation.
  • הייצוא אף פעם לא מוחק אובייקטים מהיעד, כך שקובץ שמוחקים ב-Managed Lustre נשאר בדלי. מפעילים ניהול גרסאות של אובייקטים בקטגוריית היעד כדי שתוכלו לשחזר גם קובץ שנכתב עליו תוכן לא רצוי.
  • קישורים סמליים, ספריות ריקות ופריסות של פספוסים שמוגדרים באמצעות lfs setstripe לא נשמרים, וקישורים קשיחים מיוצאים כאובייקטים נפרדים, כך שקובץ עם קישור קשיח תופס נפח אחסון פעם אחת לכל קישור בדלי. מזהה משתמש (UID) של POSIX, מזהה קבוצה (GID), מצב וזמן שינוי (mtime) נשמרים כמטא-נתונים של אובייקט בהתאמה אישית.
  • כתיבת נקודות ביקורת באופן אטומי – כתיבה לנתיב זמני, ואז שינוי שם הקובץ במקום – כך שייצוא שפועל במהלך כתיבה יתעד את הקובץ הקודם או את הקובץ החדש המלא, ולא קובץ חלקי.

כדי לשחזר, יוצרים מכונה חדשה ב-Managed Lustre וטוענים את הנתונים בחזרה באמצעות gcloud lustre instances import-data. מידע נוסף זמין במאמר העברת נתונים אל Cloud Storage וממנו.

הגבלה קריטית ברשת: אין קישוריות טרנזיטיבית

מגבלה קריטית גם ב-Filestore וגם ב-Google Cloud Managed Lustre היא שהם לא תומכים בפירינג טרנזיטיבי. המשמעות היא שרק משאבים ב-VPC שמחובר ישירות יכולים לגשת לשירות האחסון. לדוגמה, אם ה-VPC של האשכול (N1) מקושר לשירות האחסון, ל-VPC אחר (N2) שמקושר ל-N1 לא תהיה גישה.

שילוב אחסון לאשכולות אימון

אשכולות האימון של Gemini Enterprise Agent Platform מסתמכים על פתרונות אחסון ספציפיים ומקושרים כדי לפעול. ‫Filestore נדרש כדי לספק את ספריות /home המשותפות לאשכול, ואילו Google Cloud Managed Lustre היא מערכת קבצים אופציונלית עם ביצועים גבוהים לעומסי עבודה תובעניים. חשוב מאוד להגדיר את הרשתות של שירותי האחסון האלה בצורה נכונה לפני שמפעילים את האשכול.

Filestore

שימושים עיקריים ב-Filestore עם אשכולות אימון

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

הדרישות של Filestore

כדי לשלב בהצלחה את Filestore עם אשכולות אימון, צריך להגדיר את ההגדרות הבאות:

  • מפעילים את ה-API: צריך להפעיל את Filestore API בפרויקט בענן של Google Cloud לפני שיוצרים את האשכול.
  • חובה /home Directory: כל אשכול אימון צריך מופע Filestore ייעודי שישמש כ/home Directory משותף. למופע הזה יש דרישות הגדרה ספציפיות:
    • רשת: היא צריכה להיות באותה רשת VPC כמו צמתי החישוב והכניסה של האשכול.
    • מיקום: הוא צריך להיות ממוקם באותו אזור או באותו אזור זמין כמו האשכול.
    • הגדרה: כשיוצרים את האשכול באמצעות ה-API, צריך לציין את שם המשאב המלא של המופע הזה בשדה orchestrator_spec.slurm_spec.home_directory_storage.

הגדרת אחסון ב-Filestore

יוצרים מכונת Filestore אזורית או אזורית ב-zone שבו רוצים ליצור את האשכול. כדי להשתמש ב-Agent Platform API, צריך לצרף ל-Filestore את האשכול כדי שישמש כספריית /home. מערכת Filestore הזו צריכה להיות באותו אזור או באותו אזור זמינות, ובאותה רשת כמו כל צמתי החישוב וצמתי הכניסה. בדוגמה שלמטה, הכתובת 172.16.10.0/24 משמשת לפריסת Filestore.

    SERVICE_TIER=ZONAL # Can use BASIC_SSD

    # Create reserved IP address range
    gcloud compute addresses create CLUSTER_IDfs-ip-range \
        --project=PROJECT_ID \
        --global \
        --purpose=VPC_PEERING \
        --addresses=172.16.10.0 \
        --prefix-length=24 \
        --description="Filestore instance reserved IP range" \
        --network=NETWORK

    # Get the CIDR range
    FS_IP_RANGE=$(
      gcloud compute addresses describe CLUSTER_IDfs-ip-range \
        --global  \
        --format="value[separator=/](address, prefixLength)"
    )

    # Create the Filestore instance
    gcloud filestore instances create FS_INSTANCE_ID \
        --project=PROJECT_ID \
        --location=ZONE \
        --tier=ZONAL \
        --file-share=name="nfsshare",capacity=1024 \
    --network=name=NETWORK,connect-mode=DIRECT_PEERING,reserved-ip-range="${FS_IP_RANGE}"
  

Lustre

‫Google Cloud Managed Lustre מספק מערכת קבצים מקבילה מנוהלת עם ביצועים גבוהים שעברה אופטימיזציה לאפליקציות AI ו-HPC. עם קיבולת של כמה פטה-בייט וקצב העברה של עד 1TBps, ‏ Managed Lustre מאפשר להעביר עומסי עבודה כבדים לענן.

מכונות Managed Lustre נמצאות בתחומים בתוך אזורים. אזור הוא מיקום גיאוגרפי ספציפי שבו אפשר להשתמש במשאבים. כל אזור מחולק לכמה תחומים. לדוגמה, האזור us-central1 במרכז ארצות הברית מכיל את האזורים us-central1-a, us-central1-b, us-central1-c ו-us-central1-f. מידע נוסף זמין במאמר מיקום גיאוגרפי ואזורים.

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

כשיוצרים מופע מנוהל של Lustre, צריך להגדיר את המאפיינים הבאים:

  • השם של המופע שבו נעשה שימוש ב-Google Cloud.
  • השם של מערכת הקבצים שבה נעשה שימוש בכלים מצד הלקוח, לדוגמה lfs.
  • נפח האחסון בגיביבייט (GiB). הקיבולת יכולה לנוע בין 9,000‎ GiB לבין ‎~8 PiB (7,632,000 GiB). הגודל המקסימלי של מופע תלוי ברמת הביצועים שלו.
  • ‫Managed Lustre מציע רמות ביצועים שנעות בין 125MBps לכל TiB לבין 1,000MBps לכל TiB.
  • כדי לקבל את הביצועים הטובים ביותר, כדאי ליצור את ה-instance באותו אזור שבו נמצא אשכול האימון.
  • רשת ה-VPC של המופע הזה צריכה להיות אותה רשת שבה נעשה שימוש באשכול האימון.

‫Managed Lustre מציע 4 רמות ביצועים, שלכל אחת מהן מהירות תפוקה מקסימלית שונה לכל ‎TiB. רמות הביצועים משפיעות גם על הגודל המינימלי והמקסימלי של המופע, ועל גודל הצעד בין ערכי הקיבולת המקובלים. אי אפשר לשנות את רמת הביצועים של מופע אחרי שהוא נוצר.

פריסת Managed Lustre מחייבת גישה לשירותים פרטיים, שיוצרת קישור בין רשתות VPC שכנות בין ה-VPC של אשכול האימון לבין ה-VPC שמארח את Managed Lustre, באמצעות רשת משנה ייעודית מסוג ‎ /20.

הגדרת מכונה של Managed Lustre (אופציונלי)

מומלץ להשתמש ב-Google Cloud Managed Lustre רק אם רוצים להשתמש ב-Managed Lustre בשירות פיתוח המודלים.

‫Google Cloud Managed Lustre הוא שירות מנוהל של מערכת קבצים מקבילה עם רמת ביצועים גבוהה ב-Google Cloud. הוא מיועד במיוחד להאצת עומסי עבודה תובעניים ב-AI/למידת מכונה ובמחשוב עתיר ביצועים (HPC).

כדי להשיג ביצועים אופטימליים כשמשתמשים באשכולות אימון, צריך לפרוס את Google Cloud Managed Lustre מאותו VPC ואזור כמו אשכול האימון באמצעות קישור בין רשתות שכנות (VPC peering) לרשת השירותים.

יצירת מופע Lustre

    gcloud lustre instances create LUSTRE_INSTANCE_ID \
    --project=PROJECT_ID \
    --location=ZONE \
    --filesystem=lustrefs \
    --per-unit-storage-throughput=500 \
    --capacity-gib=36000 \
    --network=NETWORK_NAME

  

התקנת Cloud Storage

כדרישה מוקדמת, צריך לוודא שלחשבון השירות של המכונה הווירטואלית יש את התפקיד 'Storage Object User'.

טעינה כברירת מחדל

אשכולות האימון של Gemini Enterprise Agent Platform משתמשים ב-Cloud Storage FUSE כדי לטעון באופן דינמי את קטגוריות Cloud Storage בכל הצמתים של הכניסה והחישוב, וכך מאפשרים גישה אליהם בספרייה /gcs. אי אפשר להציג רשימה של קטגוריות שנטענו באופן דינמי מנקודת הטעינה של הרמה הבסיסית (root) /gcs. אפשר לגשת לקטגוריות שנטענו באופן דינמי כספריות משנה:

user@testcluster:$ ls /gcs/your-bucket-name
user@testcluster:$ cd /gcs/your-bucket-name

מעמד בהתאמה אישית

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

sudo mkdir -p $MOUNT_DIR
echo "$GCS_BUCKET $MOUNT_DIR gcsfuse $OPTION_1,$OPTION_2,..." | sudo tee -a /etc/fstab
sudo mount -a

לדוגמה, כדי לטעון את הקטגוריה mtdata לספרייה /data, משתמשים בפקודה הבאה:

sudo mkdir -p /data
echo "mtdata /data gcsfuse defaults,_netdev,implicit_dirs,allow_other,dir_mode=777,file-mode=777,metadata_cache_negative_ttl_secs=0,metadata_cache_ttl_secs=-1,stat_cache_max_size_mb=-1,type_cache_max_size_mb=-1,enable_streaming_writes=true" | sudo tee -a /etc/fstab
sudo mount -a

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

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

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

השלבים הבאים מתמקדים בשימוש יעיל באשכול לאימון בקנה מידה גדול.