יצירה והפעלה של מופע של מכונה וירטואלית עם מעבדי GPU של NVIDIA

במאמר הזה מתואר איך ליצור מכונה וירטואלית (VM) מבוססת-Linux עם יחידות לעיבוד גרפי (GPU) של NVIDIA.

מכונה וירטואלית עם מעבדי GPU מאפשרת להריץ עומסי עבודה שונים עם האצת GPU, למשל בינה מלאכותית ולמידת מכונה.

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

המסמך הזה מיועד למפתחים בקבוצות של אדמינים בפלטפורמה או מפעילים של אפליקציות שיוצרים מכונות וירטואליות בסביבה מבודדת (air-gapped) של Google Distributed Cloud‏ (GDC). מידע נוסף זמין במאמר קהלים ב-GDC עם air gap.

לפני שמתחילים

הכנת הסביבה

כדי להשתמש בפקודות של ממשק שורת הפקודה (CLI) של gdcloud, צריך לוודא שהורדתם, התקנתם והגדרתם את ה-CLI של gdcloud. כל הפקודות ל-Distributed Cloud משתמשות ב-CLI של gdcloud או kubectl, ונדרשת סביבת Linux.

שליחת בקשה לתפקידי IAM

פנו לאדמין של IAM בפרויקט ובקשו ממנו להקצות לכם את התפקידים הבאים בפרויקט:

  • אדמין של פרויקט מכונות וירטואליות (project-vm-admin): יצירה, שינוי, הצגה ומחיקה של מכונות וירטואליות במרחב השמות של הפרויקט.

  • צפייה בפרויקט(project-viewer): צפייה בכל המשאבים במרחב השמות של הפרויקט.

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

יצירת VM

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

התקנת דרייברים של NVIDIA

בקטע הזה מפורטים השלבים להתקנת דרייברים של NVIDIA במכונת ה-VM של GDC.

התקנת החבילה

החל מגרסה v20250809 ואילך, תמונות של Ubuntu ו-Rocky Linux שסופקו על ידי GDC כוללות מנהלי התקנים (דרייברים) של NVIDIA שהותקנו מראש.

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

Ubuntu

 sudo apt install nvidia-dkms-570-server-open

‫Rocky Linux ו-RHEL

 sudo dnf install nvidia-driver-cuda

הפעלת DKMS

מפעילים את מנהל ההתקן של NVIDIA במכונה הווירטואלית באמצעות הפקודה dkms. צריך לבצע את המשימה הזו רק פעם אחת לכל מכונה וירטואלית:

   sudo dkms autoinstall

התקנת ערכת הכלים של CUDA

ערכת הכלים NVIDIA CUDA זמינה במאגרי החבילות של GDC. מתחברים למכונה הווירטואלית באמצעות SSH ומריצים את הפקודה שמתאימה למערכת ההפעלה של המכונה הווירטואלית:

Ubuntu

 sudo apt install cuda-toolkit-12-8

‫Rocky Linux ו-RHEL

 sudo dnf install cuda-toolkit-12-8

הפעלת הפעלה מאובטחת וחתימה על מנהלי התקנים

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

Ubuntu

  1. מתחברים למכונה הווירטואלית באמצעות SSH.
  2. מעבר למשתמש על:

    sudo su
    
  3. יוצרים מפתח MOK אם הוא עדיין לא קיים:

    [ -f /var/lib/shim-signed/mok/MOK.der ] || openssl req -new -x509 -newkey rsa:2048 -keyout /var/lib/shim-signed/mok/MOK.priv \
        -outform DER -out /var/lib/shim-signed/mok/MOK.der \
        -nodes -days 36500 -subj "/CN=DKMS Signing Key/"
    
  4. רושמים את המפתח באמצעות mokutil:

    mokutil --import /var/lib/shim-signed/mok/MOK.der
    
  5. כשמוצגת בקשה, יוצרים סיסמה חדשה ומזינים אותה.

  6. חותמים על מודולי הליבה של NVIDIA באמצעות MOK:

    for module in nvidia nvidia_drm nvidia_modeset nvidia_uvm nvidia_peermem; do
        /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 /var/lib/shim-signed/mok/MOK.priv /var/lib/shim-signed/mok/MOK.der $(modinfo -n $module)
    done
    

‫Rocky Linux ו-RHEL

  1. מתחברים למכונה הווירטואלית באמצעות SSH.
  2. מעבר למשתמש על:

    sudo su
    
  3. חותמים על הנהג באמצעות המפתח באמצעות dkms autoinstall:

    sudo dkms autoinstall
    
  4. רושמים את מפתח ה-DKMS ב-MOK:

    mokutil --import /var/lib/dkms/mok.pub
    

