Protokół hostingu modelu

W tym dokumencie opisano konwencje adresów URL stosowane podczas hostowania wszystkich typów modeli na tfhub.dev — modele TFJS, TF Lite i TensorFlow. Opisano także protokół oparty na HTTP(S) zaimplementowany przez bibliotekę tensorflow_hub w celu ł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 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ą <a href="https://tfhub.dev/">https://tfhub.dev/</a><publisher>
  • Kolekcje TF Hub śledzą <a href="https://tfhub.dev/">https://tfhub.dev/</a><publisher>/collection/<collection_name>
  • Modele TF Hub mają wersjonowany adres URL <a href="https://tfhub.dev/">https://tfhub.dev/</a><publisher>/<model_name>/<version> i niewersjonowany adres URL <a href="https://tfhub.dev/">https://tfhub.dev/</a><publisher>/<model_name> oznacza najnowszą wersję modelu.

Modele TF Hub można pobrać jako skompresowane zasoby, dołączając parametry adresu URL do adresu URL modelu tfhub.dev . Jednak parametry adresu URL wymagane do osiągnięcia tego zależą od typu modelu:

  • Modele TensorFlow (zarówno w formacie 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 zdalnej pamięci.
  • Modele TF Lite: dołącz ?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

Ponadto niektóre modele są również hostowane w formacie, który można odczytać bezpośrednio z magazynu zdalnego bez konieczności pobierania. Jest to szczególnie przydatne, jeśli nie ma dostępnej pamięci lokalnej, np. uruchamiając model TF.js w przeglądarce lub ładując SavedModel w Colab . Należy pamiętać, że odczytywanie modeli hostowanych zdalnie bez konieczności lokalnego pobierania może zwiększyć opóźnienia.

Typ Adres URL modelu Typ odpowiedzi Parametr adresu URL Adres URL żądania
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, w jaki sposób hostujemy modele w serwisie tfhub.dev do użytku z biblioteką tensorflow_hub. Jeśli chcesz hostować własne repozytorium modeli 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 hostowania modeli TF Lite i TFJS, ponieważ nie są one pobierane za pośrednictwem biblioteki tensorflow_hub . Więcej informacji na temat hostingu tych typów modeli można znaleźć 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, dołączają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ć plik 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 modelu są wersjonowane i że zawartość modelu w danej wersji jest niezmienna, dzięki czemu można ją buforować w nieskończoność. Dowiedz się więcej o modelach buforowania .

Nieskompresowany hosting

Gdy zmienna środowiskowa TFHUB_MODEL_LOAD_FORMAT lub flaga wiersza poleceń --tfhub_model_load_format jest ustawiona na UNCOMPRESSED , model jest odczytywany bezpośrednio z magazynu zdalnego (GCS), zamiast być pobierany i dekompresowany 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 modeli. Jako przykład,
<a href="https://tfhub.dev/google/spice/2?tf-hub-format=uncompressed">https://tfhub.dev/google/spice/2?tf-hub-format=uncompressed</a>
powraca
gs://tfhub-modules/google/spice/2/uncompressed w treści odpowiedzi 303. Następnie biblioteka odczytuje model z tego miejsca docelowego GCS.