Khách quan
Tài liệu này cung cấp các ví dụ về cách sử dụng dự kiến của SignatureDefs trong SavedModel ánh xạ tới các API của TensorFlow Serving.
Tổng quat
Một SignatureDef định nghĩa chữ ký của một tính toán được hỗ trợ trong một đồ thị TensorFlow. SignatureDefs nhằm mục đích để cung cấp hỗ trợ tổng quát để xác định đầu vào và đầu ra của một chức năng và có thể được chỉ định khi xây dựng một SavedModel .
Lý lịch
TF-xuất khẩu và SessionBundle sử dụng chữ ký đó cũng tương tự như trong khái niệm nhưng người dùng cần thiết để phân biệt giữa tên và chữ ký mặc định để cho họ được lấy ra một cách chính xác khi một tải. Đối với những người sử dụng trước đó TF-xuất khẩu / SessionBundle, Signatures
vào TF-xuất khẩu sẽ được thay thế bởi SignatureDefs
trong SavedModel.
Cấu trúc SignatureDef
Một SignatureDef yêu cầu đặc tả:
-
inputs
như bản đồ về chuỗi TensorInfo. -
outputs
như một bản đồ của chuỗi để TensorInfo. -
method_name
(mà tương ứng với một tên phương pháp hỗ trợ trong việc tải công cụ / hệ thống).
Lưu ý rằng TensorInfo bản thân đòi hỏi đặc điểm kỹ thuật của tên, dtype và hình dạng tensor. Trong khi thông tin về tensor đã có trong biểu đồ, sẽ rất hữu ích khi xác định rõ ràng TensorInfo như một phần của SignatureDef vì các công cụ sau đó có thể thực hiện xác thực chữ ký, v.v. mà không cần phải đọc định nghĩa biểu đồ.
Hằng số và utils liên quan
Để dễ dàng sử dụng lại và chia sẻ trên các công cụ và hệ thống, các hằng số thường được sử dụng liên quan đến SignatureDefs sẽ được hỗ trợ trong Cung cấp TensorFlow được định nghĩa là hằng số. Đặc biệt:
Bên cạnh đó, SavedModel cung cấp một util để giúp xây dựng một chữ ký-def.
Cấu trúc mẫu
TensorFlow Serving cung cấp các API cấp cao để thực hiện suy luận. Để bật các API này, các mô hình phải bao gồm một hoặc nhiều SignatureDef xác định các nút TensorFlow chính xác để sử dụng cho đầu vào và đầu ra. Xem bên dưới để biết ví dụ về các SignatureDef cụ thể mà TensorFlow Serving hỗ trợ cho từng API.
Lưu ý rằng Cung cấp TensorFlow phụ thuộc vào các khóa của mỗi TensorInfo (trong các đầu vào và đầu ra của SignatureDef), cũng như tên_mục của SignatureDef. Nội dung thực tế của TensorInfo dành riêng cho biểu đồ của bạn.
Phân loại SignatureDef
Phân loại SignatureDefs hỗ trợ các lệnh gọi có cấu trúc tới API phân loại của Dịch vụ TensorFlow. Những quy định rằng phải có một inputs
tensor, và rằng có hai tùy chọn tensors đầu ra: classes
và scores
, ít nhất là một trong số đó phải có mặt.
signature_def: {
key : "my_classification_signature"
value: {
inputs: {
key : "inputs"
value: {
name: "tf_example:0"
dtype: DT_STRING
tensor_shape: ...
}
}
outputs: {
key : "classes"
value: {
name: "index_to_string:0"
dtype: DT_STRING
tensor_shape: ...
}
}
outputs: {
key : "scores"
value: {
name: "TopKV2:0"
dtype: DT_FLOAT
tensor_shape: ...
}
}
method_name: "tensorflow/serving/classify"
}
}
Dự đoán SignatureDef
Dự đoán các lệnh gọi hỗ trợ SignatureDefs tới API Dự đoán của Dịch vụ TensorFlow. Các chữ ký này cho phép bạn hỗ trợ linh hoạt nhiều Tensors đầu vào và đầu ra. Đối với ví dụ dưới đây, chữ ký my_prediction_signature
có một đầu vào logic tensor đơn images
được ánh xạ tới các tensor thực tế trong đồ thị của bạn x:0
.
Dự đoán SignatureDefs cho phép tính di động trên các mô hình. Đây có nghĩa là bạn có thể trao đổi trong SavedModels khác nhau, có thể với tên tensor tiềm ẩn khác nhau (ví dụ như thay vì x:0
có lẽ bạn có một mô hình thay thế mới với một tensor z:0
), trong khi khách hàng của bạn có thể ở lại trực tuyến liên tục truy vấn cũ và mới phiên bản của mô hình này mà không có thay đổi phía máy khách.
Dự đoán SignatureDefs cũng cho phép bạn thêm các Tensors bổ sung tùy chọn vào đầu ra, mà bạn có thể truy vấn rõ ràng. Hãy nói rằng ngoài việc là chìa khóa đầu ra bên dưới của scores
, bạn cũng muốn lấy một lớp tổng hợp để gỡ lỗi hoặc các mục đích khác. Trong trường hợp đó, bạn sẽ chỉ cần thêm một tensor bổ sung với một chìa khóa như pool
và giá trị thích hợp.
signature_def: {
key : "my_prediction_signature"
value: {
inputs: {
key : "images"
value: {
name: "x:0"
dtype: ...
tensor_shape: ...
}
}
outputs: {
key : "scores"
value: {
name: "y:0"
dtype: ...
tensor_shape: ...
}
}
method_name: "tensorflow/serving/predict"
}
}
Regression SignatureDef
Regression SignatureDefs hỗ trợ các lệnh gọi có cấu trúc tới API hồi quy của TensorFlow Serving. Những quy định rằng phải có chính xác một inputs
tensor, và một outputs
tensor.
signature_def: {
key : "my_regression_signature"
value: {
inputs: {
key : "inputs"
value: {
name: "x_input_examples_tensor_0"
dtype: ...
tensor_shape: ...
}
}
outputs: {
key : "outputs"
value: {
name: "y_outputs_0"
dtype: DT_FLOAT
tensor_shape: ...
}
}
method_name: "tensorflow/serving/regress"
}
}