लागत कंट्रोल

इस पेज पर, Earth Engine में कंप्यूटेशनल लागत को कंट्रोल करने के लिए, हर दिन की सीमाएं सेट करने और प्रोसेस में चल रहे ईईसीयू-टाइम को मॉनिटर करने का तरीका बताया गया है.

ईईसीयू के रोज़ाना इस्तेमाल की समयसीमा तय करना

Earth Engine की लागत को कंट्रोल करने के लिए, आपके पास एक सीमा तय करने का विकल्प होता है. इससे, आपके प्रोजेक्ट को एक दिन में इस्तेमाल करने की अनुमति वाले ईईसीयू-टाइम की सीमा तय की जा सकती है. इसके लिए, आपको Cloud के कोटा को अपडेट करना होगा:

  • Earth Engine compute time (EECU-time) per day in seconds: प्रोजेक्ट-लेवल पर तय किया गया कोटा, जो किसी प्रोजेक्ट में सभी उपयोगकर्ताओं के ईईसीयू-टाइम को सीमित करता है.

सेट किए जा सकने वाले Earth Engine कोटा के बारे में ज़्यादा जानकारी के लिए, Earth Engine के कोटा देखें.

डिवाइस के रोज़ाना इस्तेमाल की समयसीमा सेट करना

Google Cloud कंसोल के कोटा और सिस्टम की सीमाएं पेज पर जाकर, कोटा देखे जा सकते हैं और उनमें बदलाव किया जा सकता है. कोटा में बदलाव करने पर, वह कुछ ही मिनट में लागू हो जाता है. डिवाइस के इस्तेमाल की रोज़ाना की समयसीमा सेट करने या अपडेट करने के लिए, यह तरीका अपनाएं:

  1. पुष्टि करें कि आपके पास चुने गए प्रोजेक्ट के लिए, प्रोजेक्ट कोटा बदलने की अनुमतियां हों.
  2. Google Cloud Console के कोटा पेज पर जाएं.
  3. earthengine.googleapis.com/daily_eecu_usage_time को फ़िल्टर करने के लिए, फ़िल्टर खोज बॉक्स में मेट्रिक फ़िल्टर का इस्तेमाल करें. अगर आपको Earth Engine compute time (EECU-time) per day in seconds कोटा नहीं दिखता है, तो पुष्टि करें कि आपने चुने गए प्रोजेक्ट के लिए Earth Engine API चालू किया है.
  4. तीन बिंदु वाले मेन्यू में जाकर, कोटा में बदलाव करें पर क्लिक करें.
  5. अगर अनलिमिटेड चेकबॉक्स चुना गया है, तो उससे चुने हुए का निशान हटाएं.
  6. नई वैल्यू फ़ील्ड में, ईईसीयू-सेकंड में अपनी पसंद की सीमा डालें. अनुरोध सबमिट करें पर क्लिक करें.

कोटा देखने और मैनेज करने के बारे में ज़्यादा जानने के लिए, कोटा देखना और मैनेज करना लेख पढ़ें.

गड़बड़ी के मैसेज

रोज़ के लिए डेटा अपलोड करने की सीमा सेट करने के बाद, Earth Engine से गड़बड़ी का यह मैसेज दिखता है:

आपके इस्तेमाल ने 'earthengine.googleapis.com/daily_eecu_usage_time' के लिए तय किए गए कस्टम कोटा को पार कर लिया है. इसे Google Cloud Console में आपका एडमिन अडजस्ट कर सकता है: https://console.cloud.google.com/quotas/?project=_.

कोटा खत्म होने के बाद, Earth Engine के अनुरोध तब तक पूरे नहीं होंगे, जब तक अगले दिन कोटा फिर से सेट नहीं किया जाता या एडमिन से सीमा नहीं बढ़ाई जाती.

ज़्यादा जानकारी वाली मॉनिटरिंग और सूचनाएं

अगर आपको रोज़ की सीमा से ज़्यादा बारीक तरीके से खर्च को कंट्रोल और मॉनिटर करना है, तो यहां दी गई रेसिपी के लिए ज़्यादा सेट-अप की ज़रूरत होती है. हालांकि, इनसे workload_tag और बैच टास्क लेवल पर सूचनाएं भेजने और रद्द करने की सुविधा मिलती है.

ये रेसिपी, प्रोसेस के दौरान ईईसीयू के समय की निगरानी का इस्तेमाल करती हैं. यह निगरानी, चल रहे अनुरोधों के लिए दिखती है. Cloud Monitoring में, ईईसीयू के दौरान होने वाली रिपोर्टिंग के बारे में ज़्यादा जानकारी के लिए, इस्तेमाल को मॉनिटर करने से जुड़ी गाइड देखें.

सूचनाएं कॉन्फ़िगर करना

क्लाउड मॉनिटरिंग में अलर्ट कॉन्फ़िगर किए जा सकते हैं, ताकि कोई मेट्रिक तय थ्रेशोल्ड तक पहुंचने पर आपको चेतावनी दी जा सके. क्लाउड मॉनिटरिंग से जुड़ी सूचना देने वाला सिस्टम बहुत आसान है. हमने यहां अपनी कुछ पसंदीदा रेसिपी इकट्ठा की हैं. हालांकि, अपनी ज़रूरत के मुताबिक कस्टम कॉन्फ़िगरेशन के साथ खाना बनाना न भूलें.

