تدعم مكتبة tensorflow_hub
حاليًا وضعين لتنزيل النماذج. افتراضيًا، يتم تنزيل النموذج كأرشيف مضغوط وتخزينه مؤقتًا على القرص. ثانيًا، يمكن قراءة النماذج مباشرة من وحدة التخزين البعيدة إلى TensorFlow. في كلتا الحالتين، يمكن ويجب أن تستمر استدعاءات وظائف tensorflow_hub
في كود Python الفعلي في استخدام عناوين URL الأساسية tfhub.dev للنماذج، والتي تكون قابلة للنقل عبر الأنظمة وقابلة للتنقل للتوثيق. في الحالات النادرة التي يحتاج فيها كود المستخدم إلى موقع نظام الملفات الفعلي (بعد التنزيل وفك الضغط، أو بعد تحليل مقبض النموذج في مسار نظام الملفات)، يمكن الحصول عليه من خلال الوظيفة 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
إلى موقع في الدليل الرئيسي الخاص بهم. على سبيل المثال، يمكن لمستخدم bash Shell على نظام Linux إضافة سطر مثل ما يلي إلى ~/.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 حيث يتم تفويض حمل عمل الحساب إلى جهاز آخر لا يمكنه الوصول إلى موقع ذاكرة التخزين المؤقت بشكل افتراضي. هناك حلان لهذه الحالة:
الحل الأسهل هو توجيه مكتبة tensorflow_hub
لقراءة النماذج من مجموعة GCS الخاصة بـ TF Hub كما هو موضح أعلاه. يمكن للمستخدمين الذين لديهم مجموعة GCS الخاصة بهم بدلاً من ذلك تحديد دليل في المجموعة الخاصة بهم كموقع ذاكرة التخزين المؤقت مع رمز مثل
import os
os.environ["TFHUB_CACHE_DIR"] = "gs://my-bucket/tfhub-modules-cache"
...قبل الاتصال بمكتبة tensorflow_hub
.
الحل البديل الآخر هو إعادة توجيه جميع القراءات (حتى المتغيرات الكبيرة) من خلال مضيف Colab:
load_options =
tf.saved_model.LoadOptions(experimental_io_device='/job:localhost')
reloaded_model = hub.load("https://tfhub.dev/...", options=load_options)
ملاحظة: اطلع على مزيد من المعلومات بخصوص المقابض الصالحة هنا .