Giao thức lưu trữ mô hình

Tài liệu này mô tả các quy ước URL được sử dụng khi lưu trữ tất cả các loại mô hình trên các mô hình tfhub.dev - TFJS, TF Lite và TensorFlow. Nó cũng mô tả giao thức dựa trên HTTP(S) do thư viện tensorflow_hub triển khai để tải các mô hình TensorFlow từ tfhub.dev và các dịch vụ tương thích vào các chương trình TensorFlow.

Tính năng chính của nó là sử dụng cùng một URL trong mã để tải mô hình và trong trình duyệt để xem tài liệu mô hình.

Quy ước chung về URL

tfhub.dev hỗ trợ các định dạng URL sau:

  • Nhà xuất bản TF Hub theo dõi <a href="https://tfhub.dev/">https://tfhub.dev/</a><publisher>
  • Các bộ sưu tập của TF Hub theo dõi <a href="https://tfhub.dev/">https://tfhub.dev/</a><publisher>/collection/<collection_name>
  • Các mô hình TF Hub có url được phiên bản <a href="https://tfhub.dev/">https://tfhub.dev/</a><publisher>/<model_name>/<version> và url không được phiên bản <a href="https://tfhub.dev/">https://tfhub.dev/</a><publisher>/<model_name> chuyển sang phiên bản mới nhất của mô hình.

Các mô hình TF Hub có thể được tải xuống dưới dạng nội dung nén bằng cách thêm các tham số URL vào URL mô hình tfhub.dev . Tuy nhiên, các tham số URL cần thiết để đạt được điều đó tùy thuộc vào loại mô hình:

  • Các mô hình TensorFlow (cả hai định dạng SavingModel và TF1 Hub): nối thêm ?tf-hub-format=compressed vào url mô hình TensorFlow.
  • Các mô hình TFJS: nối ?tfjs-format=compressed vào url mô hình TFJS để tải xuống tệp đã nén hoặc /model.json?tfjs-format=file để đọc nếu từ bộ nhớ từ xa.
  • Các mô hình TF Lite: nối ?lite-format=tflite vào url mô hình TF Lite.

Ví dụ:

Kiểu URL mô hình Loại tải xuống thông số URL URL tải xuống
TensorFlow (SavedModel, định dạng TF1 Hub) https://tfhub.dev/google/spice/2 .tar.gz ?tf-hub-format=đã nén https://tfhub.dev/google/spice/2?tf-hub-format=compression
TF Lite https://tfhub.dev/google/lite-model/spice/1 .tflite ?lite-format=tflite https://tfhub.dev/google/lite-model/spice/1?lite-format=tflite
TF.js https://tfhub.dev/google/tfjs-model/spice/2/default/1 .tar.gz ?tfjs-format=đã nén https://tfhub.dev/google/tfjs-model/spice/2/default/1?tfjs-format=compression

Ngoài ra, một số kiểu máy cũng được lưu trữ ở định dạng có thể đọc trực tiếp từ bộ nhớ từ xa mà không cần tải xuống. Điều này đặc biệt hữu ích nếu không có sẵn bộ nhớ cục bộ, chẳng hạn như chạy mô hình TF.js trong trình duyệt hoặc tải SavingModel trên Colab . Xin lưu ý rằng các mô hình đọc được lưu trữ từ xa mà không được tải xuống cục bộ có thể làm tăng độ trễ.

Kiểu URL mô hình Kiểu phản hồi thông số URL URL yêu cầu
TensorFlow (SavedModel, định dạng TF1 Hub) https://tfhub.dev/google/spice/2 Chuỗi (Đường dẫn đến thư mục GCS nơi lưu trữ mô hình không nén) ?tf-hub-format=không nén https://tfhub.dev/google/spice/2?tf-hub-format=uncompression
TF.js https://tfhub.dev/google/tfjs-model/spice/2/default/1 .json ?tfjs-format=tập tin https://tfhub.dev/google/tfjs-model/spice/2/default/1/model.json?tfjs-format=file

giao thức thư viện tensorflow_hub

Phần này mô tả cách chúng tôi lưu trữ các mô hình trên tfhub.dev để sử dụng với thư viện tensorflow_hub. Nếu bạn muốn lưu trữ kho lưu trữ mô hình của riêng mình để hoạt động với thư viện tensorflow_hub, thì dịch vụ phân phối HTTP(s) của bạn phải cung cấp cách triển khai giao thức này.

Lưu ý rằng phần này không đề cập đến việc lưu trữ các mô hình TF Lite và TFJS vì chúng không được tải xuống qua thư viện tensorflow_hub . Để biết thêm thông tin về việc lưu trữ các loại mô hình này, vui lòng kiểm tra ở trên .

Lưu trữ nén

Các mô hình được lưu trữ trên tfhub.dev dưới dạng tệp tar.gz được nén. Theo mặc định, thư viện tensorflow_hub tự động tải xuống mô hình nén. Chúng cũng có thể được tải xuống theo cách thủ công bằng cách thêm ?tf-hub-format=compressed vào url mô hình, ví dụ:

wget https://tfhub.dev/tensorflow/albert_en_xxlarge/1?tf-hub-format=compressed

Thư mục gốc của kho lưu trữ là thư mục gốc của thư mục mô hình và phải chứa SavingModel, như trong ví dụ này:

# Create a compressed model from a SavedModel directory.
$ tar -cz -f model.tar.gz --owner=0 --group=0 -C /tmp/export-model/ .

# Inspect files inside a compressed model
$ tar -tf model.tar.gz
./
./variables/
./variables/variables.data-00000-of-00001
./variables/variables.index
./assets/
./saved_model.pb

Tarball để sử dụng với định dạng Hub TF1 cũ cũng sẽ chứa tệp ./tfhub_module.pb .

Khi một trong các API tải mô hình thư viện tensorflow_hub được gọi ( hub. KerasLayer , hub.load , v.v.), thư viện sẽ tải xuống mô hình, giải nén mô hình và lưu vào bộ nhớ đệm cục bộ. Thư viện tensorflow_hub yêu cầu các URL mô hình được lập phiên bản và nội dung mô hình của một phiên bản nhất định là không thay đổi, do đó nó có thể được lưu vào bộ nhớ đệm vô thời hạn. Tìm hiểu thêm về các mô hình bộ nhớ đệm .

Lưu trữ không nén

Khi biến môi trường TFHUB_MODEL_LOAD_FORMAT hoặc cờ dòng lệnh --tfhub_model_load_format được đặt thành UNCOMPRESSED , mô hình sẽ được đọc trực tiếp từ bộ nhớ từ xa (GCS) thay vì được tải xuống và giải nén cục bộ. Khi hành vi này được bật, thư viện sẽ thêm ?tf-hub-format=uncompressed vào URL mô hình. Yêu cầu đó trả về đường dẫn đến thư mục trên GCS chứa các tệp mô hình không nén. Như một ví dụ,
<a href="https://tfhub.dev/google/spice/2?tf-hub-format=uncompressed">https://tfhub.dev/google/spice/2?tf-hub-format=uncompressed</a>
trả lại
gs://tfhub-modules/google/spice/2/uncompressed trong nội dung phản hồi 303. Sau đó, thư viện sẽ đọc mô hình từ đích GCS đó.