Panoramica
La libreria tensorflow_hub
attualmente supporta due modalità per il download dei modelli. Per impostazione predefinita, un modello viene scaricato come archivio compresso e memorizzato nella cache su disco. In secondo luogo, i modelli possono essere letti direttamente dall'archiviazione remota in TensorFlow. In ogni caso, le chiamate alle funzioni tensorflow_hub
nel codice Python effettivo possono e devono continuare a utilizzare gli URL canonici tfhub.dev dei modelli, che sono portabili tra i sistemi e navigabili per la documentazione. Nel raro caso in cui il codice utente necessiti della posizione effettiva del file system (dopo il download e la decompressione o dopo aver risolto un handle di modello in un percorso del file system), è possibile ottenerla tramite la funzione hub.resolve(handle)
.
Memorizzazione nella cache dei download compressi
La libreria tensorflow_hub
per impostazione predefinita memorizza nella cache i modelli sul filesystem quando sono stati scaricati da tfhub.dev (o altri siti di hosting ) e decompressi. Questa modalità è consigliata per la maggior parte degli ambienti, tranne nei casi in cui lo spazio su disco è scarso ma la larghezza di banda e la latenza della rete sono eccezionali.
Per impostazione predefinita, il percorso di download è una directory temporanea locale, ma può essere personalizzato impostando la variabile di ambiente TFHUB_CACHE_DIR
(consigliata) o passando il flag della riga di comando --tfhub_cache_dir
. La posizione della cache predefinita /tmp/tfhub_modules
(o qualsiasi altra cosa os.path.join(tempfile.gettempdir(), "tfhub_modules")
viene valutata) dovrebbe funzionare nella maggior parte dei casi.
Gli utenti che preferiscono la memorizzazione nella cache persistente durante i riavvii del sistema possono invece impostare TFHUB_CACHE_DIR
su una posizione nella loro home directory. Ad esempio, un utente della shell bash su un sistema Linux può aggiungere una riga come la seguente a ~/.bashrc
export TFHUB_CACHE_DIR=$HOME/.cache/tfhub_modules
...riavvia la shell, quindi verrà utilizzata questa posizione. Quando si utilizza una posizione persistente, tenere presente che non è prevista la pulizia automatica.
Lettura da archivio remoto
Gli utenti possono indicare alla libreria tensorflow_hub
di leggere direttamente i modelli dall'archiviazione remota (GCS) invece di scaricare i modelli localmente con
os.environ["TFHUB_MODEL_LOAD_FORMAT"] = "UNCOMPRESSED"
oppure impostando il flag della riga di comando --tfhub_model_load_format
su UNCOMPRESSED
. In questo modo non è necessaria alcuna directory di memorizzazione nella cache, il che è particolarmente utile in ambienti che forniscono poco spazio su disco ma una connessione Internet veloce.
In esecuzione su TPU nei notebook Colab
Su colab.research.google.com , il download di modelli compressi andrà in conflitto con il runtime TPU poiché il carico di lavoro di calcolo è delegato a un altro computer che non ha accesso alla posizione della cache per impostazione predefinita. Esistono due soluzioni alternative per questa situazione:
1) Utilizzare un bucket GCS a cui il lavoratore TPU può accedere
La soluzione più semplice è istruire la libreria tensorflow_hub
a leggere i modelli dal bucket GCS di TF Hub come spiegato sopra. Gli utenti con il proprio bucket GCS possono invece specificare una directory nel proprio bucket come posizione della cache con codice simile
import os
os.environ["TFHUB_CACHE_DIR"] = "gs://my-bucket/tfhub-modules-cache"
...prima di chiamare la libreria tensorflow_hub
.
2) Reindirizzare tutte le letture tramite l'host Colab
Un'altra soluzione alternativa consiste nel reindirizzare tutte le letture (anche di variabili di grandi dimensioni) tramite l'host Colab:
load_options =
tf.saved_model.LoadOptions(experimental_io_device='/job:localhost')
reloaded_model = hub.load("https://tfhub.dev/...", options=load_options)
Nota: ulteriori informazioni sugli handle validi sono disponibili qui .