TF Hub'dan model indirmelerini önbelleğe alma

Genel Bakış

tensorflow_hub kütüphanesi ş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 diske ö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 fonksiyonlarına yapılan çağrılar, sistemler arasında taşınabilir ve dokümantasyon için gezilebilir olan modellerin standart `tfhub.dev` URL'lerini kullanmaya devam edebilir ve etmelidir. Kullanıcı kodunun gerçek dosya sistemi konumuna (indirme ve sıkıştırmayı açma işleminden sonra veya bir model tanıtıcısını bir dosya sistemi yoluna çözümledikten sonra) ihtiyaç duyduğu nadir durumlarda, bu hub.resolve(handle) fonksiyonu ile elde edilebilir.

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

tensorflow_hub kütüphanesi, varsayılan olarak, tfhub.dev'den (veya diğer barındırma sitelerinden ) indirilen ve sıkıştırılmış dosyaları açılan modelleri dosya sisteminde önbelleğe alır. Bu mod, disk alanı kısıtlı ancak ağ bant genişliği ve gecikme süresi mükemmel olan durumlar dışında çoğu ortam için önerilir.

İndirme konumu varsayılan olarak yerel geçici bir dizine ayarlanır, ancak TFHUB_CACHE_DIR ortam değişkenini ayarlayarak (önerilir) veya --tfhub_cache_dir komut satırı bayrağını kullanarak özelleştirilebilir. Varsayılan önbellek konumu /tmp/tfhub_modules (veya os.path.join(tempfile.gettempdir(), "tfhub_modules") değerlendirildiği herhangi bir konum) çoğu durumda işe yarayacaktır.

Sistem yeniden başlatmalarında kalıcı önbellekleme tercih eden kullanıcılar, TFHUB_CACHE_DIR ana dizinlerindeki bir konuma ayarlayabilirler. Örneğin, Linux sisteminde bash kabuğunu kullanan bir kullanıcı, ~/.bashrc dosyasına 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 işleminin olmadığını unutmayın.

Uzak depolamadan okuma

Kullanıcılar tensorflow_hub kütüphanesine modelleri yerel olarak indirmek yerine doğrudan uzak depolama alanından (GCS) okumasını şu şekilde söyleyebilirler:

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

Veya komut satırı bayrağı --tfhub_model_load_format UNCOMPRESSED olarak ayarlayarak da önbellekleme yapabilirsiniz. Bu şekilde, özellikle az disk alanı olan ancak hızlı internet bağlantısı bulunan ortamlarda faydalı olan bir önbellekleme dizinine gerek kalmaz.

Colab not defterlerinde TPU üzerinde çalışıyor.

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

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

En kolay çözüm, yukarıda açıklandığı gibi tensorflow_hub kütüphanesine modelleri TF Hub'ın GCS kovasından okumasını söylemektir. Kendi GCS kovasına sahip kullanıcılar ise bunun yerine, aşağıdaki gibi bir kodla kovalarındaki bir dizini önbellek konumu olarak belirtebilirler:

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

... tensorflow_hub kütüphanesini çağırmadan önce.

2) Tüm okuma işlemlerini Colab sunucusu üzerinden yönlendirin.

Bir diğer çözüm yolu ise tüm okuma işlemlerini (büyük değişkenlerin okuma işlemleri de dahil) Colab sunucusu üzerinden yönlendirmektir:

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

Not: Geçerli tanıtıcılarla ilgili daha fazla bilgiyi burada bulabilirsiniz.