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

अवलोकन

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

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

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

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

जो उपयोगकर्ता सिस्टम रीबूट होने पर भी कैशिंग को स्थायी रखना चाहते हैं, वे TFHUB_CACHE_DIR अपनी होम डायरेक्टरी में किसी स्थान पर सेट कर सकते हैं। उदाहरण के लिए, Linux सिस्टम पर bash शेल का उपयोग करने वाला उपयोगकर्ता ~/.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.research.google.com पर, संपीड़ित मॉडल डाउनलोड करने से TPU रनटाइम में समस्या उत्पन्न होगी क्योंकि गणना का कार्यभार एक अन्य मशीन को सौंपा जाता है जिसके पास डिफ़ॉल्ट रूप से कैश स्थान तक पहुंच नहीं होती है। इस समस्या के दो समाधान हैं:

1) एक ऐसे GCS बकेट का उपयोग करें जिस तक TPU वर्कर की पहुंच हो।

सबसे आसान तरीका यह है कि tensorflow_hub लाइब्रेरी को निर्देश दिया जाए कि वह मॉडल को TF Hub के GCS बकेट से पढ़े, जैसा कि ऊपर बताया गया है। जिन उपयोगकर्ताओं के पास अपना 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)

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