نمای کلی
کتابخانه 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 در سیستم لینوکس میتواند خطی مانند زیر را به ~/.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 ، دانلود مدلهای فشرده با زمان اجرای TPU تداخل خواهد داشت، زیرا حجم کار محاسباتی به دستگاه دیگری واگذار میشود که به طور پیشفرض به محل حافظه پنهان دسترسی ندارد. برای این وضعیت دو راه حل وجود دارد:
۱) از یک سطل GCS استفاده کنید که کارگر TPU بتواند به آن دسترسی داشته باشد
سادهترین راه حل این است که به کتابخانه tensorflow_hub دستور دهید تا مدلها را از سطل GCS TF Hub همانطور که در بالا توضیح داده شد، بخواند. کاربرانی که سطل GCS خودشان را دارند، میتوانند به جای آن، یک دایرکتوری در سطل خود را به عنوان محل ذخیره سازی با کدی مانند زیر مشخص کنند:
import os
os.environ["TFHUB_CACHE_DIR"] = "gs://my-bucket/tfhub-modules-cache"
... قبل از فراخوانی کتابخانه tensorflow_hub .
۲) تمام خواندنها را از طریق میزبان Colab هدایت کنید
یک راه حل دیگر، تغییر مسیر همه خواندنها (حتی متغیرهای بزرگ) از طریق میزبان Colab است:
load_options =
tf.saved_model.LoadOptions(experimental_io_device='/job:localhost')
reloaded_model = hub.load("https://tfhub.dev/...", options=load_options)
نکته: اطلاعات بیشتر در مورد شناسههای معتبر را اینجا ببینید.