Modello di protocollo di hosting

Questo documento descrive le convenzioni URL utilizzate quando si ospitano 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 modelli TensorFlow da tfhub.dev e servizi compatibili nei programmi TensorFlow.

La sua caratteristica principale è utilizzare lo stesso URL nel codice per caricare un modello e in un browser per visualizzare la documentazione del modello.

Convenzioni generali sugli URL

tfhub.dev supporta i seguenti formati URL:

  • Gli editori di TF Hub seguono <a href="https://tfhub.dev/">https://tfhub.dev/</a><publisher>
  • Le raccolte TF Hub seguono <a href="https://tfhub.dev/">https://tfhub.dev/</a><publisher>/collection/<collection_name>
  • I modelli TF Hub hanno un URL con versione <a href="https://tfhub.dev/">https://tfhub.dev/</a><publisher>/<model_name>/<version> e un URL senza versione <a href="https://tfhub.dev/">https://tfhub.dev/</a><publisher>/<model_name> che si risolve nella versione più recente del modello.

I modelli TF Hub possono essere scaricati come risorse compresse aggiungendo parametri URL all'URL del modello tfhub.dev . Tuttavia, i parametri URL richiesti per raggiungere questo obiettivo dipendono dal tipo di modello:

  • Modelli TensorFlow (entrambi i formati SavedModel e 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 o /model.json?tfjs-format=file da leggere dall'archivio remoto.
  • Modelli TF Lite: aggiungi ?lite-format=tflite all'URL del modello TF Lite.

Per esempio:

Tipo URL del modello Scarica tipo Parametro URL Scarica l'URL
TensorFlow (SavedModel, formato hub TF1) 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 ?formato-lite=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 anche in un formato che può essere letto direttamente dall'archivio remoto senza essere scaricato. Ciò è particolarmente utile se non è disponibile spazio di archiviazione locale, ad esempio quando si esegue un modello TF.js nel browser o si carica un SavedModel su Colab . Tieni presente che la lettura di modelli ospitati in remoto senza essere scaricati localmente può aumentare la latenza.

Tipo URL del modello Tipo di risposta Parametro URL Richiedi URL
TensorFlow (SavedModel, formato hub TF1) https://tfhub.dev/google/spice/2 Stringa (percorso della cartella GCS in cui è archiviato il modello non compresso) ?tf-hub-format=non compresso https://tfhub.dev/google/spice/2?tf-hub-format=uncompressed
TF.js https://tfhub.dev/google/tfjs-model/spice/2/default/1 .json ?tfjs-formato=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 da utilizzare 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) dovrebbe fornire un'implementazione di questo protocollo.

Tieni presente che questa sezione non riguarda l'hosting dei modelli TF Lite e TFJS poiché non vengono scaricati tramite la libreria tensorflow_hub . Per ulteriori informazioni sull'hosting di questi tipi di modelli, consulta la pagina sopra .

Hosting compresso

I modelli vengono archiviati 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 radice dell'archivio è la radice della directory del modello e dovrebbe contenere un 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

I tarball da utilizzare con il formato legacy TF1 Hub conterranno anche un file ./tfhub_module.pb .

Quando viene richiamata una delle API di caricamento del modello 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 del modello abbiano una versione e che il contenuto del modello di una determinata versione sia immutabile, in modo che possa essere memorizzato nella cache a tempo indeterminato. Ulteriori informazioni sui modelli di memorizzazione nella cache .

Hosting non compresso

Quando la variabile di ambiente TFHUB_MODEL_LOAD_FORMAT o il flag della riga di comando --tfhub_model_load_format è impostato su UNCOMPRESSED , il modello viene letto direttamente dall'archivio remoto (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 compresso. Come esempio,
<a href="https://tfhub.dev/google/spice/2?tf-hub-format=uncompressed">https://tfhub.dev/google/spice/2?tf-hub-format=uncompressed</a>
ritorna
gs://tfhub-modules/google/spice/2/uncompressed nel corpo della risposta 303. La libreria legge quindi il modello da quella destinazione GCS.