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

סקירה כללית

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

הערה: ראה מידע נוסף לגבי נקודות אחיזה חוקיות כאן .