Protokół hostingu modelu

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

Jego kluczową cechą jest użycie tego samego adresu URL w kodzie do załadowania modelu oraz w przeglądarce do przeglądania dokumentacji modelu.

Ogólne konwencje 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 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 rozpoznaje najnowszą wersję modelu.

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

  • Modele TensorFlow (zarówno formaty SavedModel, jak 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 lub /model.json?tfjs-format=file do odczytania ze zdalnego magazynu.
  • Modele TF Lite: dołącz ?lite-format=tflite do adresu URL modelu TF Lite.

Na przykład:

Rodzaj Adres URL modelu Pobierz typ Parametr adresu URL Pobierz 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

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

Rodzaj Adres URL modelu Typ odpowiedzi Parametr adresu URL Adres URL żądania
TensorFlow (SavedModel, format TF1 Hub) https://tfhub.dev/google/spice/2 Ciąg znaków (ś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, w jaki sposób udostępniamy modele na serwerzetfhub.dev do użytku z biblioteką tensorflow_hub. Jeśli chcesz hostować własne repozytorium modelu do pracy z biblioteką tensorflow_hub, Twoja usługa dystrybucji HTTP(s) powinna zapewniać 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, sprawdź powyżej .

Skompresowany hosting

Modele są przechowywane na tfhub.dev jako skompresowane pliki tar.gz. Domyślnie biblioteka tensorflow_hub automatycznie pobiera skompresowany model. Można je również pobrać ręcznie, dodają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 katalogu 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

Tarballe 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 modelu biblioteki tensorflow_hub ( hub.KerasLayer , hub.load itp.) biblioteka pobiera model, dekompresuje model i buforuje go lokalnie. Biblioteka tensorflow_hub oczekuje, że adresy URL modeli są wersjonowane i że zawartość modelu danej wersji jest niezmienna, dzięki czemu może być przechowywana w pamięci podręcznej w nieskończoność. Dowiedz się więcej o modelach buforowania .

Nieskompresowany hosting

Gdy zmienna środowiskowa TFHUB_MODEL_LOAD_FORMAT lub flaga wiersza polecenia --tfhub_model_load_format jest ustawiona na UNCOMPRESSED , model jest odczytywany bezpośrednio z magazynu zdalnego (GCS) zamiast pobierania i dekompresji lokalnie. Gdy to zachowanie jest włączone, biblioteka dołącza ?tf-hub-format=uncompressed do adresu URL modelu. To żądanie zwraca ścieżkę do folderu w GCS, który zawiera nieskompresowane pliki modelu. Jako przykład,
https://tfhub.dev/google/spice/2?tf-hub-format=uncompressed
zwroty
gs://tfhub-modules/google/spice/2/uncompressed w treści odpowiedzi 303. Następnie biblioteka odczytuje model z miejsca docelowego GCS.