Storage

אם אתם רוצים לקבל גישה לאשכולות אימון ב-Vertex AI, אתם יכולים לפנות לנציג המכירות שלכם.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Filestore

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

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

הדרישות של Filestore

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

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

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

יוצרים מופע Filestore אזורי או ספציפי לאזור מסוים באזור שבו רוצים ליצור את האשכול. ‫Vertex AI 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 נמצאות בתחומים (zones) בתוך אזורים. אזור הוא מיקום גיאוגרפי ספציפי שבו אפשר להשתמש במשאבים. כל אזור מחולק לכמה תחומים. לדוגמה, האזור us-central1 במרכז ארצות הברית מכיל את האזורים us-central1-a,‏ us-central1-b,‏ us-central1-c ו-us-central1-f. מידע נוסף זמין במאמר מיקום גיאוגרפי ואזורים.

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

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

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

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

פריסת Managed Lustre מחייבת גישה לשירותים פרטיים, שיוצרת קישור בין רשתות שכנות (peering) בין ה-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

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

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

אשכולות האימון של Vertex AI משתמשים ב-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 לאימון, להסקת מסקנות ולנקודות ביקורת.

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

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

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