16 #ifndef TENSORFLOW_SERVING_SERVABLES_TENSORFLOW_SERVABLE_H_
17 #define TENSORFLOW_SERVING_SERVABLES_TENSORFLOW_SERVABLE_H_
24 #include "absl/functional/any_invocable.h"
25 #include "absl/status/status.h"
26 #include "absl/status/statusor.h"
27 #include "absl/strings/string_view.h"
28 #include "tensorflow/core/protobuf/config.pb.h"
29 #include "tensorflow_serving/apis/classification.pb.h"
30 #include "tensorflow_serving/apis/get_model_metadata.pb.h"
31 #include "tensorflow_serving/apis/inference.pb.h"
32 #include "tensorflow_serving/apis/predict.pb.h"
33 #include "tensorflow_serving/apis/regression.pb.h"
34 #include "tensorflow_serving/servables/tensorflow/run_options.h"
36 namespace tensorflow {
39 inline constexpr absl::string_view kSignatureDef =
"signature_def";
53 virtual absl::Status ProcessRequest(
const PredictRequest& request) = 0;
56 virtual absl::Status Close() = 0;
68 absl::AnyInvocable<absl::Status(
const PredictRequest&)> f);
70 absl::Status ProcessRequest(
const PredictRequest& request)
final;
71 absl::Status Close()
final;
74 absl::AnyInvocable<absl::Status(
const PredictRequest&)> f_;
75 bool one_request_received_ =
false;
82 Servable(absl::string_view name, int64_t version,
bool is_critical =
false)
83 : name_(std::string(name)),
85 is_critical_(is_critical) {}
90 absl::string_view name()
const {
return name_; }
93 int64_t version()
const {
return version_; }
95 bool IsCritical()
const {
return is_critical_; }
99 virtual absl::Status Classify(
const RunOptions& run_options,
100 const ClassificationRequest& request,
101 ClassificationResponse* response) = 0;
103 virtual absl::Status Regress(
const RunOptions& run_options,
104 const RegressionRequest& request,
105 RegressionResponse* response) = 0;
107 virtual absl::Status Predict(
const RunOptions& run_options,
108 const PredictRequest& request,
109 PredictResponse* response) = 0;
123 virtual absl::StatusOr<std::unique_ptr<PredictStreamedContext>>
124 PredictStreamed(
const RunOptions& run_options,
125 absl::AnyInvocable<
void(absl::StatusOr<PredictResponse>)>
126 response_callback) = 0;
128 virtual absl::Status MultiInference(
const RunOptions& run_options,
129 const MultiInferenceRequest& request,
130 MultiInferenceResponse* response) = 0;
132 virtual absl::Status GetModelMetadata(
const GetModelMetadataRequest& request,
133 GetModelMetadataResponse* response) = 0;
144 virtual bool SupportsPaging()
const;
156 virtual absl::Status Suspend();
166 virtual absl::Status Resume();
171 const std::string name_;
172 const int64_t version_;
173 const bool is_critical_;
188 absl::Status Classify(
const RunOptions& run_options,
189 const ClassificationRequest& request,
190 ClassificationResponse* response)
override {
194 absl::Status Regress(
const RunOptions& run_options,
195 const RegressionRequest& request,
196 RegressionResponse* response)
override {
200 absl::Status Predict(
const RunOptions& run_options,
201 const PredictRequest& request,
202 PredictResponse* response)
override {
206 absl::StatusOr<std::unique_ptr<PredictStreamedContext>> PredictStreamed(
208 absl::AnyInvocable<
void(absl::StatusOr<PredictResponse>)>
213 absl::Status MultiInference(
const RunOptions& run_options,
214 const MultiInferenceRequest& request,
215 MultiInferenceResponse* response)
override {
219 absl::Status GetModelMetadata(
const GetModelMetadataRequest& request,
220 GetModelMetadataResponse* response)
override {