צירוף אחסון בלוקים עמיד ל-TPU VM
מכונת TPU וירטואלית כוללת דיסק אתחול בנפח 100GiB. במקרים מסוימים, יכול להיות שתצטרכו להקצות למכונת ה-TPU הווירטואלית נפח אחסון נוסף לאימון או לעיבוד מקדים. אתם יכולים להוסיף נפח Google Cloud Hyperdisk או Persistent Disk (PD) כדי להרחיב את הקיבולת של הדיסק המקומי.
כדי ליהנות מהביצועים הכי גבוהים ומהתכונות המתקדמות ביותר, Google ממליצה להשתמש ב-Hyperdisk אם הוא זמין ל-TPU שלכם. אחרת, צריך להשתמש ב-Persistent Disk. מידע נוסף על אפשרויות אחסון בלוקים ב-Compute Engine זמין במאמר בחירת סוג דיסק.
תמיכה ב-TPU ב-Hyperdisk וב-Persistent Disk
בטבלה הבאה מוצגים סוגי הדיסקים הנתמכים לכל גרסת TPU:
| גרסת TPU | סוגי דיסקים נתמכים | מספר הדיסקים המקסימלי לכל מכונה וירטואלית (כולל דיסק האתחול) |
|---|---|---|
| TPU7x (תצוגה מקדימה) | Hyperdisk Balanced | 128 |
| v6e | Hyperdisk Balanced Hyperdisk ML |
32 |
| v5p | דיסק אחסון מתמיד מאוזן | 128 |
| v5e | דיסק אחסון מתמיד מאוזן | 128 |
| v4 | דיסק אחסון מתמיד מאוזן | 128 |
| v3 | דיסק אחסון מתמיד מאוזן | 128 |
| v2 | דיסק אחסון מתמיד מאוזן | 128 |
מצבי גישה
אפשר להגדיר דיסק שמצורף ל-TPU במצב קריאה-בלבד או במצב קריאה וכתיבה, כמו שמוצג בטבלה הבאה:
| מצב גישה | תיאור | הערך ב-Compute Engine API | ערך ב-Cloud TPU API | סוגי דיסקים נתמכים |
|---|---|---|---|---|
| מצב כתיבה יחידה | זהו מצב הגישה שמוגדר כברירת מחדל. מאפשר לצרף את הדיסק למופע אחד לכל היותר בכל זמן. למופע יש גישת קריאה וכתיבה לדיסק. | READ_WRITE_SINGLE |
read-write |
|
| מצב קריאה בלבד | מאפשר לצרף קבצים בו-זמנית לכמה מופעים במצב קריאה-בלבד. במצב הזה, אי אפשר לכתוב בדיסק. נדרש לצורך שיתוף לקריאה בלבד. | READ_ONLY_MANY |
read-only |
|
אפשר להגדיר דיסק שמצורף ל-TPU עם מארח יחיד (לדוגמה, v6e-8, v5p-8 או v5litepod-8) במצב של כותב יחיד או במצב קריאה בלבד.
כשמצרפים דיסק ל-TPU עם כמה מארחים, הדיסק מצורף לכל מכונה וירטואלית ב-TPU הזה. כדי למנוע משתי מכונות TPU VM או יותר לכתוב לדיסק באותו הזמן, צריך להגדיר את כל הדיסקים שמצורפים ל-TPU עם כמה מארחים כקריאה בלבד. דיסקים לקריאה בלבד שימושיים לאחסון מערך נתונים לעיבוד בפלח TPU.
דרישות מוקדמות
כדי לבצע את הפעולות הבאות, צריך להגדיר חשבון ופרויקט ב- Google Cloud . מידע נוסף זמין במאמר בנושא הגדרת סביבת Cloud TPU.
יצירת דיסק
כדי ליצור דיסק, משתמשים בפקודה הבאה:
$ gcloud compute disks create DISK_NAME \ --size DISK_SIZE \ --zone ZONE \ --type DISK_TYPE
תיאורים של דגלי פקודות
-
DISK_NAME: השם של הדיסק החדש. -
DISK_SIZE: גודל הדיסק החדש. הערך חייב להיות מספר שלם שאחריו יחידת גודל של GB לגיביבייט או TB לטביבייט. אם לא מציינים יחידת גודל, המערכת מניחה שמדובר ב-GB. -
ZONE: השם של האזור שבו רוצים ליצור את הדיסק החדש. האזור הזה צריך להיות זהה לאזור שבו נוצר ה-TPU. -
DISK_TYPE: סוג הדיסק. משתמשים באחד מהערכים הבאים:hyperdisk-balanced,hyperdisk-mlאוpd-balanced.
ב-Hyperdisk, אפשר לציין את הדגל --access-mode עם אחד מהערכים הבאים:
-
READ_WRITE_SINGLE: גישת קריאה-כתיבה ממופע אחד. זוהי ברירת המחדל. -
READ_ONLY_MANY: (Hyperdisk ML בלבד) גישה לקריאה בלבד בו-זמנית ממספר מופעים.
למידע נוסף על יצירת דיסקים, אפשר לקרוא את המאמרים יצירת נפח אחסון חדש של Hyperdisk ויצירת נפח אחסון חדש של Persistent Disk.
צירוף דיסק
אפשר לצרף נפח דיסק ל-TPU VM כשיוצרים את ה-TPU VM, או לצרף אותו אחרי שיוצרים את ה-TPU VM.
צירוף דיסק כשיוצרים TPU VM
משתמשים בדגל --data-disk כדי לצרף נפח דיסק כשיוצרים TPU VM.
אם אתם יוצרים TPU עם כמה מארחים, אתם צריכים לציין mode=read-only (רק ב-Hyperdisk ML וב-דיסק אחסון מתמיד מאוזן). אם יוצרים TPU עם מארח יחיד, אפשר לציין mode=read-only (רק Hyperdisk ML ו-דיסק אחסון מתמיד מאוזן) או mode=read-write. מידע נוסף זמין במאמר בנושא מצבי גישה.
בדוגמה הבאה מוצג איך לצרף נפח דיסק כשיוצרים TPU VM באמצעות משאבים בתור:
$ gcloud compute tpus queued-resources create QR_NAME \ --node-id=TPU_NAME --project PROJECT_ID \ --zone=ZONE \ --accelerator-type=ACCELERATOR_TYPE \ --runtime-version=TPU_SOFTWARE_VERSION \ --data-disk source=projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME,mode=MODE
תיאורים של דגלי פקודות
-
QR_NAME: השם של בקשת המשאב שנמצאת בתור. -
TPU_NAME: השם של ה-TPU החדש. -
PROJECT_ID: המזהה של Google Cloud הפרויקט שבו רוצים ליצור את ה-TPU. -
ZONE: השם של האזור שבו רוצים ליצור את Cloud TPU. -
ACCELERATOR_TYPE: סוג המאיץ מציין את הגרסה והגודל של Cloud TPU שרוצים ליצור. מידע נוסף על סוגי המאיצים הנתמכים בכל גרסה של TPU זמין במאמר גרסאות TPU. -
TPU_SOFTWARE_VERSION: גרסת תוכנת ה-TPU. -
DISK_NAME: השם של הדיסק לחיבור ל-TPU VM. -
MODE: המצב של הדיסק. הערך של mode חייב להיות אחד מהערכים הבאים:read-onlyאוread-write. אם לא מציינים את המצב, מצב ברירת המחדל הואread-write. מידע נוסף זמין במאמר בנושא מצב גישה.
אפשר גם לצרף דיסק כשיוצרים TPU VM באמצעות הפקודה gcloud compute tpus tpu-vm create:
$ gcloud compute tpus tpu-vm create TPU_NAME \ --project PROJECT_ID \ --zone=ZONE \ --accelerator-type=ACCELERATOR_TYPE \ --version=TPU_SOFTWARE_VERSION \ --data-disk source=projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME,mode=MODE
תיאורים של דגלי פקודות
-
TPU_NAME: השם של ה-TPU החדש. -
PROJECT_ID: המזהה של Google Cloud הפרויקט שבו רוצים ליצור את ה-TPU. -
ZONE: השם של האזור שבו רוצים ליצור את Cloud TPU. -
ACCELERATOR_TYPE: סוג המאיץ מציין את הגרסה והגודל של Cloud TPU שרוצים ליצור. מידע נוסף על סוגי המאיצים הנתמכים בכל גרסת TPU זמין במאמר גרסאות TPU. -
TPU_SOFTWARE_VERSION: גרסת תוכנת ה-TPU. -
DISK_NAME: השם של הדיסק לחיבור למכונת ה-TPU. -
MODE: המצב של הדיסק. הערך של mode חייב להיות אחד מהערכים הבאים:read-onlyאוread-write. אם לא מציינים את המצב, מצב ברירת המחדל הואread-write. מידע נוסף זמין במאמר בנושא מצבי גישה.
צירוף דיסק ל-TPU VM קיים
משתמשים בפקודה gcloud alpha compute tpus tpu-vm
attach-disk כדי לצרף דיסק ל-TPU VM קיים.
$ gcloud alpha compute tpus tpu-vm attach-disk TPU_NAME \ --zone=ZONE \ --disk=DISK_NAME \ --mode=MODE
תיאורים של דגלי פקודות
-
TPU_NAME: השם של ה-TPU. -
ZONE: האזור שבו נמצא Cloud TPU. -
DISK_NAME: השם של הדיסק לחיבור למכונת ה-TPU. -
MODE: המצב של הדיסק. הערך של mode חייב להיות אחד מהערכים הבאים:read-onlyאוread-write. אם לא מציינים את המצב, מצב ברירת המחדל הואread-write. הערך הזה צריך להתאים למצב הגישה של הדיסק.
אם המכונה הווירטואלית מושבתת מסיבה כלשהי, יכול להיות שתצטרכו לטעון את הדיסק אחרי שתפעילו מחדש את המכונה הווירטואלית. במאמר הגדרת צירוף אוטומטי בהפעלה מחדש של המערכת מוסבר איך להגדיר שהדיסק יצורף אוטומטית בהפעלה מחדש של המכונה הווירטואלית.
מידע נוסף על מחיקה אוטומטית של דיסק זמין במאמרים שינוי של Hyperdisk ושינוי של Persistent Disk.
פירמוט וטעינה של דיסק
אם חיברתם דיסק חדש וריק למכונת ה-TPU הווירטואלית, תצטרכו לפרמט את הדיסק ולחבר אותו לפני שתוכלו להשתמש בו. אם צירפתם דיסק שכבר מכיל נתונים, אתם צריכים לטעון את הדיסק לפני שתוכלו להשתמש בו.
מידע נוסף על עיצוב והרכבה של דיסק שאינו דיסק אתחול זמין במאמר עיצוב והרכבה של דיסק שאינו דיסק אתחול במכונה וירטואלית של Linux.
מתחברים למכונת ה-TPU באמצעות SSH:
$ gcloud compute tpus tpu-vm ssh TPU_NAME --zone ZONE
אם אתם משתמשים ב-TPU עם כמה מארחים, הפקודה הזו תחבר אתכם ל-TPU הראשון בפלח ה-TPU (שנקרא גם worker 0).
מה-TPU VM, מציגים את רשימת הדיסקים שמחוברים ל-TPU VM:
(vm)$ sudo lsblk
הפלט של הפקודה
lsblkאמור להיראות כך:NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop0 7:0 0 55.5M 1 loop /snap/core18/1997 loop1 7:1 0 67.6M 1 loop /snap/lxd/20326 loop2 7:2 0 32.3M 1 loop /snap/snapd/11588 loop3 7:3 0 32.1M 1 loop /snap/snapd/11841 loop4 7:4 0 55.4M 1 loop /snap/core18/2066 sda 8:0 0 300G 0 disk ├─sda1 8:1 0 299.9G 0 part / ├─sda14 8:14 0 4M 0 part └─sda15 8:15 0 106M 0 part /boot/efi sdb 8:16 0 10G 0 disk
בדוגמה הזו,
sdaהוא דיסק האתחול ו-sdbהוא השם של הדיסק החדש שצורף. השם של הדיסק המצורף תלוי במספר הדיסקים שמצורפים למכונה הווירטואלית.כשמשתמשים ב-TPU עם כמה מארחים, צריך לטעון את הדיסק לכל מכונות ה-TPU הווירטואליות בפלח ה-TPU. השם של הדיסק צריך להיות זהה בכל מכונות ה-TPU הווירטואליות, אבל אין בכך ערובה. לדוגמה, אם מנתקים את הדיסק ואז מחברים אותו מחדש, שם המכשיר גדל ב-1, ומשתנה מ-
sdbל-sdc.אם הדיסק לא פורמט, צריך לפרמט את הדיסק המצורף באמצעות הכלי
mkfs. מחליפים את sdb אם לדיסק יש שם מכשיר אחר. מחליפים את ext4 אם רוצים להשתמש במערכת קבצים אחרת.(vm)$ sudo mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/sdb
יוצרים ספרייה לטעינת הדיסק ב-TPU.
אם אתם משתמשים ב-TPU עם מארח יחיד, מריצים את הפקודה הבאה מה-TPU כדי ליצור ספרייה לטעינת הדיסק:
(vm)$ sudo mkdir -p /mnt/disks/MOUNT_DIR
מחליפים את MOUNT_DIR בספרייה שבה רוצים לטעון את הדיסק.
אם אתם משתמשים ב-TPU עם כמה מארחים, מריצים את הפקודה הבאה מחוץ למכונה הווירטואלית של ה-TPU. הפקודה הזו תיצור את הספרייה בכל מכונות ה-VM של TPU ב-TPU slice.
(vm)$ gcloud compute tpus tpu-vm ssh TPU_NAME --worker=all --command="sudo mkdir -p /mnt/disks/MOUNT_DIR"
מחברים את הדיסק ל-TPU באמצעות הכלי
mount.אם אתם משתמשים ב-TPU עם מארח יחיד, מריצים את הפקודה הבאה כדי לטעון את הדיסק במכונת ה-VM של ה-TPU:
(vm)$ sudo mount -o discard,defaults /dev/sdb /mnt/disks/MOUNT_DIR
אם אתם משתמשים ב-TPU עם כמה מארחים, מריצים את הפקודה הבאה מחוץ למכונה הווירטואלית של ה-TPU. הדיסק יותקן בכל מכונות ה-TPU VM בפלח ה-TPU.
(vm)$ gcloud compute tpus tpu-vm ssh TPU_NAME --worker=all --command="sudo mount -o discard,defaults /dev/sdb /mnt/disks/MOUNT_DIR"
הגדרת הרשאות קריאה וכתיבה בדיסק. לדוגמה, הפקודה הבאה מעניקה לכל המשתמשים הרשאת כתיבה לדיסק.
(vm)$ sudo chmod a+w /mnt/disks/MOUNT_DIR
ביטול הטעינה של דיסק
כדי לבטל את הטעינה (ניתוק) של דיסק ממכונת ה-TPU שלכם, מריצים את הפקודה הבאה:
$ gcloud alpha compute tpus tpu-vm detach-disk TPU_NAME \ --zone=ZONE \ --disk=DISK_NAME
תיאורים של דגלי פקודות
-
TPU_NAME: השם של ה-TPU. -
ZONE: האזור שבו נמצא Cloud TPU. -
DISK_NAME: השם של הדיסק לניתוק מ-TPU VM.
הסרת המשאבים
אחרי שמסיימים להשתמש במשאבי Cloud TPU ובמשאבי Compute Engine, מוחקים אותם.
אם עדיין לא עשיתם זאת, מתנתקים מ-Cloud TPU:
(vm)$ exit
ההנחיה אמורה להיות עכשיו
username@projectname, כדי שתדעו שאתם ב-Cloud Shell.כדי למחוק את Cloud TPU:
$ gcloud compute tpus tpu-vm delete TPU_NAME \ --zone=ZONE
מוודאים ש-Cloud TPU נמחק. יכול להיות שיחלפו כמה דקות עד שהמחיקה תסתיים.
$ gcloud compute tpus tpu-vm list --zone=ZONE
כדי לוודא שהדיסק נמחק אוטומטית כשמחקתם את מכונת ה-TPU הווירטואלית, מריצים את הפקודה הבאה כדי להציג את כל הדיסקים באזור שבו יצרתם את הדיסק:
$ gcloud compute disks list --filter="zone:( ZONE )"
אם הדיסק לא נמחק כשמחקתם את מכונת ה-TPU, אתם יכולים להשתמש בפקודה הבאה כדי למחוק אותו:
$ gcloud compute disks delete DISK_NAME \ --zone ZONE