Przegląd
Biblioteka tensorflow_hub
obsługuje obecnie dwa tryby pobierania modeli. Domyślnie model jest pobierany jako skompresowane archiwum i buforowany na dysku. Po drugie, modele można bezpośrednio odczytywać ze zdalnego magazynu do TensorFlow. Tak czy inaczej, wywołania funkcji tensorflow_hub
w rzeczywistym kodzie Pythona mogą i powinny nadal używać kanonicznych adresów URL modeli tfhub.dev , które można przenosić między systemami i nawigacyjny dla dokumentacji. W rzadkich przypadkach, gdy kod użytkownika wymaga rzeczywistej lokalizacji systemu plików (po pobraniu i dekompresji lub po przekształceniu uchwytu modelu w ścieżkę systemu plików), można ją uzyskać za pomocą funkcji hub.resolve(handle)
.
Buforowanie skompresowanych pobrań
Biblioteka tensorflow_hub
domyślnie buforuje modele w systemie plików, gdy zostały one pobrane z tfhub.dev (lub innych witryn hostingowych ) i zdekompresowane. Ten tryb jest zalecany w większości środowisk, z wyjątkiem sytuacji, gdy brakuje miejsca na dysku, ale przepustowość sieci i opóźnienia są znakomite.
Domyślną lokalizacją pobierania jest lokalny katalog tymczasowy, ale można ją dostosować, ustawiając zmienną środowiskową TFHUB_CACHE_DIR
(zalecane) lub przekazując flagę wiersza polecenia --tfhub_cache_dir
. Domyślna lokalizacja pamięci podręcznej /tmp/tfhub_modules
(lub cokolwiek, do czego jest oceniany os.path.join(tempfile.gettempdir(), "tfhub_modules")
) powinna działać w większości przypadków.
Użytkownicy, którzy preferują trwałe buforowanie podczas ponownego uruchamiania systemu, mogą zamiast tego ustawić TFHUB_CACHE_DIR
na lokalizację w swoim katalogu domowym. Na przykład użytkownik powłoki bash w systemie Linux może dodać następującą linię do ~/.bashrc
export TFHUB_CACHE_DIR=$HOME/.cache/tfhub_modules
...zrestartuj powłokę, a następnie ta lokalizacja zostanie użyta. Korzystając z trwałej lokalizacji, należy pamiętać, że nie ma automatycznego czyszczenia.
Odczyt ze zdalnego magazynu
Użytkownicy mogą poinstruować bibliotekę tensorflow_hub
, aby bezpośrednio odczytywała modele ze zdalnego magazynu (GCS) zamiast lokalnie pobierać modele za pomocą
os.environ["TFHUB_MODEL_LOAD_FORMAT"] = "UNCOMPRESSED"
lub ustawiając flagę wiersza polecenia --tfhub_model_load_format
na UNCOMPRESSED
. W ten sposób katalog pamięci podręcznej nie jest potrzebny, co jest szczególnie przydatne w środowiskach, które zapewniają mało miejsca na dysku, ale szybkie połączenie internetowe.
Działa na TPU w notatnikach Colab
Na colab.research.google.com pobieranie skompresowanych modeli spowoduje konflikt ze środowiskiem wykonawczym TPU, ponieważ obciążenie obliczeniowe jest delegowane na inną maszynę, która domyślnie nie ma dostępu do lokalizacji pamięci podręcznej. Istnieją dwa obejścia tej sytuacji:
1) Użyj zasobnika GCS, do którego ma dostęp pracownik TPU
Najłatwiejszym rozwiązaniem jest poinstruowanie biblioteki tensorflow_hub
, aby odczytała modele z zasobnika GCS TF Hub, jak wyjaśniono powyżej. Użytkownicy z własnym zasobnikiem GCS mogą zamiast tego określić katalog w swoim zasobniku jako lokalizację pamięci podręcznej za pomocą kodu podobnego
import os
os.environ["TFHUB_CACHE_DIR"] = "gs://my-bucket/tfhub-modules-cache"
... przed wywołaniem biblioteki tensorflow_hub
.
2) Przekieruj wszystkie odczyty przez hosta Colab
Innym obejściem jest przekierowanie wszystkich odczytów (nawet dużych zmiennych) przez hosta Colab:
load_options =
tf.saved_model.LoadOptions(experimental_io_device='/job:localhost')
reloaded_model = hub.load("https://tfhub.dev/...", options=load_options)
Uwaga: Więcej informacji na temat prawidłowych uchwytów znajdziesz tutaj .
,Przegląd
Biblioteka tensorflow_hub
obsługuje obecnie dwa tryby pobierania modeli. Domyślnie model jest pobierany jako skompresowane archiwum i buforowany na dysku. Po drugie, modele można bezpośrednio odczytywać ze zdalnego magazynu do TensorFlow. Tak czy inaczej, wywołania funkcji tensorflow_hub
w rzeczywistym kodzie Pythona mogą i powinny nadal używać kanonicznych adresów URL modeli tfhub.dev , które można przenosić między systemami i nawigacyjny dla dokumentacji. W rzadkich przypadkach, gdy kod użytkownika wymaga rzeczywistej lokalizacji systemu plików (po pobraniu i dekompresji lub po przekształceniu uchwytu modelu w ścieżkę systemu plików), można ją uzyskać za pomocą funkcji hub.resolve(handle)
.
Buforowanie skompresowanych pobrań
Biblioteka tensorflow_hub
domyślnie buforuje modele w systemie plików, gdy zostały one pobrane z tfhub.dev (lub innych witryn hostingowych ) i zdekompresowane. Ten tryb jest zalecany w większości środowisk, z wyjątkiem sytuacji, gdy brakuje miejsca na dysku, ale przepustowość sieci i opóźnienia są znakomite.
Domyślną lokalizacją pobierania jest lokalny katalog tymczasowy, ale można ją dostosować, ustawiając zmienną środowiskową TFHUB_CACHE_DIR
(zalecane) lub przekazując flagę wiersza polecenia --tfhub_cache_dir
. Domyślna lokalizacja pamięci podręcznej /tmp/tfhub_modules
(lub cokolwiek, do czego jest oceniany os.path.join(tempfile.gettempdir(), "tfhub_modules")
) powinna działać w większości przypadków.
Użytkownicy, którzy preferują trwałe buforowanie podczas ponownego uruchamiania systemu, mogą zamiast tego ustawić TFHUB_CACHE_DIR
na lokalizację w swoim katalogu domowym. Na przykład użytkownik powłoki bash w systemie Linux może dodać następującą linię do ~/.bashrc
export TFHUB_CACHE_DIR=$HOME/.cache/tfhub_modules
...zrestartuj powłokę, a następnie ta lokalizacja zostanie użyta. Korzystając z trwałej lokalizacji, należy pamiętać, że nie ma automatycznego czyszczenia.
Odczyt ze zdalnego magazynu
Użytkownicy mogą poinstruować bibliotekę tensorflow_hub
, aby bezpośrednio odczytywała modele ze zdalnego magazynu (GCS) zamiast lokalnie pobierać modele za pomocą
os.environ["TFHUB_MODEL_LOAD_FORMAT"] = "UNCOMPRESSED"
lub ustawiając flagę wiersza polecenia --tfhub_model_load_format
na UNCOMPRESSED
. W ten sposób katalog pamięci podręcznej nie jest potrzebny, co jest szczególnie przydatne w środowiskach, które zapewniają mało miejsca na dysku, ale szybkie połączenie internetowe.
Działa na TPU w notatnikach Colab
Na colab.research.google.com pobieranie skompresowanych modeli spowoduje konflikt ze środowiskiem wykonawczym TPU, ponieważ obciążenie obliczeniowe jest delegowane na inną maszynę, która domyślnie nie ma dostępu do lokalizacji pamięci podręcznej. Istnieją dwa obejścia tej sytuacji:
1) Użyj zasobnika GCS, do którego ma dostęp pracownik TPU
Najłatwiejszym rozwiązaniem jest poinstruowanie biblioteki tensorflow_hub
, aby odczytała modele z zasobnika GCS TF Hub, jak wyjaśniono powyżej. Użytkownicy z własnym zasobnikiem GCS mogą zamiast tego określić katalog w swoim zasobniku jako lokalizację pamięci podręcznej za pomocą kodu podobnego
import os
os.environ["TFHUB_CACHE_DIR"] = "gs://my-bucket/tfhub-modules-cache"
... przed wywołaniem biblioteki tensorflow_hub
.
2) Przekieruj wszystkie odczyty przez hosta Colab
Innym obejściem jest przekierowanie wszystkich odczytów (nawet dużych zmiennych) przez hosta Colab:
load_options =
tf.saved_model.LoadOptions(experimental_io_device='/job:localhost')
reloaded_model = hub.load("https://tfhub.dev/...", options=load_options)
Uwaga: Więcej informacji na temat prawidłowych uchwytów znajdziesz tutaj .