Tổng quan
Thư viện tensorflow_hub hiện hỗ trợ hai chế độ tải xuống mô hình. Theo mặc định, mô hình được tải xuống dưới dạng tệp lưu trữ nén và được lưu vào bộ nhớ đệm trên ổ đĩa. Thứ hai, mô hình có thể được đọc trực tiếp từ bộ nhớ từ xa vào TensorFlow. Dù bằng cách nào, các lệnh gọi đến các hàm tensorflow_hub trong mã Python thực tế vẫn có thể và nên tiếp tục sử dụng các URL tfhub.dev chuẩn của mô hình, vốn có thể di chuyển giữa các hệ thống và dễ điều hướng để lập tài liệu. Trong trường hợp hiếm hoi mã người dùng cần vị trí tệp thực tế (sau khi tải xuống và giải nén, hoặc sau khi chuyển đổi một handle mô hình thành đường dẫn hệ thống tệp), nó có thể được lấy bằng hàm hub.resolve(handle) .
Lưu trữ tạm thời các tệp tải xuống đã nén
Theo mặc định, thư viện tensorflow_hub lưu trữ các mô hình trên hệ thống tệp khi chúng được tải xuống từ tfhub.dev (hoặc các trang web lưu trữ khác) và giải nén. Chế độ này được khuyến nghị cho hầu hết các môi trường, trừ khi dung lượng ổ đĩa hạn chế nhưng băng thông mạng và độ trễ lại rất tốt.
Vị trí tải xuống mặc định là một thư mục tạm thời cục bộ, nhưng có thể được tùy chỉnh bằng cách thiết lập biến môi trường TFHUB_CACHE_DIR (khuyến nghị) hoặc bằng cách truyền cờ dòng lệnh --tfhub_cache_dir . Vị trí bộ nhớ cache mặc định /tmp/tfhub_modules (hoặc bất kỳ giá trị nào mà os.path.join(tempfile.gettempdir(), "tfhub_modules") được đánh giá thành) sẽ hoạt động trong hầu hết các trường hợp.
Người dùng muốn lưu trữ bộ nhớ đệm liên tục sau khi khởi động lại hệ thống có thể đặt TFHUB_CACHE_DIR thành một vị trí trong thư mục chính của họ. Ví dụ, người dùng shell bash trên hệ thống Linux có thể thêm một dòng như sau vào ~/.bashrc :
export TFHUB_CACHE_DIR=$HOME/.cache/tfhub_modules
...khởi động lại shell, và sau đó vị trí này sẽ được sử dụng. Khi sử dụng vị trí lưu trữ cố định, hãy lưu ý rằng sẽ không có quá trình dọn dẹp tự động.
Đọc dữ liệu từ bộ nhớ từ xa
Người dùng có thể hướng dẫn thư viện tensorflow_hub đọc trực tiếp các mô hình từ bộ nhớ từ xa (GCS) thay vì tải xuống các mô hình cục bộ bằng lệnh sau:
os.environ["TFHUB_MODEL_LOAD_FORMAT"] = "UNCOMPRESSED"
Hoặc bằng cách đặt cờ dòng lệnh --tfhub_model_load_format thành UNCOMPRESSED . Bằng cách này, không cần thư mục bộ nhớ đệm, điều này đặc biệt hữu ích trong môi trường có ít dung lượng ổ đĩa nhưng kết nối internet nhanh.
Chạy trên TPU trong sổ tay Colab
Trên colab.research.google.com , việc tải xuống các mô hình nén sẽ xung đột với môi trường chạy TPU vì khối lượng công việc tính toán được ủy thác cho một máy khác mà theo mặc định không có quyền truy cập vào vị trí bộ nhớ cache. Có hai cách khắc phục cho tình huống này:
1) Sử dụng một bucket GCS mà worker TPU có thể truy cập được.
Giải pháp dễ nhất là hướng dẫn thư viện tensorflow_hub đọc các mô hình từ bucket GCS của TF Hub như đã giải thích ở trên. Người dùng có bucket GCS riêng có thể chỉ định một thư mục trong bucket của họ làm vị trí bộ nhớ cache bằng đoạn mã như sau:
import os
os.environ["TFHUB_CACHE_DIR"] = "gs://my-bucket/tfhub-modules-cache"
...trước khi gọi thư viện tensorflow_hub .
2) Chuyển hướng tất cả các yêu cầu đọc thông qua máy chủ Colab.
Một giải pháp khác là chuyển hướng tất cả các thao tác đọc (kể cả với các biến lớn) thông qua máy chủ Colab:
load_options =
tf.saved_model.LoadOptions(experimental_io_device='/job:localhost')
reloaded_model = hub.load("https://tfhub.dev/...", options=load_options)
Lưu ý: Xem thêm thông tin về tên người dùng hợp lệ tại đây .