ניהול משאבים בתור

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

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

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

  • WAITING_FOR_RESOURCES: הבקשה עברה אימות ראשוני והתווספה לתור. הסטטוס הזה יישאר עד שיהיו מספיק משאבים פנויים כדי להתחיל בהקצאת הבקשה או עד שמרווח ההקצאה יסתיים. כשהביקוש גבוה, לא ניתן לספק את כל הבקשות באופן מיידי. אם אתם צריכים זמינות מהימנה יותר של TPU, כדאי לשקול רכישת הזמנה.
  • PROVISIONING: הבקשה נבחרה מהתור והמשאבים שלה מוקצים.
  • ACTIVE: הבקשה הוקצתה. כשבקשות למשאבים שנמצאות בתור הן במצב ACTIVE, אפשר לנהל את המכונות הווירטואליות של TPU כמו שמתואר במאמר ניהול של יחידות TPU.
  • FAILED: אי אפשר היה להשלים את הבקשה, כי יש בעיה בבקשה או שהמשאבים המבוקשים לא היו זמינים במרווח ההקצאה. הבקשה נשארת בתור עד שהיא נמחקת באופן מפורש.
  • SUSPENDING: המשאבים שמשויכים לבקשה נמחקים.
  • SUSPENDED: המשאבים שצוינו בבקשה נמחקו. כשבקשה נמצאת במצב SUSPENDED, היא כבר לא עומדת בדרישות להקצאה נוספת.

דרישות מוקדמות

לפני שמריצים את הפקודות במדריך הזה, צריך להתקין את Google Cloud CLI, ליצור Google Cloud פרויקט ולהפעיל את Cloud TPU API. הוראות מפורטות זמינות במאמר הגדרת סביבת Cloud TPU.

אם אתם משתמשים באחת מספריות הלקוח ב-Cloud, אתם צריכים לפעול לפי הוראות ההגדרה לשפה שבה אתם משתמשים:

בקשה למשאב בתור לפי דרישה

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

gcloud

gcloud compute tpus queued-resources create your-queued-resource-id \
    --node-id your-node-id \
    --project your-project-id \
    --zone us-central1-a \
    --accelerator-type v5litepod-8 \
    --runtime-version v2-alpha-tpuv5-lite

תיאורים של פרמטרים של פקודות

  • queued-resource-id: המזהה שהמשתמש הקצה לבקשת המשאב שנוספה לתור.
  • node-id: המזהה שהמשתמש הקצה ל-TPU שנוצר כשמוקצה משאב לבקשה שנמצאת בתור.
  • project: הפרויקט ב- Google Cloud .
  • zone: האזור שבו אתם מתכננים ליצור את Cloud TPU.
  • accelerator-type: סוג המאיץ מציין את הגרסה והגודל של Cloud TPU שרוצים ליצור. מידע נוסף על סוגי המאיצים הנתמכים בכל גרסת TPU זמין במאמר גרסאות TPU.
  • runtime-version: הגרסה של תוכנת Cloud TPU.

curl

curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d "{
    'tpu': {
    'node_spec': {
        'parent': 'projects/your-project-number/locations/us-central1-a',
        'node_id': 'your-node-id',
        'node': {
        'accelerator_type': 'v5litepod-8',
        'runtime_version': 'v2-alpha-tpuv5-lite',
        }
    }
    }
}" \
https://tpu.googleapis.com/v2alpha1/projects/your-project-id/locations/us-central1-a/queuedResources?queued_resource_id=your-queued-resource-id

תיאורים של פרמטרים של פקודות

  • queued-resource-id: המזהה שהמשתמש הקצה לבקשת המשאב שנוספה לתור.
  • node-id: המזהה שהמשתמש הקצה ל-TPU שנוצר כשהוקצתה בקשת המשאב בתור.
  • project: הפרויקט ב- Google Cloud .
  • zone: האזור שבו אתם מתכננים ליצור את Cloud TPU.
  • accelerator-type: סוג המאיץ מציין את הגרסה והגודל של Cloud TPU שרוצים ליצור. מידע נוסף על סוגי המאיצים הנתמכים בכל גרסה של TPU זמין במאמר גרסאות TPU.
  • runtime-version: הגרסה של תוכנת Cloud TPU.

