Model indirmelerini TF Hub'dan önbelleğe alma

genel bakış

tensorflow_hub kitaplığı şu anda modelleri indirmek için iki modu desteklemektedir. Varsayılan olarak, bir model sıkıştırılmış bir arşiv olarak indirilir ve diskte önbelleğe alınır. İkinci olarak, modeller doğrudan uzak depolamadan TensorFlow'a okunabilir. Her iki durumda da, gerçek Python kodundaki tensorflow_hub işlevlerine yapılan çağrılar, sistemler arasında taşınabilir olan standart tfhub.dev model URL'lerini kullanmaya devam edebilir ve etmelidir. dokümantasyon için gezilebilir. Kullanıcı kodunun gerçek dosya sistemi konumuna ihtiyaç duyduğu ender durumlarda (indirdikten ve sıkıştırmayı açtıktan sonra veya bir model tanıtıcısını bir dosya sistemi yolunda çözümledikten sonra), bu, hub.resolve(handle) işleviyle elde edilebilir.

Sıkıştırılmış indirmelerin önbelleğe alınması

tensorflow_hub kitaplığı, varsayılan olarak modelleri tfhub.dev (veya diğer barındırma sitelerinden ) indirildiğinde ve sıkıştırması açıldığında dosya sistemindeki önbelleğe alır. Bu mod, disk alanının kısıtlı olduğu ancak ağ bant genişliğinin ve gecikme süresinin mükemmel olduğu durumlar dışında çoğu ortam için önerilir.

İndirme konumu varsayılan olarak yerel bir geçici dizine ayarlanır, ancak ortam değişkeni TFHUB_CACHE_DIR (önerilir) ayarlanarak veya komut satırı bayrağı --tfhub_cache_dir . Çoğu durumda, varsayılan önbellek konumu /tmp/tfhub_modules (veya os.path.join(tempfile.gettempdir(), "tfhub_modules") göre değerlendirilirse değerlendirilsin) çalışması gerekir.

Sistem yeniden başlatmaları arasında kalıcı önbelleğe almayı tercih eden kullanıcılar, bunun yerine TFHUB_CACHE_DIR ana dizinlerindeki bir konuma ayarlayabilir. Örneğin, bir Linux sistemindeki bash kabuğunun bir kullanıcısı ~/.bashrc aşağıdaki gibi bir satır ekleyebilir.

export TFHUB_CACHE_DIR=$HOME/.cache/tfhub_modules

...kabuğu yeniden başlatın, ardından bu konum kullanılacaktır. Kalıcı bir konum kullanırken, otomatik temizleme olmadığını unutmayın.

Uzak depolamadan okuma

Kullanıcılar, tensorflow_hub kitaplığına, modelleri yerel olarak indirmek yerine uzak depolamadan (GCS) doğrudan okuma talimatı verebilir.

os.environ["TFHUB_MODEL_LOAD_FORMAT"] = "UNCOMPRESSED"

veya --tfhub_model_load_format komut satırı bayrağını --tfhub_model_load_format olarak UNCOMPRESSED . Bu şekilde, önbelleğe alma dizini gerekmez; bu, özellikle az disk alanı sağlayan ancak hızlı internet bağlantısı sağlayan ortamlarda yardımcı olur.

Colab not defterlerinde TPU üzerinde çalıştırma

colab.research.google.com adresinde , hesaplama iş yükü varsayılan olarak önbellek konumuna erişimi olmayan başka bir makineye devredildiğinden, sıkıştırılmış modellerin indirilmesi TPU çalışma zamanı ile çakışacaktır. Bu durum için iki geçici çözüm vardır:

1) TPU çalışanının erişebileceği bir GCS paketi kullanın

En kolay çözüm, tensorflow_hub kitaplığına, yukarıda açıklandığı gibi TF Hub'ın GCS kovasındaki modelleri okuması talimatını vermektir. Kendi GCS paketine sahip kullanıcılar, bunun yerine, aşağıdaki gibi bir kodla önbellek konumu olarak paketlerinde bir dizini belirtebilir.

import os
os.environ["TFHUB_CACHE_DIR"] = "gs://my-bucket/tfhub-modules-cache"

... tensorflow_hub kitaplığını çağırmadan önce.

2) Tüm okumaları Colab ana bilgisayarı aracılığıyla yönlendirin

Başka bir geçici çözüm, tüm okumaları (büyük değişkenler dahil) Colab ana bilgisayarı aracılığıyla yeniden yönlendirmektir:

load_options =
tf.saved_model.LoadOptions(experimental_io_device='/job:localhost')
reloaded_model = hub.load("https://tfhub.dev/...", options=load_options)