model config
| 197 | |
| 198 | // model config |
| 199 | int Resource::general_model_initialize(const std::string& path, |
| 200 | const std::string& file) { |
| 201 | if (this->_cube_config_fullpath.size() != 0) { |
| 202 | LOG(INFO) << "init cube by config file : " << this->_cube_config_fullpath; |
| 203 | rec::mcube::CubeAPI* cube = rec::mcube::CubeAPI::instance(); |
| 204 | int ret = cube->init(this->_cube_config_fullpath.c_str()); |
| 205 | if (ret != 0) { |
| 206 | LOG(ERROR) << "cube init error"; |
| 207 | return -1; |
| 208 | } |
| 209 | } |
| 210 | VLOG(2) << "general model path: " << path; |
| 211 | VLOG(2) << "general model file: " << file; |
| 212 | if (!FLAGS_enable_general_model) { |
| 213 | LOG(ERROR) << "general model is not enabled"; |
| 214 | return -1; |
| 215 | } |
| 216 | ResourceConf resource_conf; |
| 217 | if (configure::read_proto_conf(path, file, &resource_conf) != 0) { |
| 218 | LOG(ERROR) << "Failed initialize resource from: " << path << "/" << file; |
| 219 | return -1; |
| 220 | } |
| 221 | size_t general_model_num = resource_conf.general_model_path_size(); |
| 222 | for (size_t gi = 0; gi < general_model_num; ++gi) { |
| 223 | std::string general_model_path = resource_conf.general_model_path(gi); |
| 224 | std::string general_model_file = resource_conf.general_model_file(gi); |
| 225 | |
| 226 | GeneralModelConfig model_config; |
| 227 | if (configure::read_proto_conf(general_model_path.c_str(), |
| 228 | general_model_file.c_str(), |
| 229 | &model_config) != 0) { |
| 230 | LOG(ERROR) << "Failed initialize model config from: " |
| 231 | << general_model_path << "/" << general_model_file; |
| 232 | return -1; |
| 233 | } |
| 234 | auto _config = std::make_shared<PaddleGeneralModelConfig>(); |
| 235 | int feed_var_num = model_config.feed_var_size(); |
| 236 | VLOG(2) << "load general model config"; |
| 237 | VLOG(2) << "feed var num: " << feed_var_num; |
| 238 | _config->_feed_name.resize(feed_var_num); |
| 239 | _config->_feed_alias_name.resize(feed_var_num); |
| 240 | _config->_feed_type.resize(feed_var_num); |
| 241 | _config->_is_lod_feed.resize(feed_var_num); |
| 242 | _config->_capacity.resize(feed_var_num); |
| 243 | _config->_feed_shape.resize(feed_var_num); |
| 244 | for (int i = 0; i < feed_var_num; ++i) { |
| 245 | _config->_feed_name[i] = model_config.feed_var(i).name(); |
| 246 | _config->_feed_alias_name[i] = model_config.feed_var(i).alias_name(); |
| 247 | VLOG(2) << "feed var[" << i << "]: " << _config->_feed_name[i]; |
| 248 | VLOG(2) << "feed var[" << i << "]: " << _config->_feed_alias_name[i]; |
| 249 | _config->_feed_type[i] = model_config.feed_var(i).feed_type(); |
| 250 | VLOG(2) << "feed type[" << i << "]: " << _config->_feed_type[i]; |
| 251 | |
| 252 | if (model_config.feed_var(i).is_lod_tensor()) { |
| 253 | VLOG(2) << "var[" << i << "] is lod tensor"; |
| 254 | _config->_feed_shape[i] = {-1}; |
| 255 | _config->_is_lod_feed[i] = true; |
| 256 | } else { |