提交 3633d2a8 编写于 作者: W Wang Guibao 提交者: GitHub

Merge pull request #38 from wangguibao/ctr_model_serving

Fix ctr_prediction op
...@@ -28,4 +28,6 @@ engines { ...@@ -28,4 +28,6 @@ engines {
runtime_thread_num: 0 runtime_thread_num: 0
batch_infer_size: 0 batch_infer_size: 0
enable_batch_align: 0 enable_batch_align: 0
sparse_param_service_type: REMOTE
sparse_param_service_table_name: "dict"
} }
...@@ -102,25 +102,58 @@ int CTRPredictionOp::inference() { ...@@ -102,25 +102,58 @@ int CTRPredictionOp::inference() {
predictor::KVManager &kv_manager = predictor::KVManager::instance(); predictor::KVManager &kv_manager = predictor::KVManager::instance();
const predictor::KVInfo *kvinfo = const predictor::KVInfo *kvinfo =
kv_manager.get_kv_info(CTR_PREDICTION_MODEL_NAME); kv_manager.get_kv_info(CTR_PREDICTION_MODEL_NAME);
if (kvinfo != NULL) { if (kvinfo == NULL) {
LOG(ERROR) << "Sparse param service info not found for model "
<< CTR_PREDICTION_MODEL_NAME
<< ". Maybe forgot to specify sparse_param_service_type and "
<< "sparse_param_service_table_name in "
<< "conf/model_toolkit.prototxt";
fill_response_with_message(res, -1, "Sparse param service info not found");
return 0;
}
std::string table_name; std::string table_name;
if (kvinfo->sparse_param_service_type != configure::EngineDesc::NONE) { if (kvinfo->sparse_param_service_type != configure::EngineDesc::NONE) {
table_name = kvinfo->sparse_param_service_table_name; table_name = kvinfo->sparse_param_service_table_name;
if (table_name.empty()) {
LOG(ERROR) << "sparse_param_service_table_name not specified. "
<< "Please specify it in conf/model_toolkit.protxt for model "
<< CTR_PREDICTION_MODEL_NAME;
fill_response_with_message(
res, -1, "sparse_param_service_table_name not specified");
return 0;
}
} }
if (kvinfo->sparse_param_service_type == configure::EngineDesc::LOCAL) { if (kvinfo->sparse_param_service_type == configure::EngineDesc::LOCAL) {
// Query local KV service // Query local KV service
LOG(ERROR) << "Local kv service not supported for model "
<< CTR_PREDICTION_MODEL_NAME;
fill_response_with_message(
res, -1, "Local kv service not supported for this model");
return 0;
} else if (kvinfo->sparse_param_service_type == } else if (kvinfo->sparse_param_service_type ==
configure::EngineDesc::REMOTE) { configure::EngineDesc::REMOTE) {
int ret = cube->seek(table_name, keys, &values); int ret = cube->seek(table_name, keys, &values);
if (ret != 0) { if (ret != 0) {
fill_response_with_message(res, -1, "Query cube for embeddings error"); fill_response_with_message(res, -1, "Query cube for embeddings error");
LOG(ERROR) << "Query cube for embeddings error"; LOG(ERROR) << "Query cube for embeddings error";
return -1; return 0;
} }
} }
#if 0 if (values.size() != keys.size()) {
LOG(ERROR) << "Sparse embeddings not ready; "
<< "maybe forgot to set sparse_param_service_type and "
<< "sparse_param_sevice_table_name for "
<< CTR_PREDICTION_MODEL_NAME
<< " in conf/model_toolkit.prototxt";
fill_response_with_message(
res, -1, "Sparse param service not configured properly");
return 0;
}
for (int i = 0; i < keys.size(); ++i) { for (int i = 0; i < keys.size(); ++i) {
std::ostringstream oss; std::ostringstream oss;
oss << keys[i] << ": "; oss << keys[i] << ": ";
...@@ -131,13 +164,13 @@ int CTRPredictionOp::inference() { ...@@ -131,13 +164,13 @@ int CTRPredictionOp::inference() {
<< CTR_PREDICTION_EMBEDDING_SIZE; << CTR_PREDICTION_EMBEDDING_SIZE;
} }
#if 0
for (int j = 0; j < values[i].buff.size(); ++j) { for (int j = 0; j < values[i].buff.size(); ++j) {
oss << std::hex << std::uppercase << std::setw(2) << std::setfill('0') oss << std::hex << std::uppercase << std::setw(2) << std::setfill('0')
<< (static_cast<int>(value[j]) & 0xff); << (static_cast<int>(value[j]) & 0xff);
} }
LOG(INFO) << oss.str().c_str(); LOG(INFO) << oss.str().c_str();
}
#endif #endif
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册