gateway.proto 3.4 KB
Newer Older
B
barriery 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
// Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

syntax = "proto3";
package baidu.paddle_serving.pipeline_serving;
T
TeslaZhao 已提交
17
option go_package = "./;pipeline_serving";
B
barriery 已提交
18 19 20

import "google/api/annotations.proto";

21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
// Tensor structure, consistent with PADDLE variable types.
// Descriptions of input and output data.
message Tensor {

  // VarType: INT64
  repeated int64 int64_data = 1;

  // VarType: FP32, FP16
  repeated float float_data = 2;

  // VarType: INT32, INT16, INT8
  repeated int32 int_data = 3;

  // VarType: FP64
  repeated double float64_data = 4;

  // VarType: BF16, UINT8
  repeated uint32 uint32_data = 5;

  // VarType: BOOL
  repeated bool bool_data = 6;

  // (No support)VarType: COMPLEX64, 2x represents the real part, 2x+1
  // represents the imaginary part
  repeated float complex64_data = 7;

  // (No support)VarType: COMPLEX128, 2x represents the real part, 2x+1
  // represents the imaginary part
  repeated double complex128_data = 8;

  // VarType: STRING
  repeated string str_data = 9;

  // Element types:
  //   0 => INT64
  //   1 => FP32
  //   2 => INT32
  //   3 => FP64
  //   4 => INT16
  //   5 => FP16
  //   6 => BF16
  //   7 => UINT8
  //   8 => INT8
  //   9 => BOOL
  //  10 => COMPLEX64
  //  11 => COMPLEX128
  //  12 => STRING
  int32 elem_type = 10;

  // Shape of the tensor, including batch dimensions.
  repeated int32 shape = 11;

  // Level of data(LOD), support variable length data, only for fetch tensor
  // currently.
  repeated int32 lod = 12;

  // Correspond to the variable 'name' in the model description prototxt.
  string name = 13;
};

// The structure of the service request. The input data can be repeated string
// pairs or tensors.
message Request {
  // The input data are repeated string pairs.
  // for examples. key is "words", value is the string of words.
  repeated string key = 1;
  repeated string value = 2;

  // The input data are repeated tensors for complex data structures.
  // Becase tensors can save more data information and reduce the amount of data
  // transferred.
  repeated Tensor tensors = 3;

  // The name field in the RESTful API
  string name = 4;

  // The method field in the RESTful API
  string method = 5;

  // For tracing requests and logs
  int64 logid = 6;

  // For tracking sources
  string clientip = 7;
};

// The structure of the service response. The output data can be repeated string
// pairs or tensors.
B
barriery 已提交
109
message Response {
110
  // Error code
T
TeslaZhao 已提交
111
  int32 err_no = 1;
112 113

  // Error messages
T
TeslaZhao 已提交
114
  string err_msg = 2;
115 116

  // The results of string pairs
117 118
  repeated string key = 3;
  repeated string value = 4;
B
barriery 已提交
119

120 121
  // The results of tensors
  repeated Tensor tensors = 5;
T
TeslaZhao 已提交
122
};
B
barriery 已提交
123

124
// Python pipeline service
B
barriery 已提交
125 126 127
service PipelineService {
  rpc inference(Request) returns (Response) {
    option (google.api.http) = {
T
TeslaZhao 已提交
128
      post : "/{name=*}/{method=*}"
B
barriery 已提交
129 130 131 132
      body : "*"
    };
  }
};