כדי להשתמש בGPU עם Confidential VMs, צריך ליצור מכונה וירטואלית באמצעות סוג מכונה נתמך ומודל הקצאה של מכונה. אחרי שיוצרים את מכונת ה-VM, מפעילים את מצב Confidential Computing ב-GPU המצורף.
מכונות וירטואליות (VM) חסויות עם מעבדי GPU של NVIDIA זמינות בסוגי המכונות הבאים:
מכונה מסוג A3 High: מעבדי GPU מסוג NVIDIA H100 עם Intel TDX. יש תמיכה במודלים של הקצאת משאבים לפי דרישה ושל הקצאת משאבים עם התחלה גמישה.
מכונה מסוג G4: NVIDIA RTX PRO 6000 עם AMD SEV. תמיכה במודלים של הקצאה רגילה (על פי דרישה), ספוט והתחלה גמישה (Flex-start), והזמנות.
כשמשתמשים ב-GPU מסוג NVIDIA RTX Pro 6000 עם מכונות וירטואליות מסוג Confidential G4, משלמים באופן אוטומטי דמי רישיון על תוכנת המחשב והשירותים של NVIDIA Confidential Computing. לפרטים נוספים, קראו את המאמר תמחור של Confidential Computing עם GPUs.
לפני שיוצרים Confidential VM עם GPU, צריך לוודא שיש מספיק מכסת GPU. למידע נוסף, ראו מכסות.
יצירת Confidential VM עם GPU
כדי ליצור מכונה וירטואלית של Confidential VM עם GPU מצורף, משתמשים באחד ממודלי ההקצאה הבאים:
Standard (על פי דרישה): יצירת מופע של מכונה וירטואלית רגילה (על פי דרישה) שעברה אופטימיזציה להאצה. המודל הזה זמין רק לסוג המכונה G4. במאמר מודל רגיל (על פי דרישה) או מודל Spot מוסבר איך עושים את זה.
Spot: יצירת מכונה וירטואלית במודל Spot עם אופטימיזציה למאיצים, לסוגי המכונות A3 High או G4. מודל רגיל (על פי דרישה) או מודל Spot
Flex-start: יוצרים קבוצת מופעי מכונה מנוהלים (MIG) למכונות מסוג A3 High או G4. שלבים מפורטים מופיעים במאמר בנושא מודל Flex-start.
מודל רגיל (על פי דרישה) או מודל ספוט
gcloud
כדי ליצור מכונה רגילה (על פי דרישה) או VM במודל Spot שעברה אופטימיזציה למאיצים באמצעות ה-CLI של gcloud, משתמשים בפקודת המשנה instances create עם הדגל --provisioning-model.
gcloud compute instances create INSTANCE_NAME \
--provisioning-model=PROVISIONING_MODEL \
--confidential-compute-type=CONFIDENTIAL_COMPUTING_TECHNOLOGY \
--machine-type=MACHINE_TYPE_NAME \
--maintenance-policy=TERMINATE \
--zone=ZONE_NAME \
--image-project=IMAGE_PROJECT \
--image-family=IMAGE_FAMILY_NAME \
--boot-disk-size=30G
כדי להפעיל אתחול מאובטח, אפשר להשתמש בדגל --shielded-secure-boot לאתחול של מכונות וירטואליות.
מספקים את הערכים הבאים:
INSTANCE_NAME: השם של המכונה הווירטואלית החדשה.
PROVISIONING_MODEL: מודל הקצאת המשאבים שנתמך על ידי סוג המכונה. צריך לבחור אחת מהאפשרויות:סוג מכונה A3 High:
SPOTלמופעים של VM במודל Spot.סוג מכונה G4:
STANDARDלמכונות וירטואליות רגילות (על פי דרישה) אוSPOTל-VM במודל Spot. אם לא מציינים ערך, ברירת המחדל היאSTANDARD.
CONFIDENTIAL_COMPUTING_TECHNOLOGY: סוג טכנולוגיית Confidential Computing שבה רוצים להשתמש. צריך לבחור אחת מהאפשרויות:סוג המכונה A3 High (
a3-highgpu-1g):TDXמכונה מסוג G4 (
g4-standard-48):SEV
MACHINE_TYPE_NAME: סוג המכונה הווירטואלית. בוחרים אחת מהאפשרויות הבאות:a3-highgpu-1gg4-standard-48
ZONE_NAME: האזור הנתמך שבו רוצים ליצור את המכונה הווירטואלית.
IMAGE_PROJECT: הפרויקט שמכיל את תמונת מערכת ההפעלה שנתמכת על ידי מכונה וירטואלית חסויה ל-GPU.
IMAGE_FAMILY_NAME: משפחת התמונות של מערכת ההפעלה שנתמכת ב-Confidential VM ל-GPU.
REST
כדי ליצור מכונה רגילה (על פי דרישה) או מכונה של VM במודל Spot, שולחים את בקשת ה-POST הבאה עם תוכן הגוף המתאים.
משתמשים ב-method הבא ב-HTTP ובכתובת ה-URL:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
משתמשים בגוף בקשת ה-JSON הבא:
{
"name": "INSTANCE_NAME",
"machineType": "zones/ZONE/machineTypes/MACHINE_TYPE_NAME",
"confidentialInstanceConfig": {
"confidentialInstanceType": "CONFIDENTIAL_COMPUTING_TECHNOLOGY"
},
"scheduling": {
"onHostMaintenance": "TERMINATE",
"automaticRestart": true,
"provisioningModel": "PROVISIONING_MODEL"
},
"disks": [
{
"boot": true,
"autoDelete": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY",
"diskSizeGb": "30"
}
}
],
"networkInterfaces": [
{
"network": "global/networks/default"
}
]
}
מספקים את הערכים הבאים:
PROJECT_ID: אופציונלי. מזהה הפרויקט שבו יוצרים את המכונה הווירטואלית.
ZONE: האזור הנתמך שבו רוצים ליצור את המכונה הווירטואלית.
INSTANCE_NAME: השם של המכונה הווירטואלית החדשה.
MACHINE_TYPE_NAME: סוג המכונה הווירטואלית. בוחרים באחת מהאפשרויות הבאות:a3-highgpu-1gg4-standard-48
CONFIDENTIAL_COMPUTING_TECHNOLOGY: סוג הטכנולוגיה של Confidential Computing שרוצים להשתמש בה. צריך לבחור אחת מהאפשרויות:סוג המכונה A3 High (
a3-highgpu-1g):TDXסוג מכונה G4 (
g4-standard-48):SEV
PROVISIONING_MODEL: מודל ההקצאה שסדרת המכונות תומכת בו. צריך לבחור אחת מהאפשרויות:סוג המכונה A3 High:
SPOTלמופעים של מכונות וירטואליות במודל Spot.סוג מכונה G4:
STANDARDלמכונות וירטואליות רגילות (על פי דרישה) אוSPOTלמכונות וירטואליות במודל Spot. אם לא מציינים ערך, ערך ברירת המחדל הואSTANDARD.
IMAGE_PROJECT: הפרויקט שמכיל את תמונת מערכת ההפעלה שנתמכת על ידי מכונה וירטואלית חסויה ל-GPU.
IMAGE_FAMILY: משפחת תמונות מערכת ההפעלה שנתמכות על ידי Confidential VM ל-GPU.
מודל Flex-start
כדי להשתמש במודל התחלה גמישה (Flex-start), צריך קודם ליצור תבנית של הגדרות מכונה, ואז להשתמש בתבנית הזו כדי ליצור קבוצת מופעי מכונה מנוהלים (MIG). אחרי זה תוכלו להוסיף מכונות וירטואליות עם GPU ל-MIG באמצעות בקשות לשינוי כמות.
שימוש בבקשה לשינוי גודל של MIG עם מודל ההקצאה flex-start משפר את הזמינות של מכונות וירטואליות עם GPU. מידע נוסף זמין במאמר מידע על בקשות לשינוי כמות בקבוצת MIG.
לפני שמתחילים
- כדי ליצור MIG, קראו את הדרישות המוקדמות של MIG.
- כדי ליצור בקשה לשינוי כמות ב-MIG, קראו את המגבלות של בקשות לשינוי כמות.
יצירת קבוצת מופעי מכונה מנוהלים (MIG) עם מכונות וירטואליות של GPU
כדי ליצור תבנית של הגדרות מכונה, ואז להשתמש בתבנית כדי ליצור קבוצת MIG, צריך לבצע את השלבים הבאים.
יוצרים תבנית של הגדרות מכונה.
gcloud
gcloud beta compute instance-templates create INSTANCE_TEMPLATE_NAME \ --provisioning-model=FLEX_START \ --confidential-compute-type=CONFIDENTIAL_COMPUTING_TECHNOLOGY \ --machine-type=MACHINE_TYPE_NAME \ --maintenance-policy=TERMINATE \ --image-project=IMAGE_PROJECT \ --image-family=IMAGE_FAMILY_NAME \ --boot-disk-size=30G \ --instance-termination-action=DELETE \ --max-run-duration=RUN_DURATION \ --project=PROJECT_IDמספקים את הערכים הבאים:
INSTANCE_TEMPLATE_NAME: השם של תבנית של הגדרות מכונה חדשה.
CONFIDENTIAL_COMPUTING_TECHNOLOGY: סוג הטכנולוגיה של Confidential Computing שרוצים להשתמש בה. צריך לבחור אחת מהאפשרויות:סוג המכונה A3 High (
a3-highgpu-1g):TDXמכונה מסוג G4 (
g4-standard-48):SEV
MACHINE_TYPE_NAME: סוג המכונה הווירטואלית. בוחרים אחת מהאפשרויות הבאות:a3-highgpu-1gg4-standard-48
IMAGE_PROJECT: הפרויקט שמכיל את התמונה של מערכת ההפעלה שנתמכת ב-Confidential VM ל-GPU.
IMAGE_FAMILY_NAME: משפחת קובצי האימג' של מערכת ההפעלה שנתמכת ב-Confidential VM ל-GPU שבהם רוצים להשתמש.
RUN_DURATION: משך הזמן שבו אתם רוצים שהמכונות הווירטואליות המבוקשות יפעלו. צריך להזין את הערך כמספר הימים, השעות, הדקות או השניות, ואחריו את האותיותd,h,mו-s, בהתאמה. לדוגמה:6d8h44m.
PROJECT_ID: מזהה הפרויקט שבו יוצרים את המכונה הווירטואלית.
REST
כדי ליצור תבנית של הגדרות מכונה של Confidential VMs, שולחים את בקשת ה-POST הבאה עם תוכן הבקשה המתאים.
משתמשים בשיטת ה-HTTP ובכתובת ה-URL הבאות:
POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/instanceTemplatesמשתמשים בתוכן הבא של בקשת JSON:
{ "name": "INSTANCE_TEMPLATE_NAME", "properties": { "confidentialInstanceConfig": { "confidentialInstanceType": "CONFIDENTIAL_COMPUTING_TECHNOLOGY" }, "machineType": "MACHINE_TYPE_NAME", "scheduling": { "instanceTerminationAction": "DELETE", "maxRunDuration": { "seconds": "RUN_DURATION_IN_SECONDS" }, "automaticRestart": true, "onHostMaintenance": "TERMINATE", "provisioningModel": "FLEX_START", "preemptible": false }, "disks": [ { "autoDelete": true, "index": 0, "boot": true, "kind": "compute#attachedDisk", "mode": "READ_WRITE", "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY_NAME", "diskSizeGb": "30" }, "type": "PERSISTENT" } ], "networkInterfaces": [ { "accessConfigs": [ { "kind": "compute#accessConfig", "name": "external-nat", "networkTier": "PREMIUM", "type": "ONE_TO_ONE_NAT" } ], "kind": "compute#networkInterface", "name": "nic0", "network": "projects/PROJECT_ID/global/networks/default" } ], "canIpForward": false } }כדי להפעיל את Secure Boot, אפשר לכלול את האובייקט הבא להפעלת מכונות וירטואליות.
"shieldedInstanceConfig": { "enableIntegrityMonitoring": true, "enableSecureBoot": true, "enableVtpm": true }מספקים את הערכים הבאים:
PROJECT_ID: מזהה הפרויקט שבו רוצים ליצור את התבנית.
REGION: האזור שבו רוצים ליצור את התבנית.
INSTANCE_TEMPLATE_NAME: השם של התבנית החדשה של הגדרות המכונה הווירטואלית.
CONFIDENTIAL_COMPUTING_TECHNOLOGY: סוג טכנולוגיית Confidential Computing שבה רוצים להשתמש. צריך לבחור אחת מהאפשרויות:סוג המכונה A3 High (
a3-highgpu-1g):TDXמכונה מסוג G4 (
g4-standard-48):SEV
MACHINE_TYPE_NAME: סוג המכונה הווירטואלית. בוחרים אחת מהאפשרויות הבאות:a3-highgpu-1gg4-standard-48
RUN_DURATION_IN_SECONDS: משך הזמן, בשניות, שבו אתם רוצים שהמכונות הווירטואליות המבוקשות יפעלו. הערך צריך להיות בין600ל-604800שניות.
IMAGE_PROJECT: הפרויקט שמכיל את התמונה של מערכת ההפעלה שנתמכת ב-Confidential VM ל-GPU.
IMAGE_FAMILY_NAME: משפחת מערכת ההפעלה שנתמכת על ידי Confidential VM לשימוש ב-GPU.
יוצרים MIG ובקשה לשינוי כמות כדי להוסיף מכונות וירטואליות של GPU בבת אחת.
מציגים את רשימת המכונות שקיימות ב-MIG.
gcloud
gcloud compute instance-groups managed list-instances INSTANCE_GROUP_NAME \ --zone=ZONE_NAME \ --project=PROJECT_IDמספקים את הערכים הבאים:
INSTANCE_GROUP_NAME: השם של ה-MIG.
ZONE_NAME: האזור הנתמך שממנו רוצים לקבל רשימה של מכונות וירטואליות.
PROJECT_ID: אופציונלי. המזהה של הפרויקט שממנו רוצים לקבל רשימה של מכונות וירטואליות.
REST
כדי להציג רשימה של כל התבניות, שולחים את בקשת ה-GET הבאה.
משתמשים ב-method הבא ב-HTTP ובכתובת ה-URL:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplatesכדי לצמצם את רשימת המכונות לאזור ספציפי, שולחים את בקשת ה-GET הבאה.
משתמשים ב-method הבא ב-HTTP ובכתובת ה-URL:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/ZONE_NAME/instanceTemplatesמספקים את הערכים הבאים:
ZONE_NAME: האזור הנתמך שממנו רוצים לקבל רשימה של מופעים של מכונות וירטואליות.
PROJECT_ID: מזהה הפרויקט שממנו רוצים לקבל רשימה של מופעים של מכונות וירטואליות.
שימוש בהזמנות עם מכונות של Confidential VM
אתם יכולים להשתמש במקום שמור כדי לוודא שיש לכם קיבולת ל-Confidential VMs רק עם סוג המכונה G4.
כדי להשתמש בהזמנה ל-Confidential VM instance:
יוצרים הזמנה רגילה באזור הנתמך. כדי לקבוע איך המכונות יצרכו את המקום השמור, אתם יכולים להשתמש בדגל
--require-specific-reservationכשאתם יוצרים את המקום השמור.יצירת מכונה וירטואלית מסוג Confidential VM כדי להשתמש בהזמנה. כשיוצרים את המכונה הווירטואלית, צריך לכלול את הדגל
--confidential-compute-type=SEVכדי להפוך אותה ל-Confidential VM. האופן שבו המכונה הזו צורכת את המקום השמור תלוי בהגדרות השיוך של המקום השמור.
בדוגמאות הבאות מוסבר איך להשתמש בהזמנות עם מופעים של Confidential VM. השיטה לניצול ההזמנה תלויה באופן שבו היא נוצרה:
שימוש אוטומטי: אם יוצרים הזמנה בלי הדגל
--require-specific-reservation, אפשר ליצור מכונה וירטואלית של G4 Confidential VM עם מאפיינים תואמים (כמו סוג המכונה או האזור) כדי להשתמש בהזמנה באופן אוטומטי.צריכה ספציפית: אם יוצרים הזמנה עם הדגל
--require-specific-reservation, צריך לטרגט את ההזמנה באמצעות הדגלים--reservation-affinity=specificו---reservation=RESERVATION_NAMEכשיוצרים את המכונה:gcloud compute instances create INSTANCE_NAME \ --project=PROJECT_ID \ --zone=ZONE_NAME \ --machine-type=g4-standard-48 \ --confidential-compute-type=SEV \ --image-project=ubuntu-os-cloud \ --image-family=ubuntu-2404-lts-amd64 \ --reservation-affinity=specific \ --reservation=RESERVATION_NAMEמספקים את הערכים הבאים:
INSTANCE_NAME: השם של המכונה הווירטואלית החדשה.
PROJECT_ID: אופציונלי. מזהה הפרויקט שבו רוצים ליצור את המכונה הווירטואלית.
ZONE_NAME: האזור הנתמך שבו רוצים ליצור את המכונה הווירטואלית.
RESERVATION_NAME: השם של ההזמנה.
במאמר צריכת הזמנות מוסבר איך מכונות וירטואליות צורכות הזמנות ואיך פועלת הזיקה.
הפעלת Confidential Computing ב-GPU
מתחברים למכונה וירטואלית בקבוצת המכונות המנוהלת באמצעות הפקודה gcloud compute ssh.
gcloud compute sshמעדכנים את רשימת החבילות ומתקינים את הכלים והספריות הנדרשים.
sudo apt-get update --yes sudo apt-get install linux-headers-$(uname -r) sudo apt install -y build-essential libxml2 libncurses5-dev pkg-config libvulkan1 gcc-12מתקינים את מנהלי ההתקנים המתאימים של ה-GPU במכונה הווירטואלית. למכונות וירטואליות עם אתחול מאובטח מופעל, אפשר לעיין במאמר בנושא התקנת דרייברים של GPU (מכונות וירטואליות עם אתחול מאובטח). אנחנו ממליצים להשתמש בגרסה 580 ומעלה של מנהלי ההתקנים של מודול הליבה (kernel) הפתוח של NVIDIA.
כדי להגדיר תקשורת מאובטחת בין ה-GPU לבין מנהל ההתקן של ה-GPU, צריך להפעיל את Linux Kernel Crypto API (LKCA).
echo "install nvidia /sbin/modprobe ecdsa_generic; /sbin/modprobe ecdh; /sbin/modprobe --ignore-install nvidia" | sudo tee /etc/modprobe.d/nvidia-lkca.conf sudo update-initramfs -uמפעילים את מצב ההתמדה כדי ליצור חיבור מאובטח של פרוטוקול אבטחה ומודל נתונים (SPDM) בין ה-GPU לבין מנהל ההתקן של ה-GPU.
sudo test -f /usr/lib/systemd/system/nvidia-persistenced.service && sudo sed -i "s/no-persistence-mode/uvm-persistence-mode/g" /usr/lib/systemd/system/nvidia-persistenced.service sudo systemctl daemon-reloadמפעילים מחדש את המכונה הווירטואלית כדי להחיל את ההגדרות של LKCA ומצב ההתמדה.
sudo rebootמתחברים למכונה וירטואלית בקבוצת המכונות המנוהלת באמצעות הפקודה gcloud compute ssh.
gcloud compute ssh(אופציונלי) מתקינים את דוגמאות ה-CUDA שתומכות בגרסת מנהל ההתקן שאתם צריכים.
wget -O cuda-samples.tar.gz https://github.com/NVIDIA/cuda-samples/archive/refs/tags/v12.9.tar.gz tar xzvf cuda-samples.tar.gz
המאמרים הבאים
במאמר מכונות וירטואליות של GPU ומכסות הקצאה שניתנות להפסקה לפני הזמן מוסבר איך המכסות מנוצלות.