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.