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

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

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

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

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

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

הכנת הסביבה

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

בקשת תפקידים ב-IAM

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

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

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

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

יצירת VM

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

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

בקטע הזה מוסבר איך להתקין מנהלי התקנים של NVIDIA במכונה הווירטואלית של GDC.

התקנת החבילה

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

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

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. מפעילים מחדש את המכונה הווירטואלית:

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

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

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

    מסך ניהול MOK של קונסולה טורית של VM עם הדגשה של 'רישום MOK'

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

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

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

    מסך ניהול MOK של קונסולה טורית של VM שבו מוצגת בקשה להזנת סיסמה

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

    מסך ניהול MOK של קונסולה טורית של VM עם האפשרות 'Reboot' מסומנת

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

    בפלט מוצגים הסטטוס של ה-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                                                             |
    +-----------------------------------------------------------------------------------------+
    

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