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 alternativa, i modelli possono essere letti direttamente dalla memoria remota in TensorFlow. In entrambi i casi, le chiamate alle funzioni di tensorflow_hub nel codice Python possono e devono continuare a utilizzare gli URL canonici tfhub.dev dei modelli, che sono portabili tra 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 del modello in un percorso del file system), questa può essere ottenuta 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 file system dopo averli scaricati da tfhub.dev (o da altri siti di hosting ) e averli decompressi. Questa modalità è consigliata per la maggior parte degli ambienti, tranne nei casi in cui lo spazio su disco sia limitato ma la larghezza di banda e la latenza di rete siano ottimali.
Il percorso di download predefinito è una directory temporanea locale, ma può essere personalizzato impostando la variabile d'ambiente TFHUB_CACHE_DIR (consigliato) o passando il flag da riga di comando --tfhub_cache_dir . Il percorso di cache predefinito /tmp/tfhub_modules (o qualsiasi altro valore venga valutato da os.path.join(tempfile.gettempdir(), "tfhub_modules") dovrebbe funzionare nella maggior parte dei casi.
Gli utenti che preferiscono una cache persistente anche dopo il riavvio del sistema possono impostare TFHUB_CACHE_DIR su una posizione nella propria directory home. Ad esempio, un utente della shell bash su un sistema Linux può aggiungere una riga come la seguente al file ~/.bashrc :
export TFHUB_CACHE_DIR=$HOME/.cache/tfhub_modules
...riavvia la shell e quindi verrà utilizzata questa posizione. Quando si utilizza una posizione persistente, tieni presente che non è prevista una pulizia automatica.
Lettura da memoria remota
Gli utenti possono indicare alla libreria tensorflow_hub di leggere direttamente i modelli dalla memoria remota (GCS) invece di scaricarli localmente con:
os.environ["TFHUB_MODEL_LOAD_FORMAT"] = "UNCOMPRESSED"
oppure impostando il flag da riga di comando --tfhub_model_load_format su UNCOMPRESSED . In questo modo, non è necessaria alcuna directory di cache, il che è particolarmente utile in ambienti che offrono poco spazio su disco ma una connessione Internet veloce.
Esecuzione su TPU nei notebook Colab
Su colab.research.google.com , il download di modelli compressi entrerà in conflitto con il runtime TPU poiché il carico di lavoro computazionale viene delegato a un'altra macchina che per impostazione predefinita non ha accesso alla posizione della cache. Esistono due soluzioni alternative per questa situazione:
1) Utilizzare un bucket GCS a cui il worker TPU possa accedere
La soluzione più semplice è quella di istruire la libreria tensorflow_hub a leggere i modelli dal bucket GCS di TF Hub, come spiegato in precedenza. Gli utenti con un proprio bucket GCS possono invece specificare una directory nel proprio bucket come posizione della cache con un codice simile a questo:
import os
os.environ["TFHUB_CACHE_DIR"] = "gs://my-bucket/tfhub-modules-cache"
...prima di richiamare la libreria tensorflow_hub .
2) Reindirizzare tutte le letture attraverso l'host Colab
Un'altra soluzione alternativa consiste nel reindirizzare tutte le letture (anche di variabili di grandi dimensioni) attraverso 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: per ulteriori informazioni sugli handle validi, consultare questa pagina .