MCPcopy Create free account
hub / github.com/PaddlePaddle/Serving / inference

Method inference

tools/cpp_examples/demo-serving/op/general_model_op.cpp:38–227  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

36static std::once_flag g_proto_init_flag;
37
38int GeneralModelOp::inference() {
39 // request
40 const Request *req = dynamic_cast<const Request *>(get_request_message());
41
42 TensorVector *in = butil::get_object<TensorVector>();
43
44 int batch_size = req->insts_size();
45 int input_var_num = 0;
46
47 std::vector<int> elem_type;
48 std::vector<int> elem_size;
49 std::vector<int> capacity;
50
51 // infer
52 if (batch_size > 0) {
53 int var_num = req->insts(0).tensor_array_size();
54 VLOG(2) << "var num: " << var_num;
55 elem_type.resize(var_num);
56 elem_size.resize(var_num);
57 capacity.resize(var_num);
58 paddle::PaddleTensor lod_tensor;
59 for (int i = 0; i < var_num; ++i) {
60 elem_type[i] = req->insts(0).tensor_array(i).elem_type();
61 VLOG(2) << "var[" << i << "] has elem type: " << elem_type[i];
62 if (elem_type[i] == 0) { // int64
63 elem_size[i] = sizeof(int64_t);
64 lod_tensor.dtype = paddle::PaddleDType::INT64;
65 } else {
66 elem_size[i] = sizeof(float);
67 lod_tensor.dtype = paddle::PaddleDType::FLOAT32;
68 }
69
70 if (req->insts(0).tensor_array(i).shape(0) == -1) {
71 lod_tensor.lod.resize(1);
72 lod_tensor.lod[0].push_back(0);
73 VLOG(2) << "var[" << i << "] is lod_tensor";
74 } else {
75 lod_tensor.shape.push_back(batch_size);
76 capacity[i] = 1;
77 for (int k = 0; k < req->insts(0).tensor_array(i).shape_size(); ++k) {
78 int dim = req->insts(0).tensor_array(i).shape(k);
79 VLOG(2) << "shape for var[" << i << "]: " << dim;
80 capacity[i] *= dim;
81 lod_tensor.shape.push_back(dim);
82 }
83 VLOG(2) << "var[" << i << "] is tensor, capacity: " << capacity[i];
84 }
85 if (i == 0) {
86 lod_tensor.name = "words";
87 } else {
88 lod_tensor.name = "label";
89 }
90 in->push_back(lod_tensor);
91 }
92
93 for (int i = 0; i < var_num; ++i) {
94 if (in->at(i).lod.size() == 1) {
95 for (int j = 0; j < batch_size; ++j) {

Callers

nothing calls this directly

Calls 8

push_backMethod · 0.80
ResizeMethod · 0.80
add_dataMethod · 0.80
resizeMethod · 0.45
sizeMethod · 0.45
dataMethod · 0.45
inferMethod · 0.45
clearMethod · 0.45

Tested by

no test coverage detected