צירוף אחסון בלוקים עמיד ל-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
Hyperdisk ML
128
v6e Hyperdisk Balanced
Hyperdisk ML
32
v5p Hyperdisk ML
Balanced Persistent Disk
128
v5e Hyperdisk ML
Balanced Persistent Disk
128
v4 דיסק אחסון מתמיד מאוזן 128
v3 דיסק אחסון מתמיד מאוזן 128
v2 דיסק אחסון מתמיד מאוזן 128

מצבי גישה

אפשר להגדיר דיסק שמצורף ל-TPU במצב קריאה-בלבד או במצב קריאה וכתיבה, כמו שמוצג בטבלה הבאה:

מצב גישה תיאור הערך ב-Compute Engine API ערך ב-Cloud TPU API סוגי דיסקים נתמכים
מצב כתיבה יחיד זהו מצב הגישה שמוגדר כברירת מחדל. מאפשר לצרף את הדיסק למופע אחד לכל היותר בכל זמן נתון. למופע יש גישת קריאה וכתיבה לדיסק. READ_WRITE_SINGLE read-write
  • Hyperdisk Balanced
  • Hyperdisk ML
  • דיסק אחסון מתמיד מאוזן
מצב קריאה בלבד מאפשר לצרף קבצים בו-זמנית לכמה מופעים במצב קריאה-בלבד. במצב הזה, אי אפשר לכתוב בדיסק. נדרש לשיתוף לקריאה בלבד. READ_ONLY_MANY read-only
  • Hyperdisk ML
  • דיסק אחסון מתמיד מאוזן

אפשר להגדיר דיסק שמצורף ל-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 ו-Balanced Persistent Disk). אם יוצרים TPU עם מארח יחיד, אפשר לציין mode=read-only (רק Hyperdisk ML ו-Balanced Persistent Disk) או mode=read-write. מידע נוסף זמין במאמר בנושא מצבי גישה.

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

$ 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.
  • MODE: המצב של הדיסק. הערך של mode חייב להיות אחד מהערכים הבאים: read-only או read-write. אם לא מציינים את המצב, ברירת המחדל היא read-write. מידע נוסף זמין במאמר בנושא מצב גישה.

אפשר גם לצרף דיסק כשיוצרים מכונת TPU וירטואלית באמצעות הפקודה 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 VM.
  • 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 VM.
  • MODE: המצב של הדיסק. הערך של mode חייב להיות אחד מהערכים הבאים: read-only או read-write. אם לא מציינים את המצב, ברירת המחדל היא read-write. הערך הזה צריך להתאים למצב הגישה של הדיסק.

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

מידע נוסף על מחיקה אוטומטית של דיסק זמין במאמר בנושא שינוי ההגדרה של מחיקה אוטומטית של דיסק.

פירמוט והרכבה של דיסק

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

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

  1. מתחברים למכונת ה-TPU באמצעות SSH:

    $ gcloud compute tpus tpu-vm ssh TPU_NAME --zone ZONE

    אם אתם משתמשים ב-TPU עם כמה מארחים, הפקודה הזו תחבר אתכם ל-TPU הראשון בפלח ה-TPU (שנקרא גם worker 0).

  2. מה-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 עם כמה מארחים, צריך לצרף את הדיסק לכל מכונות ה-VM של TPU בפלח ה-TPU. השם של הדיסק צריך להיות זהה בכל מכונות ה-TPU הווירטואליות, אבל אין הבטחה שזה יקרה. לדוגמה, אם מנתקים את הדיסק ואז מחברים אותו מחדש, שם המכשיר גדל ב-1, ומשתנה מ-sdb ל-sdc.

  3. אם הדיסק לא פורמט, צריך לפרמט את הדיסק המצורף באמצעות הכלי mkfs. מחליפים את sdb אם לדיסק יש שם מכשיר שונה. מחליפים את ext4 אם רוצים להשתמש במערכת קבצים אחרת.

    (vm)$ sudo mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/sdb
  4. יוצרים ספרייה לטעינת הדיסק ב-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"
  5. מחברים את הדיסק ל-TPU באמצעות הכלי mount.

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

    (vm)$ sudo mount -o discard,defaults /dev/sdb /mnt/disks/MOUNT_DIR

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

    (vm)$ gcloud compute tpus tpu-vm ssh TPU_NAME --worker=all --command="sudo mount -o discard,defaults /dev/sdb /mnt/disks/MOUNT_DIR"
  6. הגדרת הרשאות קריאה וכתיבה בדיסק. לדוגמה, הפקודה הבאה מעניקה לכל המשתמשים הרשאת כתיבה לדיסק.

    (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, מוחקים אותם.

  1. מתנתקים מ-Cloud TPU, אם עדיין לא עשיתם זאת:

    (vm)$ exit

    ההנחיה אמורה להיות עכשיו username@projectname, כדי שתדעו שאתם ב-Cloud Shell.

  2. כדי למחוק את Cloud TPU:

    $ gcloud compute tpus tpu-vm delete TPU_NAME \
        --zone=ZONE
  3. מוודאים ש-Cloud TPU נמחק. יכול להיות שיחלפו כמה דקות עד שהפריט יימחק.

    $ gcloud compute tpus tpu-vm list --zone=ZONE
  4. כדי לוודא שהדיסק נמחק אוטומטית כשמחקתם את מכונת ה-TPU הווירטואלית, מריצים את הפקודה הבאה כדי להציג את כל הדיסקים באזור שבו יצרתם את הדיסק:

    $ gcloud compute disks list --filter="zone:( ZONE )"

    אם הדיסק לא נמחק כשמחקתם את מכונת ה-TPU, אתם יכולים להשתמש בפקודה הבאה כדי למחוק אותו:

    $ gcloud compute disks delete DISK_NAME \
        --zone ZONE