Modello di protocollo di hosting

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 versione https://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=compressed all'URL del modello TensorFlow.
  • Modelli TFJS: aggiungi ?tfjs-format=compressed all'URL del modello TFJS per scaricare il file compresso oppure /model.json?tfjs-format=file per leggerlo da una memoria remota.
  • Modelli TF Lite: aggiungi ?lite-format=tflite all'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.