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 URLhttps://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.