پروتکل میزبانی مدل

این سند، قراردادهای URL مورد استفاده هنگام میزبانی انواع مدل‌ها در tfhub.dev - مدل‌های TFJS، TF Lite و TensorFlow - را شرح می‌دهد. همچنین پروتکل مبتنی بر HTTP(S) که توسط کتابخانه tensorflow_hub پیاده‌سازی شده است را شرح می‌دهد تا مدل‌های TensorFlow را از tfhub.dev و سرویس‌های سازگار در برنامه‌های TensorFlow بارگذاری کند.

ویژگی کلیدی آن استفاده از همان URL در کد برای بارگذاری یک مدل و در مرورگر برای مشاهده مستندات مدل است.

قراردادهای عمومی URL

tfhub.dev از قالب‌های URL زیر پشتیبانی می‌کند:

  • ناشران TF Hub، https://tfhub.dev/<publisher> را دنبال می‌کنند.
  • مجموعه‌های TF Hub https://tfhub.dev/<publisher>/collection/<collection_name> پیروی می‌کنند.
  • مدل‌های TF Hub دارای آدرس https://tfhub.dev/<publisher>/<model_name>/<version> نسخه‌بندی شده و آدرس https://tfhub.dev/<publisher>/<model_name> نسخه‌بندی نشده هستند که به آخرین نسخه مدل مربوط می‌شود.

مدل‌های TF Hub را می‌توان با افزودن پارامترهای URL به URL مدل tfhub.dev به صورت فایل‌های فشرده دانلود کرد. با این حال، پارامترهای URL مورد نیاز برای دستیابی به این هدف به نوع مدل بستگی دارد:

  • مدل‌های TensorFlow (هر دو فرمت SavedModel و TF1 Hub): عبارت ?tf-hub-format=compressed به آدرس اینترنتی مدل TensorFlow اضافه کنید.
  • مدل‌های TFJS: برای دانلود فایل فشرده، ?tfjs-format=compressed را به آدرس اینترنتی مدل TFJS اضافه کنید، یا برای خواندن فایل فشرده از حافظه راه دور، /model.json?tfjs-format=file اضافه کنید.
  • مدل‌های TF Lite: عبارت ?lite-format=tflite را به آدرس اینترنتی مدل TF Lite اضافه کنید.

برای مثال:

نوع آدرس اینترنتی مدل نوع دانلود پارامتر URL آدرس دانلود
TensorFlow (SavedModel، فرمت TF1 Hub) https://tfhub.dev/google/spice/2 فایل .tar.gz ?tf-hub-format=فشرده‌سازی شده https://tfhub.dev/google/spice/2?tf-hub-format=compressed
تی‌اف لایت https://tfhub.dev/google/lite-model/spice/1 .tflite ?lite-format=tflite https://tfhub.dev/google/lite-model/spice/1?lite-format=tflite
TF.js https://tfhub.dev/google/tfjs-model/spice/2/default/1 فایل .tar.gz ?tfjs-format=فشرده شده https://tfhub.dev/google/tfjs-model/spice/2/default/1?tfjs-format=compressed

علاوه بر این، برخی از مدل‌ها نیز در قالبی میزبانی می‌شوند که می‌توانند مستقیماً از حافظه‌ی راه دور و بدون دانلود خوانده شوند. این امر به ویژه در صورتی مفید است که حافظه‌ی محلی در دسترس نباشد، مانند اجرای یک مدل TF.js در مرورگر یا بارگذاری یک SavedModel در Colab . توجه داشته باشید که خواندن مدل‌هایی که از راه دور و بدون دانلود محلی میزبانی می‌شوند، ممکن است تأخیر را افزایش دهد.

