टीएफ हब से कैशिंग मॉडल डाउनलोड

अवलोकन

tensorflow_hub लाइब्रेरी वर्तमान में मॉडल डाउनलोड करने के लिए दो मोड का समर्थन करती है। डिफ़ॉल्ट रूप से, एक मॉडल को संपीड़ित संग्रह के रूप में डाउनलोड किया जाता है और डिस्क पर कैश किया जाता है। दूसरे, मॉडल को रिमोट स्टोरेज से सीधे TensorFlow में पढ़ा जा सकता है। किसी भी तरह से, वास्तविक पायथन कोड में tensorflow_hub फ़ंक्शंस के लिए कॉल मॉडल के कैनोनिकल tfhub.dev URL का उपयोग करना जारी रख सकता है, जो सिस्टम में पोर्टेबल हैं और दस्तावेज़ीकरण के लिए नेविगेट करने योग्य हैं। दुर्लभ मामले में जब उपयोगकर्ता कोड को वास्तविक फ़ाइल सिस्टम स्थान की आवश्यकता होती है (डाउनलोड करने और डीकंप्रेस करने के बाद, या फ़ाइल सिस्टम पथ में मॉडल हैंडल को हल करने के बाद), इसे फ़ंक्शन hub.resolve(handle) द्वारा प्राप्त किया जा सकता है।

संपीड़ित डाउनलोड की कैशिंग

जब उन्हें tfhub.dev (या अन्य होस्टिंग साइट्स ) से डाउनलोड किया गया हो और डीकंप्रेस किया गया हो, तो tensorflow_hub लाइब्रेरी फ़ाइल सिस्टम पर मॉडल को डिफ़ॉल्ट रूप से कैश करती है। यह मोड अधिकांश परिवेशों के लिए अनुशंसित है, सिवाय इसके कि डिस्क स्थान दुर्लभ है लेकिन नेटवर्क बैंडविड्थ और विलंबता शानदार है।

डाउनलोड स्थान स्थानीय अस्थायी निर्देशिका में डिफ़ॉल्ट होता है लेकिन पर्यावरण चर TFHUB_CACHE_DIR (अनुशंसित) सेट करके या कमांड-लाइन फ़्लैग --tfhub_cache_dir पास करके अनुकूलित किया जा सकता है। डिफ़ॉल्ट कैश स्थान /tmp/tfhub_modules (या जो भी os.path.join(tempfile.gettempdir(), "tfhub_modules") मूल्यांकन किया जाता है) को ज्यादातर मामलों में काम करना चाहिए।

जो उपयोगकर्ता सिस्टम रीबूट के दौरान लगातार कैशिंग पसंद करते हैं, वे इसके बजाय TFHUB_CACHE_DIR को अपनी होम निर्देशिका में किसी स्थान पर सेट कर सकते हैं। उदाहरण के लिए, लिनक्स सिस्टम पर बैश शेल का उपयोगकर्ता ~/.bashrc में निम्नलिखित की तरह एक लाइन जोड़ सकता है

export TFHUB_CACHE_DIR=$HOME/.cache/tfhub_modules

...शेल को पुनरारंभ करें, और फिर इस स्थान का उपयोग किया जाएगा। स्थायी स्थान का उपयोग करते समय, ध्यान रखें कि कोई स्वचालित सफाई नहीं है।

रिमोट स्टोरेज से पढ़ना

उपयोगकर्ता tensorflow_hub लाइब्रेरी को स्थानीय रूप से मॉडल डाउनलोड करने के बजाय रिमोट स्टोरेज (GCS) से सीधे मॉडल पढ़ने का निर्देश दे सकते हैं

os.environ["TFHUB_MODEL_LOAD_FORMAT"] = "UNCOMPRESSED"

या कमांड-लाइन फ़्लैग --tfhub_model_load_format को UNCOMPRESSED पर सेट करके। इस तरह, किसी कैशिंग निर्देशिका की आवश्यकता नहीं है, जो विशेष रूप से उन वातावरणों में सहायक है जो कम डिस्क स्थान लेकिन तेज़ इंटरनेट कनेक्शन प्रदान करते हैं।

Colab नोटबुक्स में TPU पर चल रहा है

Colab.research.google.com पर, संपीड़ित मॉडल डाउनलोड करना TPU रनटाइम के साथ विरोध करेगा क्योंकि गणना कार्यभार किसी अन्य मशीन को सौंपा गया है जिसके पास डिफ़ॉल्ट रूप से कैश स्थान तक पहुंच नहीं है। इस स्थिति के लिए दो समाधान हैं:

1) एक जीसीएस बकेट का उपयोग करें जिसे टीपीयू कार्यकर्ता एक्सेस कर सके

सबसे आसान उपाय यह है कि जैसा कि ऊपर बताया गया है, tensorflow_hub लाइब्रेरी को TF हब के GCS बकेट से मॉडल पढ़ने का निर्देश दिया जाए। अपने स्वयं के जीसीएस बकेट वाले उपयोगकर्ता इसके बजाय कोड जैसे कैश स्थान के रूप में अपनी बकेट में एक निर्देशिका निर्दिष्ट कर सकते हैं

import os
os.environ["TFHUB_CACHE_DIR"] = "gs://my-bucket/tfhub-modules-cache"

... tensorflow_hub लाइब्रेरी को कॉल करने से पहले।

2) कोलाब होस्ट के माध्यम से सभी पठन को पुनर्निर्देशित करें

एक अन्य उपाय कोलाब होस्ट के माध्यम से सभी रीड्स (बड़े वेरिएबल्स के भी) को रीडायरेक्ट करना है:

load_options =
tf.saved_model.LoadOptions(experimental_io_device='/job:localhost')
reloaded_model = hub.load("https://tfhub.dev/...", options=load_options)

नोट: वैध हैंडल के संबंध में अधिक जानकारी यहां देखें।