TF Hub'dan model indirmelerini önbelleğe alma

Genel Bakış

tensorflow_hub kütüphanesi şu anda modellerin indirilmesi 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 ve dokümantasyon için gezinilebilen modellerin kanonik tfhub.dev URL'lerini kullanabilir ve kullanmaya devam etmelidir. Kullanıcı kodunun gerçek dosya sistemi konumuna ihtiyaç duyduğu nadir durumlarda (indirdikten ve sıkıştırmayı açtıktan sonra veya bir model tanıtıcısını bir dosya sistemi yoluna çözümledikten sonra), bu, hub.resolve(handle) işleviyle elde edilebilir.

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

tensorflow_hub kitaplığı, tfhub.dev'den (veya diğer barındırma sitelerinden ) indirilip sıkıştırması açıldığında, varsayılan olarak dosya sistemindeki modelleri önbelleğe alır. Bu mod, disk alanının az 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 TFHUB_CACHE_DIR ortam değişkeni ayarlanarak (önerilir) veya komut satırı işareti --tfhub_cache_dir iletilerek özelleştirilebilir. Varsayılan önbellek konumu /tmp/tfhub_modules (veya hangi os.path.join(tempfile.gettempdir(), "tfhub_modules") olarak değerlendirilirse) çoğu durumda çalışmalıdır.

Sistemin yeniden başlatılması sırasında kalıcı önbelleğe almayı tercih eden kullanıcılar bunun yerine TFHUB_CACHE_DIR kendi ana dizinlerindeki bir konuma ayarlayabilir. Örneğin, bir Linux sistemindeki bash kabuğunu kullanan bir kullanıcı ~/.bashrc dosyasına aşağıdakine benzer 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 temizlemenin olmadığını unutmayın.

Uzak depolama biriminden okuma

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

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

veya --tfhub_model_load_format komut satırı işaretini UNCOMPRESSED olarak ayarlayarak. Bu şekilde, önbelleğe alma dizinine gerek kalmaz; bu, özellikle az disk alanı ancak hızlı bir internet bağlantısı sağlayan ortamlarda faydalıdır.

Colab not defterlerinde TPU'da çalışıyor

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 kütüphanesine, yukarıda açıklandığı gibi TF Hub'ın GCS klasöründeki modelleri okuması talimatını vermektir. Kendi GCS klasörlerine sahip kullanıcılar bunun yerine, paketlerindeki bir dizini önbellek konumu olarak aşağıdaki gibi bir kodla 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 okumaları Colab ana bilgisayarı üzerinden yönlendirin

Diğer bir geçici çözüm ise 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)

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