בחירת הגדרות האחסון הנכונות היא קריטית לביצועים וליציבות של אשכול האימון. השירות משולב עם שני פתרונות אחסון נפרדים בעלי ביצועים גבוהים:
- Filestore: שירות קבצים מנוהל שנדרש ומספק את ספריות
/homeהמשותפות לכל הצמתים באשכול. - Google Cloud Managed Lustre: מערכת קבצים מקבילית אופציונלית שנועדה לביצועי קלט/פלט קיצוניים, ומתאימה במיוחד לאימון על מערכי נתונים עצומים.
בדף הזה מוסבר על השימושים העיקריים שלהם ועל הדרישות הספציפיות של הרשת והפריסה כדי להטמיע אותם בהצלחה באשכול.
שילוב אחסון לאשכולות אימון
אשכולות האימון של Vertex AI מסתמכים על פתרונות אחסון ספציפיים ברשת כדי לפעול. Filestore נדרש כדי לספק את ספריות /home המשותפות לאשכול, ואילו Managed Lustre היא מערכת קבצים אופציונלית עם ביצועים גבוהים לעומסי עבודה תובעניים.
חשוב מאוד להגדיר את הרשת לשירותי האחסון האלה בצורה נכונה לפני שמבצעים פריסה של האשכול.
Filestore לספריות ביתיות
השירות הזה משתמש במופע Filestore כדי לספק את ספריית /home
השיתוף לאשכול. כדי להבטיח קישוריות תקינה, צריך ליצור את משאבי הענן בסדר הספציפי הזה:
- יוצרים את רשת ה-VPC: קודם פורסים רשת VPC שמוגדרת עם ה-MTU המומלץ (לדוגמה, 8896).
- יוצרים את מופע Filestore: לאחר מכן, פורסים את מופע Filestore ברשת ה-VPC שיצרתם.
- יוצרים את אשכול האימון: לבסוף, פורסים את האשכול, שיוכל להתחבר למופע 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 לפני שיוצרים את האשכול.
- חובה
/homeDirectory: כל אשכול אימון צריך מופע 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 כדי להפוך לאוטומטי את התהליך של הכנת הנתונים, שליחת המשימות ורישום המודל.
- מעקב אחרי עבודות ההדרכה וניפוי באגים בהן: אפשר לעקוב אחרי ההתקדמות וניצול המשאבים של עבודות ההדרכה המבוזרות כדי לזהות ולפתור בעיות.