未验证 提交 e9e93be2 编写于 作者: 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,42 +102,75 @@ int CTRPredictionOp::inference() { ...@@ -102,42 +102,75 @@ 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) {
std::string table_name; LOG(ERROR) << "Sparse param service info not found for model "
if (kvinfo->sparse_param_service_type != configure::EngineDesc::NONE) { << CTR_PREDICTION_MODEL_NAME
table_name = kvinfo->sparse_param_service_table_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;
if (kvinfo->sparse_param_service_type != configure::EngineDesc::NONE) {
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
} else if (kvinfo->sparse_param_service_type == LOG(ERROR) << "Local kv service not supported for model "
configure::EngineDesc::REMOTE) { << CTR_PREDICTION_MODEL_NAME;
int ret = cube->seek(table_name, keys, &values);
if (ret != 0) { fill_response_with_message(
fill_response_with_message(res, -1, "Query cube for embeddings error"); res, -1, "Local kv service not supported for this model");
LOG(ERROR) << "Query cube for embeddings error"; return 0;
return -1; } else if (kvinfo->sparse_param_service_type ==
} configure::EngineDesc::REMOTE) {
int ret = cube->seek(table_name, keys, &values);
if (ret != 0) {
fill_response_with_message(res, -1, "Query cube for embeddings error");
LOG(ERROR) << "Query cube for embeddings error";
return 0;
} }
}
#if 0 if (values.size() != keys.size()) {
for (int i = 0; i < keys.size(); ++i) { LOG(ERROR) << "Sparse embeddings not ready; "
std::ostringstream oss; << "maybe forgot to set sparse_param_service_type and "
oss << keys[i] << ": "; << "sparse_param_sevice_table_name for "
const char *value = (values[i].buff.data()); << CTR_PREDICTION_MODEL_NAME
if (values[i].buff.size() != << " in conf/model_toolkit.prototxt";
sizeof(float) * CTR_PREDICTION_EMBEDDING_SIZE) { fill_response_with_message(
LOG(WARNING) << "Key " << keys[i] << " has values less than " res, -1, "Sparse param service not configured properly");
<< CTR_PREDICTION_EMBEDDING_SIZE; return 0;
} }
for (int i = 0; i < keys.size(); ++i) {
std::ostringstream oss;
oss << keys[i] << ": ";
const char *value = (values[i].buff.data());
if (values[i].buff.size() !=
sizeof(float) * CTR_PREDICTION_EMBEDDING_SIZE) {
LOG(WARNING) << "Key " << keys[i] << " has values less than "
<< 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.
先完成此消息的编辑!
想要评论请 注册