סיום ההרשמה ואימות של MOK

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

  1. מפעילים מחדש את המופע של ה-VM:

    reboot
    
  2. מתחברים למסוף הטורי של ה-VM. מידע נוסף זמין במאמר איך מתחברים ליציאה טורית.

  3. רושמים את ה-MOK מהמסוף:

    מסך ניהול MOK של קונסולה סדרתית של מכונה וירטואלית

    מסך ניהול MOK במסוף הטורי של מכונה וירטואלית עם ההדגשה 'הוספת MOK'

    אפשר להציג את המפתח כדי לוודא שהוא זהה לזה שנוצר בשלב קודם:

    מסך ניהול MOK של מסוף טור VM עם האפשרות 'המשך' שנבחרה

  4. מזינים את הסיסמה שבחרתם קודם:

    מסך ניהול ה-MOK של המסוף הטורי של ה-VM שמבקש סיסמה

  5. בתפריט הניהול של MOK, בוחרים באפשרות Reboot (הפעלה מחדש):

    מסך ניהול MOK של מסוף טור VM עם האפשרות 'הפעלה מחדש' שנבחרה

  6. מריצים את הפקודה nvidia-smi כדי לוודא שהדרייבר של NVIDIA פועל.

    הפלט מציג את סטטוס ה-GPU ופרטי הדרייבר:

    $ nvidia-smi
    Wed Aug 13 00:09:17 2025
    +-----------------------------------------------------------------------------------------+
    | NVIDIA-SMI 570.158.01             Driver Version: 570.158.01     CUDA Version: 12.8     |
    |-----------------------------------------+------------------------+----------------------+
    | GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
    | Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
    |                                         |                        |               MIG M. |
    |=========================================+========================+======================|
    |   0  NVIDIA H200                    Off |   00000000:08:00.0 Off |                    0 |
    | N/A   42C    P0            128W /  700W |       0MiB / 143771MiB |      0%      Default |
    |                                         |                        |             Disabled |
    +-----------------------------------------+------------------------+----------------------+
    |   1  NVIDIA H200                    Off |   00000000:09:00.0 Off |                    0 |
    | N/A   36C    P0            127W /  700W |       0MiB / 143771MiB |      0%      Default |
    |                                         |                        |             Disabled |
    +-----------------------------------------+------------------------+----------------------+
    |   2  NVIDIA H200                    Off |   00000000:0A:00.0 Off |                    0 |
    | N/A   34C    P0            122W /  700W |       0MiB / 143771MiB |      0%      Default |
    |                                         |                        |             Disabled |
    +-----------------------------------------+------------------------+----------------------+
    |   3  NVIDIA H200                    Off |   00000000:0B:00.0 Off |                    0 |
    | N/A   40C    P0            128W /  700W |       0MiB / 143771MiB |      0%      Default |
    |                                         |                        |             Disabled |
    +-----------------------------------------+------------------------+----------------------+
    |   4  NVIDIA H200                    Off |   00000000:0C:00.0 Off |                    0 |
    | N/A   39C    P0            125W /  700W |       0MiB / 143771MiB |      0%      Default |
    |                                         |                        |             Disabled |
    +-----------------------------------------+------------------------+----------------------+
    |   5  NVIDIA H200                    Off |   00000000:0D:00.0 Off |                    0 |
    | N/A   35C    P0            122W /  700W |       0MiB / 143771MiB |      0%      Default |
    |                                         |                        |             Disabled |
    +-----------------------------------------+------------------------+----------------------+
    |   6  NVIDIA H200                    Off |   00000000:0E:00.0 Off |                    0 |
    | N/A   39C    P0            128W /  700W |       0MiB / 143771MiB |      0%      Default |
    |                                         |                        |             Disabled |
    +-----------------------------------------+------------------------+----------------------+
    |   7  NVIDIA H200                    Off |   00000000:0F:00.0 Off |                    0 |
    | N/A   35C    P0            121W /  700W |       0MiB / 143771MiB |      0%      Default |
    |                                         |                        |             Disabled |
    +-----------------------------------------+------------------------+----------------------+
    
    +-----------------------------------------------------------------------------------------+
    | Processes:                                                                              |
    |  GPU   GI   CI              PID   Type   Process name                        GPU Memory |
    |        ID   ID                                                               Usage      |
    |=========================================================================================|
    |  No running processes found                                                             |
    +-----------------------------------------------------------------------------------------+
    

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