שימוש במכונות וירטואליות מסוג Spot עם הסקת מסקנות

סקירה כללית

כדי להפחית את העלות של הרצת משימות החיזוי, אפשר להשתמש במכונות וירטואליות זמניות. מכונות וירטואליות מסוג Spot הן מכונות וירטואליות (VM) שהן עודף קיבולת של Compute Engine. מכונות וירטואליות מסוג Spot נהנות מהנחות משמעותיות, אבל Compute Engine עשוי להפסיק או למחוק (לשחרר) מכונות וירטואליות מסוג Spot בכל שלב כדי לפנות קיבולת.

מידע נוסף זמין במאמר מכונות וירטואליות מסוג Spot.

מגבלות ודרישות

כשמשתמשים במכונות וירטואליות מסוג Spot עם Agent Platform, חשוב להביא בחשבון את המגבלות והדרישות הבאות:

  • כל ההגבלות על מכונות וירטואליות מסוג Spot חלות כשמשתמשים במכונות וירטואליות מסוג Spot עם Agent Platform.
  • השימוש במכונות וירטואליות מסוג Spot עם Agent Platform נתמך רק לאימון ולהיקש בלי שרת (serverless).
  • אי אפשר להשתמש במכונות וירטואליות מסוג Spot עם TPU Pods.
  • אי אפשר לשלוח את העבודה דרך מסוף Google Cloud .

חיוב

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

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

טיפול בזכות קדימה

‫Compute Engine יכול להחזיר לעצמו מכונות וירטואליות מסוג Spot בכל שלב. כדי ללמוד איך להפיק את המרב ממכונות וירטואליות זמניות במודל Spot, אפשר לעיין במאמר בנושא שיטות מומלצות לשימוש במכונות וירטואליות זמניות במודל Spot.

קבלת מסקנות באמצעות מכונות וירטואליות במודל Spot

כדי להשתמש ב-VM במודל Spot כשפורסים מודל כדי לקבל היקשים, אפשר להשתמש ב-API בארכיטקטורת REST או ב-Agent Platform SDK ל-Python.

REST

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • ‫LOCATION_ID: האזור שבו משתמשים בפלטפורמת הסוכנים.
  • ‫PROJECT_ID: מזהה הפרויקט. .
  • ‫ENDPOINT_ID: המזהה של נקודת הקצה.
  • ‫MODEL_ID: המזהה של המודל שרוצים לפרוס.
  • ‫DEPLOYED_MODEL_NAME: שם ל-DeployedModel. אפשר להשתמש גם בשם המוצג של Model בשביל DeployedModel.
  • ‫MACHINE_TYPE: אופציונלי. משאבי המכונה שמשמשים לכל צומת בפריסה הזו. הגדרת ברירת המחדל היא n1-standard-2. מידע נוסף על סוגי מכונות
  • ‫ACCELERATOR_TYPE: אופציונלי. סוג המאיץ שיצורף למכונה. מידע נוסף
  • ‫ACCELERATOR_COUNT: אופציונלי. מספר המאיצים שכל רפליקה יכולה להשתמש בהם.
  • ‫MIN_REPLICA_COUNT: מספר הצמתים המינימלי לפריסה הזו. אפשר להגדיל או להקטין את מספר הצמתים לפי הצורך בהתאם לעומס ההסקה, עד למספר המקסימלי של הצמתים, אבל לא פחות ממספר הצמתים הזה. הערך הזה חייב להיות שווה ל-1 או גדול ממנו.
  • ‫MAX_REPLICA_COUNT: המספר המקסימלי של הצמתים לפריסה הזו. אפשר להגדיל או להקטין את מספר הצמתים בהתאם לעומס ההסקה, עד למספר הצמתים הזה ולעולם לא פחות ממספר הצמתים המינימלי.
  • ‫TRAFFIC_SPLIT_THIS_MODEL: אחוז התנועה של התחזיות לנקודת הקצה הזו שינותב למודל שנפרס באמצעות הפעולה הזו. ברירת המחדל היא 100. סכום האחוזים של כל התנועה צריך להיות 100. מידע נוסף על פיצול תנועה
  • ‫DEPLOYED_MODEL_ID_N: אופציונלי. אם מודלים אחרים נפרסים בנקודת הקצה הזו, צריך לעדכן את אחוז חלוקת התנועה שלהם כך שסכום כל האחוזים יהיה 100.
  • ‫TRAFFIC_SPLIT_MODEL_N: ערך אחוז פיצול התנועה למזהה המודל שנפרס.
  • ‫PROJECT_NUMBER: מספר הפרויקט שנוצר באופן אוטומטי.

ה-method של ה-HTTP וכתובת ה-URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:deployModel

תוכן בקשת JSON:

{


"acceleratorCount": 1}, "spot": true, "minReplicaCount": 1, "maxReplicaCount": 1}}, "trafficSplit": {"0": 100}}' \
  "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:deployModel"

  "deployedModel": {
    "model": "projects/PROJECT/locations/us-central1/models/MODEL_ID",
    "displayName": "DEPLOYED_MODEL_NAME",
    "enableContainerLogging": true,
    "dedicatedResources": {
      "machineSpec": {
        "machineType": "MACHINE_TYPE",
        "acceleratorType": "ACCELERATOR_TYPE",
        "acceleratorCount": ACCELERATOR_COUNT
      },
      "spot": true,
      "minReplicaCount": MIN_REPLICA_COUNT,
      "maxReplicaCount": MAX_REPLICA_COUNT
    },
  },
  "trafficSplit": {
    "0": TRAFFIC_SPLIT_THIS_MODEL,
    "DEPLOYED_MODEL_ID_1": TRAFFIC_SPLIT_MODEL_1,
    "DEPLOYED_MODEL_ID_2": TRAFFIC_SPLIT_MODEL_2
  },
}

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

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/endpoints/ENDPOINT_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1beta1.DeployModelOperationMetadata",
    "genericMetadata": {
      "createTime": "2020-10-19T17:53:16.502088Z",
      "updateTime": "2020-10-19T17:53:16.502088Z"
    }
  }
}

Python

במאמר התקנת Agent Platform SDK ל-Python מוסבר איך להתקין או לעדכן את Agent Platform SDK ל-Python. מידע נוסף מופיע במאמרי העזרה של Agent Platform SDK for Python API.

endpoint5.deploy(
    model = model,
    deployed_model_display_name=DEPLOYED_NAME,
    traffic_split=TRAFFIC_SPLIT,
    machine_type="MACHINE_TYPE",
    accelerator_type="ACCELERATOR_TYPE",
    accelerator_count=ACCELERATOR_COUNT,
    min_replica_count=MIN_REPLICA_COUNT,
    max_replica_count=MAX_REPLICA_COUNT,
    spot=True,
    sync=True
)

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