Unduhan model cache dari TF Hub

Ringkasan

Pustaka tensorflow_hub saat ini mendukung dua mode untuk mengunduh model. Secara default, model diunduh sebagai arsip terkompresi dan disimpan dalam cache pada disk. Kedua, model dapat langsung dibaca dari penyimpanan jarak jauh ke TensorFlow. Apa pun yang terjadi, panggilan ke fungsi tensorflow_hub dalam kode Python sebenarnya dapat dan harus terus menggunakan URL model tfhub.dev kanonik, yang portabel di seluruh sistem dan dapat dinavigasi untuk dokumentasi. Dalam kasus yang jarang terjadi ketika kode pengguna memerlukan lokasi sistem file sebenarnya (setelah mengunduh dan mendekompresi, atau setelah menyelesaikan pegangan model ke dalam jalur sistem file), lokasi tersebut dapat diperoleh melalui fungsi hub.resolve(handle) .

Caching unduhan terkompresi

Pustaka tensorflow_hub secara default menyimpan model dalam cache pada sistem file ketika telah diunduh dari tfhub.dev (atau situs hosting lainnya) dan didekompresi. Mode ini direkomendasikan untuk sebagian besar lingkungan, kecuali jika ruang disk terbatas tetapi bandwidth dan latensi jaringan luar biasa.

Lokasi pengunduhan defaultnya adalah direktori sementara lokal tetapi dapat disesuaikan dengan mengatur variabel lingkungan TFHUB_CACHE_DIR (disarankan) atau dengan meneruskan tanda baris perintah --tfhub_cache_dir . Lokasi cache default /tmp/tfhub_modules (atau apa pun os.path.join(tempfile.gettempdir(), "tfhub_modules") yang dievaluasi) seharusnya berfungsi dalam banyak kasus.

Pengguna yang lebih memilih cache persisten saat reboot sistem dapat mengatur TFHUB_CACHE_DIR ke lokasi di direktori home mereka. Misalnya, pengguna bash shell di sistem Linux dapat menambahkan baris seperti berikut ke ~/.bashrc

export TFHUB_CACHE_DIR=$HOME/.cache/tfhub_modules

...restart shell, dan lokasi ini akan digunakan. Saat menggunakan lokasi persisten, ketahuilah bahwa tidak ada pembersihan otomatis.

Membaca dari penyimpanan jarak jauh

Pengguna dapat menginstruksikan pustaka tensorflow_hub untuk langsung membaca model dari penyimpanan jarak jauh (GCS) alih-alih mengunduh model secara lokal dengan

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

atau dengan menyetel tanda baris perintah --tfhub_model_load_format ke UNCOMPRESSED . Dengan cara ini, tidak diperlukan direktori caching, yang sangat membantu dalam lingkungan yang menyediakan sedikit ruang disk tetapi koneksi internet cepat.

Berjalan di TPU di notebook Colab

Di colab.research.google.com , pengunduhan model terkompresi akan bertentangan dengan runtime TPU karena beban kerja komputasi didelegasikan ke mesin lain yang tidak memiliki akses ke lokasi cache secara default. Ada dua solusi untuk situasi ini:

1) Gunakan bucket GCS yang dapat diakses oleh pekerja TPU

Solusi termudah adalah dengan menginstruksikan pustaka tensorflow_hub untuk membaca model dari bucket GCS TF Hub seperti yang dijelaskan di atas. Pengguna yang memiliki bucket GCS sendiri dapat menentukan direktori di bucket mereka sebagai lokasi cache dengan kode serupa

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

...sebelum memanggil perpustakaan tensorflow_hub .

2) Alihkan semua pembacaan melalui host Colab

Solusi lainnya adalah mengalihkan semua pembacaan (bahkan variabel besar) melalui host Colab:

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

Catatan: Lihat informasi lebih lanjut mengenai pegangan yang valid di sini .