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