Questo documento descrive le convenzioni URL utilizzate per ospitare tutti i tipi di modelli su tfhub.dev : modelli TFJS, TF Lite e TensorFlow. Descrive inoltre il protocollo basato su HTTP(S) implementato dalla libreria tensorflow_hub per caricare i modelli TensorFlow da tfhub.dev e da servizi compatibili nei programmi TensorFlow.
La sua caratteristica principale è quella di utilizzare lo stesso URL nel codice per caricare un modello e nel browser per visualizzare la documentazione del modello.
Convenzioni generali per gli URL
tfhub.dev supporta i seguenti formati URL:
- Gli editori di TF Hub seguono
https://tfhub.dev/<publisher> - Le collezioni di TF Hub sono disponibili all'indirizzo
https://tfhub.dev/<publisher>/collection/<collection_name> - I modelli di TF Hub hanno un URL con versione
https://tfhub.dev/<publisher>/<model_name>/<version>e un URL senza versionehttps://tfhub.dev/<publisher>/<model_name>che punta all'ultima versione del modello.
I modelli di TF Hub possono essere scaricati come risorse compresse aggiungendo parametri URL all'URL del modello su tfhub.dev . Tuttavia, i parametri URL necessari per farlo dipendono dal tipo di modello:
- Modelli TensorFlow (sia in formato SavedModel che in formato TF1 Hub): aggiungi
?tf-hub-format=compressedall'URL del modello TensorFlow. - Modelli TFJS: aggiungi
?tfjs-format=compressedall'URL del modello TFJS per scaricare il file compresso oppure/model.json?tfjs-format=fileper leggerlo da una memoria remota. - Modelli TF Lite: aggiungi
?lite-format=tfliteall'URL del modello TF Lite.
Per esempio:
| Tipo | URL dell'account | Tipo di download | Parametri assicurativi | URL per il download |
| TensorFlow (SavedModel, formato TF1 Hub) | https://tfhub.dev/google/spice/2 | .tar.gz | ?tf-hub-format=compresso | https://tfhub.dev/google/spice/2?tf-hub-format=compressed |
| TF Lite | 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=compresso | https://tfhub.dev/google/tfjs-model/spice/2/default/1?tfjs-format=compressed |
Inoltre, alcuni modelli sono ospitati in un formato che può essere letto direttamente da una memoria remota senza doverli scaricare. Questo è particolarmente utile se non è disponibile una memoria locale, ad esempio quando si esegue un modello TF.js nel browser o si carica un SavedModel su Colab . È importante tenere presente che la lettura di modelli ospitati in remoto senza essere scaricati localmente potrebbe aumentare la latenza.
| Tipo | URL dell'account | Tipo di risposta | Parametri assicurativi | Richiesta di urto |
| TensorFlow (SavedModel, formato TF1 Hub) | https://tfhub.dev/google/spice/2 | Stringa (Percorso della cartella GCS in cui è memorizzato il modello non compresso) | ?tf-hub-format=noncompresso | 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=file | https://tfhub.dev/google/tfjs-model/spice/2/default/1/model.json?tfjs-format=file |
protocollo della libreria tensorflow_hub
Questa sezione descrive come ospitiamo i modelli su tfhub.dev per utilizzarli con la libreria tensorflow_hub. Se desideri ospitare il tuo repository di modelli per lavorare con la libreria tensorflow_hub, il tuo servizio di distribuzione HTTP(s) deve fornire un'implementazione di questo protocollo.
Si noti che questa sezione non tratta l'hosting di modelli TF Lite e TFJS poiché non vengono scaricati tramite la libreria tensorflow_hub . Per ulteriori informazioni sull'hosting di questi tipi di modelli, consultare la sezione precedente .
Hosting compresso
I modelli sono memorizzati su tfhub.dev come file tar.gz compressi. Per impostazione predefinita, la libreria tensorflow_hub scarica automaticamente il modello compresso. Possono anche essere scaricati manualmente aggiungendo ?tf-hub-format=compressed all'URL del modello, ad esempio:
wget https://tfhub.dev/tensorflow/albert_en_xxlarge/1?tf-hub-format=compressed
La directory principale dell'archivio è la directory principale del modello e dovrebbe contenere un oggetto SavedModel, come in questo esempio:
# 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
Gli archivi tarball da utilizzare con il vecchio formato TF1 Hub conterranno anche un file ./tfhub_module.pb .
Quando viene richiamata una delle API di caricamento dei modelli della libreria tensorflow_hub ( hub.KerasLayer , hub.load , ecc.), la libreria scarica il modello, lo decomprime e lo memorizza nella cache locale. La libreria tensorflow_hub si aspetta che gli URL dei modelli siano versionati e che il contenuto del modello di una data versione sia immutabile, in modo che possa essere memorizzato nella cache a tempo indeterminato. Ulteriori informazioni sulla memorizzazione nella cache dei modelli sono disponibili qui.

Hosting non compresso
Quando la variabile d'ambiente TFHUB_MODEL_LOAD_FORMAT o il flag della riga di comando --tfhub_model_load_format è impostato su UNCOMPRESSED , il modello viene letto direttamente dalla memoria remota (GCS) invece di essere scaricato e decompresso localmente. Quando questo comportamento è abilitato, la libreria aggiunge ?tf-hub-format=uncompressed all'URL del modello. Tale richiesta restituisce il percorso della cartella su GCS che contiene i file del modello non compressi. Ad esempio,
https://tfhub.dev/google/spice/2?tf-hub-format=uncompressed
resi
gs://kaggle-tfhub-models-uncompressed/tfhub-modules/google/spice/2/uncompressed nel corpo della risposta 303. La libreria legge quindi il modello da quella destinazione GCS.