Protokół hostingu modelu

W tym dokumencie opisano konwencje adresów URL używane podczas hostowania wszystkich typów modeli na serwerze tfhub.dev – modeli TFJS, TF Lite i TensorFlow. Opisuje on również protokół oparty na protokole HTTP(S) zaimplementowany przez bibliotekę tensorflow_hub w celu ładowania modeli TensorFlow z serwera tfhub.dev i kompatybilnych usług do programów TensorFlow.

Jego główną cechą jest możliwość wykorzystania tego samego adresu URL w kodzie do załadowania modelu i w przeglądarce do przeglądania dokumentacji modelu.

Ogólne konwencje dotyczące adresów URL

tfhub.dev obsługuje następujące formaty adresów URL:

  • Wydawcy TF Hub śledzą https://tfhub.dev/<publisher>
  • Kolekcje TF Hub znajdują się pod adresem https://tfhub.dev/<publisher>/collection/<collection_name>
  • Modele TF Hub mają wersjonowany adres URL https://tfhub.dev/<publisher>/<model_name>/<version> i niewersjonowany adres URL https://tfhub.dev/<publisher>/<model_name> , który odnosi się do najnowszej wersji modelu.

Modele TF Hub można pobrać jako skompresowane zasoby, dodając parametry URL do adresu URL modelu tfhub.dev . Parametry URL wymagane do tego celu zależą jednak od typu modelu:

  • Modele TensorFlow (w formatach SavedModel i TF1 Hub): dołącz ?tf-hub-format=compressed do adresu URL modelu TensorFlow.
  • Modele TFJS: dołącz ?tfjs-format=compressed do adresu URL modelu TFJS, aby pobrać skompresowany plik lub /model.json?tfjs-format=file , aby odczytać go ze zdalnego magazynu.
  • Modele TF Lite: dodaj ?lite-format=tflite do adresu URL modelu TF Lite.

Na przykład:

Typ Adres URL modelu Typ pobierania Parametr adresu URL Pobierz adres URL
TensorFlow (SavedModel, format TF1 Hub) https://tfhub.dev/google/spice/2 .tar.gz ?tf-hub-format=skompresowany 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=skompresowany https://tfhub.dev/google/tfjs-model/spice/2/default/1?tfjs-format=compressed

Dodatkowo, niektóre modele są hostowane w formacie, który można odczytać bezpośrednio ze zdalnej pamięci masowej bez konieczności pobierania. Jest to szczególnie przydatne, gdy nie ma dostępnej lokalnej pamięci masowej, na przykład podczas uruchamiania modelu TF.js w przeglądarce lub ładowania SavedModel w Colab . Należy pamiętać, że odczyt modeli hostowanych zdalnie bez pobierania lokalnego może zwiększyć opóźnienie.

Typ Adres URL modelu Typ odpowiedzi Parametr adresu URL Żądanie adresu URL
TensorFlow (SavedModel, format TF1 Hub) https://tfhub.dev/google/spice/2 Ciąg (ścieżka do folderu GCS, w którym przechowywany jest nieskompresowany model) ?tf-hub-format=nieskompresowany 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=plik https://tfhub.dev/google/tfjs-model/spice/2/default/1/model.json?tfjs-format=file

protokół biblioteki tensorflow_hub

W tej sekcji opisano, jak hostujemy modele na serwerze tfhub.dev do użytku z biblioteką tensorflow_hub. Jeśli chcesz hostować własne repozytorium modeli do współpracy z biblioteką tensorflow_hub, Twoja usługa dystrybucji HTTP(s) powinna udostępniać implementację tego protokołu.

Należy pamiętać, że ta sekcja nie dotyczy hostingu modeli TF Lite i TFJS, ponieważ nie są one pobierane za pośrednictwem biblioteki tensorflow_hub . Aby uzyskać więcej informacji na temat hostingu tych typów modeli, zapoznaj się z powyższą informacją .

Hosting skompresowany

Modele są przechowywane na dysku tfhub.dev jako skompresowane pliki tar.gz. Domyślnie biblioteka tensorflow_hub automatycznie pobiera skompresowany model. Można je również pobrać ręcznie, dopisując ?tf-hub-format=compressed do adresu URL modelu, na przykład:

wget https://tfhub.dev/tensorflow/albert_en_xxlarge/1?tf-hub-format=compressed

Katalog główny archiwum jest katalogiem głównym modelu i powinien zawierać SavedModel, jak w tym przykładzie:

# 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

Archiwa tarball przeznaczone do użytku ze starszym formatem TF1 Hub będą również zawierać plik ./tfhub_module.pb .

Po wywołaniu jednego z interfejsów API ładowania modeli biblioteki tensorflow_hub ( hub.KerasLayer , hub.load itd.) biblioteka pobiera model, dekompresuje go i buforuje lokalnie. Biblioteka tensorflow_hub zakłada, że ​​adresy URL modeli są wersjonowane, a zawartość modelu danej wersji jest niezmienna, dzięki czemu może być buforowana w nieskończoność. Dowiedz się więcej o buforowaniu modeli .

Hosting bez kompresji

Gdy zmienna środowiskowa TFHUB_MODEL_LOAD_FORMAT lub flaga wiersza poleceń --tfhub_model_load_format jest ustawiona na UNCOMPRESSED , model jest odczytywany bezpośrednio ze zdalnego magazynu (GCS), zamiast być pobierany i dekompresowany lokalnie. Po włączeniu tej opcji biblioteka dodaje do adresu URL modelu ciąg ?tf-hub-format=uncompressed . To żądanie zwraca ścieżkę do folderu w GCS, który zawiera nieskompresowane pliki modelu. Na przykład:
https://tfhub.dev/google/spice/2?tf-hub-format=uncompressed
zwroty
gs://kaggle-tfhub-models-uncompressed/tfhub-modules/google/spice/2/uncompressed w treści odpowiedzi 303. Biblioteka odczytuje następnie model z tego miejsca docelowego GCS.