ذخیره دانلودهای مدل از TF Hub

بررسی اجمالی

کتابخانه 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 در تضاد است، زیرا حجم کار محاسباتی به دستگاه دیگری که به طور پیش‌فرض به مکان حافظه پنهان دسترسی ندارد، واگذار می‌شود. دو راه حل برای این وضعیت وجود دارد:

1) از یک سطل GCS استفاده کنید که کارگر TPU بتواند به آن دسترسی داشته باشد

ساده ترین راه حل این است که به کتابخانه tensorflow_hub دستور دهید تا مدل ها را از سطل GCS TF Hub همانطور که در بالا توضیح داده شد بخواند. کاربران با سطل GCS خود می توانند در عوض یک دایرکتوری را در سطل خود به عنوان مکان کش با کدهایی مانند

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)

توجه: اطلاعات بیشتر در مورد دستگیره های معتبر را اینجا ببینید.