הורדות מודל מטמון מ-TF Hub

סקירה כללית

ספריית tensorflow_hub תומכת כעת בשני מצבים להורדת מודלים. כברירת מחדל, מודל מוריד כארכיון דחוס ומאוחסן במטמון בדיסק. שנית, ניתן לקרוא מודלים ישירות מאחסון מרוחק לתוך TensorFlow. כך או כך, הקריאות לפונקציות tensorflow_hub בקוד הפייתון בפועל יכולות וצריכות להמשיך להשתמש בכתובות ה-URL הקנוניות tfhub.dev של מודלים, שהן ניידות בין מערכות וניתנות לניווט לצורך תיעוד. במקרה הנדיר בו קוד משתמש זקוק למיקום מערכת הקבצים בפועל (לאחר הורדה ופתיחת דחיסה, או לאחר פתרון handle של מודל לנתיב מערכת קבצים), ניתן להשיג אותו על ידי הפונקציה 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)

הערה: ראה מידע נוסף בנוגע ל-handles תקפים כאן .