Tải xuống mô hình bộ nhớ đệm từ TF Hub

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ột mô hình được tải xuống dưới dạng kho lưu trữ nén và được lưu vào bộ nhớ đệm trên đĩa. Thứ hai, các mô hình có thể được đọc trực tiếp từ bộ lưu trữ từ xa vào TensorFlow. Dù bằng cách nào, các lệnh gọi đến hàm tensorflow_hub trong mã Python thực tế có thể và nên tiếp tục sử dụng URL tfhub.dev chuẩn của các mô hình, có thể di động trên các hệ thống và có thể điều hướng để lấy tài liệu. Trong trường hợp hiếm hoi mà mã người dùng cần vị trí hệ thống tệp thực tế (sau khi tải xuống và giải nén hoặc sau khi phân giải một trình xử lý 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) .

Bộ nhớ đệm của các bản tải xuống đã nén

Thư viện tensorflow_hub theo mặc định 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à được giải nén. Chế độ này được khuyến nghị cho hầu hết các môi trường, ngoại trừ khi dung lượng ổ đĩa khan hiếm nhưng băng thông và độ trễ mạng rất cao.

Vị trí tải xuống mặc định là thư mục tạm thời cục bộ nhưng có thể được tùy chỉnh bằng cách đặt biến môi trường TFHUB_CACHE_DIR (được khuyến nghị) hoặc bằng cách chuyển cờ dòng lệnh --tfhub_cache_dir . Vị trí bộ đệm mặc định /tmp/tfhub_modules (hoặc bất cứ thứ gì os.path.join(tempfile.gettempdir(), "tfhub_modules") được đánh giá) sẽ hoạt động trong hầu hết các trường hợp.

Thay vào đó, người dùng thích lưu vào bộ nhớ đệm liên tục 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 bash shell 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 một vị trí cố định, hãy lưu ý rằng không có tính năng dọn dẹp tự động.

Đọc 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ộ lưu trữ từ xa (GCS) thay vì tải xuống các mô hình cục bộ bằng

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 các môi trường cung cấp ít dung lượng ổ đĩa nhưng có 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 thời gian chạy TPU do khối lượng công việc tính toán được ủy quyền cho một máy khác không có quyền truy cập vào vị trí bộ đệm theo mặc định. Có hai cách giải quyết cho tình huống này:

1) Sử dụng nhóm GCS mà nhân viên TPU có thể truy cập

Giải pháp đơn giản nhất là hướng dẫn thư viện tensorflow_hub đọc các mô hình từ nhóm GCS của TF Hub như đã giải thích ở trên. Thay vào đó, người dùng có nhóm GCS riêng có thể chỉ định một thư mục trong nhóm của họ làm vị trí bộ đệm với mã như

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 lần đọc qua máy chủ Colab

Một cách giải quyết khác là chuyển hướng tất cả các lần đọc (kể cả 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ề các thẻ điều khiển hợp lệ tại đây .