نوع آدرس اینترنتی مدل نوع پاسخ پارامتر URL درخواست آدرس اینترنتی
TensorFlow (SavedModel، فرمت TF1 Hub) https://tfhub.dev/google/spice/2 رشته (مسیر پوشه GCS که مدل فشرده نشده در آن ذخیره شده است) ?tf-hub-format=غیرفشرده https://tfhub.dev/google/spice/2?tf-hub-format=uncompressed
TF.js https://tfhub.dev/google/tfjs-model/spice/2/default/1 .json ?tfjs-format=فایل https://tfhub.dev/google/tfjs-model/spice/2/default/1/model.json?tfjs-format=file

پروتکل کتابخانه tensorflow_hub

این بخش نحوه میزبانی مدل‌ها در tfhub.dev برای استفاده با کتابخانه tensorflow_hub را شرح می‌دهد. اگر می‌خواهید مخزن مدل خود را برای کار با کتابخانه tensorflow_hub میزبانی کنید، سرویس توزیع HTTP(s) شما باید پیاده‌سازی این پروتکل را ارائه دهد.

توجه داشته باشید که این بخش به میزبانی مدل‌های TF Lite و TFJS نمی‌پردازد زیرا آنها از طریق کتابخانه tensorflow_hub دانلود نمی‌شوند. برای اطلاعات بیشتر در مورد میزبانی این نوع مدل‌ها، لطفاً به بالا مراجعه کنید.

میزبانی فشرده

مدل‌ها در tfhub.dev به صورت فایل‌های فشرده tar.gz ذخیره می‌شوند. به طور پیش‌فرض، کتابخانه tensorflow_hub به طور خودکار مدل فشرده شده را دانلود می‌کند. همچنین می‌توان آنها را به صورت دستی با اضافه کردن ?tf-hub-format=compressed به آدرس اینترنتی مدل دانلود کرد، به عنوان مثال:

wget https://tfhub.dev/tensorflow/albert_en_xxlarge/1?tf-hub-format=compressed

ریشه آرشیو، ریشه دایرکتوری مدل است و باید شامل یک SavedModel باشد، مانند این مثال:

# Create a compressed model from a SavedModel directory.
$ tar -cz -f model.tar.gz --owner=0 --group=0 -C /tmp/export-model/ .

# Inspect files inside a compressed model
$ tar -tf model.tar.gz
./
./variables/
./variables/variables.data-00000-of-00001
./variables/variables.index
./assets/
./saved_model.pb

فایل‌های فشرده (Tarball) برای استفاده با فرمت قدیمی TF1 Hub نیز حاوی یک فایل ./tfhub_module.pb خواهند بود.

وقتی یکی از APIهای بارگذاری مدل کتابخانه tensorflow_hub فراخوانی می‌شود ( hub.KerasLayer ، hub.load و غیره)، کتابخانه مدل را دانلود می‌کند، مدل را از حالت فشرده خارج کرده و آن را به صورت محلی ذخیره می‌کند. کتابخانه tensorflow_hub انتظار دارد که URLهای مدل نسخه‌بندی شده باشند و محتوای مدل یک نسخه مشخص تغییرناپذیر باشد، به طوری که بتوان آن را به طور نامحدود ذخیره کرد. درباره مدل‌های ذخیره سازی بیشتر بدانید.

میزبانی فشرده نشده

وقتی متغیر محیطی TFHUB_MODEL_LOAD_FORMAT یا پرچم خط فرمان --tfhub_model_load_format روی UNCOMPRESSED تنظیم شده باشد، مدل به جای دانلود و غیرفشرده‌سازی محلی، مستقیماً از حافظه راه دور (GCS) خوانده می‌شود. وقتی این رفتار فعال باشد، کتابخانه ?tf-hub-format=uncompressed به URL مدل اضافه می‌کند. این درخواست مسیر پوشه‌ای در GCS را که حاوی فایل‌های مدل غیرفشرده‌سازی شده است، برمی‌گرداند. به عنوان مثال،
https://tfhub.dev/google/spice/2?tf-hub-format=uncompressed
بازده
gs://kaggle-tfhub-models-uncompressed/tfhub-modules/google/spice/2/uncompressed در بدنه پاسخ 303. سپس کتابخانه مدل را از آن مقصد GCS می‌خواند.