तरीका: workload_tag के इस्तेमाल के लिए, चैट की सूचना

इस उदाहरण में, किसी workload_tag के लिए Earth Engine के इस्तेमाल की सीमा से ज़्यादा इस्तेमाल होने पर, चैट सूचना (जैसे, Google Chat मैसेज या Slack मैसेज) को वायर अप करने का तरीका बताया गया है. यह तब काम का हो सकता है, जब आपके पास एक्सपोर्ट टास्क का एक सेट हो, जो आपकी प्रोडक्शन सेवा के लिए डेटा बनाता हो. साथ ही, आपको यह सूचना चाहिए कि ये टास्क एक साथ तय सीमा से ज़्यादा ईईसीयू-टाइम का इस्तेमाल करते हैं या नहीं.

  1. Cloud Console के क्लाउड मॉनिटरिंग सेक्शन में, सूचना देने वाले पेज पर जाएं.
  2. सूचना देने की नई नीति कॉन्फ़िगर करने के लिए, "नीति बनाएं" चुनें.
  3. मेट्रिक चुनें:
    • EECU में लगने वाले सेकंड, उन सेकंड की संख्या दिखाता है जो अब तक प्रोसेस नहीं हुए हैं.
    • मेट्रिक देखने के लिए, आपको "चालू है" फ़िल्टर से चुने हुए का निशान हटाना पड़ सकता है.
  4. फ़िल्टर जोड़ें:
    • किसी खास वर्कलोड टैग को फ़िल्टर करने के लिए, workload_tag == your_workload_tag_value का इस्तेमाल करें.
    • किसी खास तरह के कैलकुलेशन को फ़िल्टर करने के लिए, compute_type = batch या compute_type = online का इस्तेमाल करें.
  5. "रोलिंग विंडो" की सही वैल्यू चुनें. अगर आपको नहीं पता, तो 5 min का इस्तेमाल करें.
  6. "रोलिंग विंडो फ़ंक्शन" मेन्यू से, "योग" चुनें. किसी अलर्ट के लिए मेट्रिक का कॉन्फ़िगरेशन
  7. सूचना ट्रिगर चुनें और उसे कोई नाम दें.
  8. सूचना के चैनल चुनें.
    • इस रेसिपी के लिए, हम मॉडल विंडो से "सूचना चैनल मैनेज करें" चुनेंगे. इसके बाद, Google Chat के स्पेस आईडी को चिपकाने के लिए, "नया जोड़ें" चुनेंगे. चैट देखते समय, यह आईडी Gmail या Chat पेज के यूआरएल में देखा जा सकता है.
    • Google Chat का इस्तेमाल करने पर, आपको @Google Cloud Monitoring टाइप करना होगा. इसके बाद, अपने Space में सूचना देने वाला ऐप्लिकेशन जोड़ने के लिए, ऐप्लिकेशन चुनना होगा. हालांकि, ऐसा तब ही किया जा सकता है, जब आपके संगठन ने अनुमति दी हो.
  9. नीति और गंभीरता के लेबल चुनें.
  10. दस्तावेज़ का छोटा स्निपेट लिखें.
  11. सूचना देने की नई नीति पब्लिश करें!

थ्रेशोल्ड सेट करने के बाद, जब भी आपके प्रोजेक्ट के लिए थ्रेशोल्ड से ज़्यादा ट्रैफ़िक आएगा, तब आपको चैट स्पेस में सूचनाएं मिलेंगी.

तरीका: ईईसीयू के दौरान कुल समय के लिए ईमेल सूचनाएं पाना

चैट की सूचनाओं के लिए दिया गया तरीका अपनाएं, लेकिन दो बदलाव करें:

  1. workload_tag फ़िल्टर जोड़ने का चरण छोड़ें, ताकि आप सभी वैल्यू देख सकें.
  2. सूचना पाने के लिए चैनल चुनते समय, चैट चैनल को कॉन्फ़िगर करने के बजाय, अपना ईमेल पता जोड़ें.

सूचना मिलने में लगने वाला समय और सूचना मिलने का समय

ध्यान दें कि मॉनिटरिंग रिपोर्ट को प्रोपेगेट होने में थोड़ी देरी होती है. इसलिए, आपको तुरंत सूचनाएं मिलने की उम्मीद नहीं करनी चाहिए.

ज़्यादा रिसॉर्स लेने वाले टास्क रद्द करना

तय सीमा के हिसाब से, Earth Engine API का इस्तेमाल करके, समय-समय पर उन टास्क की सूची देखी जा सकती है जो पूरे नहीं हुए हैं. साथ ही, ऐसे किसी भी टास्क को रद्द करने का अनुरोध किया जा सकता है जो ईईसीयू सेकंड की तय सीमा से ज़्यादा समय से चल रहा है.

तरीका: किसी नोटबुक या स्थानीय 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