אמצעי בקרה על עלויות

בדף הזה מוסבר איך להגדיר מגבלות יומיות ולעקוב אחרי זמן השימוש ביחידות EECU כדי לשלוט בעלויות החישוב ב-Earth Engine.

הגבלת זמן השימוש היומי ב-EECU

כדי לעזור לכם לשלוט בעלויות של Earth Engine, אתם יכולים להגדיר מגבלה על כמות הזמן ב-EECU שהפרויקט יכול לצרוך ביום. לשם כך, צריך לעדכן את מכסת Cloud הבאה:

  • Earth Engine compute time (EECU-time) per day in seconds: מכסה ברמת הפרויקט שמגבילה את הזמן המצטבר של כל המשתמשים בפרויקט ב-EECU.

מידע נוסף על מכסות Earth Engine שאפשר להגדיר זמין במאמר מכסות Earth Engine.

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

אפשר לראות ולערוך את המכסות בדף Quotas & System Limits במסוף Google Cloud. כשמשנים את המכסה, השינוי מתעדכן תוך כמה דקות. כדי להגדיר או לעדכן מגבלה יומית:

  1. מוודאים שיש לכם את ההרשאות לשינוי המכסות בפרויקט בפרויקט שבחרתם.
  2. נכנסים לדף Quotas במסוף Google Cloud.
  3. משתמשים במסנן Metric בתיבת החיפוש Filter כדי לסנן לפי earthengine.googleapis.com/daily_eecu_usage_time. אם לא מופיסה מכסת Earth Engine compute time (EECU-time) per day in seconds, צריך לוודא שהפעלתם את Earth Engine API בפרויקט שנבחר.
  4. בתפריט האפשרויות הנוספות (שלוש נקודות), לוחצים על עריכת המכסה.
  5. אם תיבת הסימון ללא הגבלה מסומנת, מבטלים את הסימון שלה.
  6. בשדה ערך חדש, מזינים את המגבלה הרצויה בשניות EECU. לוחצים על שליחת בקשה.

מידע נוסף על הצגה וניהול של מכסות זמין במאמר הצגה וניהול של מכסות.

הודעות השגיאה שמוחזרות

אחרי שמגדירים מגבלה יומית, אם חורגים ממנה, Earth Engine מחזיר את הודעת השגיאה הבאה:

השימוש שלך חרג מהמכסה המותאמת אישית של 'earthengine.googleapis.com/daily_eecu_usage_time', שאפשר לשנות אותה במסוף Google Cloud: https://console.cloud.google.com/quotas/?project=_.

אם חורגים מהמכסה, בקשות Earth Engine ייכשלו עד שהמכסה תתאפס ביום הבא או עד שאדמין יגדיל את המגבלה.

מעקב פרטני והתראות

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

במתכונים האלה נעשה שימוש במעקב אחר זמן העיבוד של בקשות EECU שנמצאות בתהליך, שמוצג עבור בקשות פעילות. מידע נוסף על דיווח על זמן EECU בתהליך ב-Cloud Monitoring זמין במדריך בנושא שימוש ב-Monitoring.

הגדרת התראות

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

מתכון: התראה בצ'אט על שימוש ב-workload_tag

בדוגמה הזו מוסבר איך להגדיר התראה בצ'אט (למשל, הודעה ב-Google Chat או ב-Slack) אם השימוש ב-Earth Engine לצורך חישוב עבור workload_tag מסוים חורג מסף מסוים. האפשרות הזו יכולה להיות שימושית אם יש לכם קבוצה של משימות ייצוא שיוצרות נתונים לשירות הייצור שלכם, ואתם רוצים לקבל התראה אם הן צורכות ביחד יותר מכמות מסוימת של זמן EECU.

  1. נכנסים לדף Alerting בקטע Cloud Monitoring במסוף Cloud.
  2. בוחרים באפשרות 'יצירת מדיניות' כדי להגדיר מדיניות חדשה של התראות.
  3. בוחרים את המדד:
    • EECU-seconds in progress מייצג את מספר שניות החישוב בהמתנה (שעדיין לא הסתיימו בהצלחה).
    • יכול להיות שתצטרכו לבטל את הסימון של המסנן 'פעיל' כדי לראות את המדד.
  4. הוספת מסנן:
    • משתמשים בworkload_tag == your_workload_tag_value כדי לסנן לפי תג עומס עבודה מסוים.
    • אפשר להשתמש ב-compute_type = batch או ב-compute_type = online כדי לסנן לפי סוג מסוים של חישוב.
  5. בוחרים ערך מתאים ל'חלון נע'. אם אתם לא בטוחים, השתמשו בערך 5 min.
  6. בתפריט 'פונקציית חלון נע', בוחרים באפשרות 'סכום'. הגדרת מדד להתראה
  7. בוחרים את הטריגר להתראה ונותנים לו שם.
  8. בוחרים את ערוצי ההתראות.
    • במתכון הזה, נבחר באפשרות Manage Notification Channels (ניהול ערוצי התראות) בחלון המודאלי, ואז באפשרות Add New (הוספה חדשה) כדי להדביק את מזהה המרחב ב-Google Chat. המזהה הזה מופיע בכתובת ה-URL של הדף ב-Gmail או ב-Chat כשמציגים את הצ'אט.
    • אם אתם משתמשים ב-Google Chat, תצטרכו גם להקליד @Google Cloud Monitoring ולבחור את האפליקציה כדי להוסיף את אפליקציית ההתראות למרחב (אם הארגון שלכם מאפשר זאת).
  9. בוחרים את תוויות המדיניות והחומרה הרלוונטיות.
  10. לכתוב קטע קצר של תיעוד.
  11. מפרסמים את כלל מדיניות ההתראות החדש.

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

מתכון: קבלת התראות באימייל על סך הזמן של EECU בתהליך

פועלים לפי המתכון להתראות בצ'אט, אבל מבצעים שני שינויים:

  1. מדלגים על השלב של הוספת מסנן workload_tag כדי לראות את כל הערכים.
  2. כשבוחרים ערוץ התראות, במקום להגדיר ערוץ צ'אט, מוסיפים את כתובת האימייל.

זמן האחזור והתזמון של ההתראות

חשוב לזכור שיש עיכוב קל בהפצה של דוחות המעקב, ולכן לא כדאי לצפות לקבלת התראות מיידיות.

ביטול משימות שצורכות הרבה משאבים

אם יש מגבלה, אפשר להשתמש ב-Earth Engine API כדי לבדוק מעת לעת את רשימת המשימות שממתינות להפעלה ולבקש לבטל כל משימה פעילה שחורגת מהמגבלה של שניות EECU.

מתכון: הרצת קטע קוד במחברת או במעטפת Python מקומית

eecu_seconds_limit = 50 * 60 * 60  # 50 hours
print("Watching for operations to cancel...")
while(True):
  for op in ee.data.listOperations():
    if op['metadata']['state'] == 'RUNNING':
      if op['metadata'].get('batchEecuUsageSeconds', 0) > eecu_seconds_limit:
        print(f"Cancelling operation {op['name']}")
        ee.data.cancelOperation(op['name'])
  time.sleep(10)  # 10 seconds