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 URLhttps://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=compresseddo adresu URL modelu TensorFlow. - Modele TFJS: dołącz
?tfjs-format=compresseddo 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=tflitedo 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.