המסוף

  1. נכנסים לדף TPUs במסוף Google Cloud .

    מעבר אל TPUs

  2. לוחצים על יצירת TPU.

  3. בשדה שם, מזינים שם ל-TPU.

  4. בתיבה תחום, בוחרים את התחום שבו רוצים ליצור את ה-TPU.

  5. בתיבה TPU type, בוחרים סוג של מאיץ. סוג המאיץ מציין את הגרסה והגודל של Cloud TPU שרוצים ליצור. מידע נוסף על סוגי המאיצים הנתמכים לכל גרסת TPU זמין במאמר גרסאות TPU.

  6. בתיבה TPU software version (גרסת התוכנה של ה-TPU), בוחרים גרסת תוכנה. כשיוצרים מכונת TPU וירטואלית ב-Cloud TPU, גרסת התוכנה של ה-TPU מציינת את גרסת זמן הריצה של ה-TPU שמותקנת. מידע נוסף זמין במאמר בנושא גרסאות תוכנה של TPU.

  7. לוחצים על המתג הפעלת הוספה לתור.

  8. נותנים לבקשה שם בשדה Queued resource name.

  9. לוחצים על יצירה כדי ליצור את בקשת המשאבים בתור.

Java

כדי לבצע אימות ב-Cloud TPU, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.

import com.google.cloud.tpu.v2alpha1.CreateQueuedResourceRequest;
import com.google.cloud.tpu.v2alpha1.Node;
import com.google.cloud.tpu.v2alpha1.QueuedResource;
import com.google.cloud.tpu.v2alpha1.TpuClient;
import java.io.IOException;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

public class CreateQueuedResource {
  public static void main(String[] args)
          throws IOException, ExecutionException, InterruptedException, TimeoutException {
    // TODO(developer): Replace these variables before running the sample.
    // Project ID or project number of the Google Cloud project you want to create a node.
    String projectId = "YOUR_PROJECT_ID";
    // The zone in which to create the TPU.
    // For more information about supported TPU types for specific zones,
    // see https://cloud.google.com/tpu/docs/regions-zones
    String zone = "us-central1-a";
    // The name for your TPU.
    String nodeName = "YOUR_NODE_ID";
    // The accelerator type that specifies the version and size of the Cloud TPU you want to create.
    // For more information about supported accelerator types for each TPU version,
    // see https://cloud.google.com/tpu/docs/system-architecture-tpu-vm#versions.
    String tpuType = "v5litepod-4";
    // Software version that specifies the version of the TPU runtime to install.
    // For more information see https://cloud.google.com/tpu/docs/runtimes
    String tpuSoftwareVersion = "v2-tpuv5-litepod";
    // The name for your Queued Resource.
    String queuedResourceId = "QUEUED_RESOURCE_ID";

    createQueuedResource(
        projectId, zone, queuedResourceId, nodeName, tpuType, tpuSoftwareVersion);
  }

  // Creates a Queued Resource
  public static QueuedResource createQueuedResource(String projectId, String zone,
      String queuedResourceId, String nodeName, String tpuType, String tpuSoftwareVersion)
          throws IOException, ExecutionException, InterruptedException, TimeoutException {
    String resource = String.format("projects/%s/locations/%s/queuedResources/%s",
            projectId, zone, queuedResourceId);
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (TpuClient tpuClient = TpuClient.create()) {
      String parent = String.format("projects/%s/locations/%s", projectId, zone);
      Node node =
          Node.newBuilder()
              .setName(nodeName)
              .setAcceleratorType(tpuType)
              .setRuntimeVersion(tpuSoftwareVersion)
              .setQueuedResource(resource)
              .build();

      QueuedResource queuedResource =
          QueuedResource.newBuilder()
              .setName(queuedResourceId)
              .setTpu(
                  QueuedResource.Tpu.newBuilder()
                      .addNodeSpec(
                          QueuedResource.Tpu.NodeSpec.newBuilder()
                              .setParent(parent)
                              .setNode(node)
                              .setNodeId(nodeName)
                              .build())
                      .build())
              .build();

      CreateQueuedResourceRequest request =
          CreateQueuedResourceRequest.newBuilder()
              .setParent(parent)
              .setQueuedResourceId(queuedResourceId)
              .setQueuedResource(queuedResource)
              .build();

      return