@@ -198,40 +198,18 @@ OVExeNetwork OVCore::ImportModel(std::istream& model_stream,
198
198
auto obj = core.import_model (model_stream, hw_target, device_config);
199
199
exe = OVExeNetwork (obj, hw_target);
200
200
} else {
201
- // Get path to bin file
202
- std::string bin_file;
201
+ // If the model is XML, we need to load it with the XML content in read_model()
202
+ // where weights from bin file is directly consumed
203
+ std::string xml_file_name = name;
203
204
if (name.size () >= 5 && name.substr (name.size () - 5 ) == " .onnx" ) {
204
- bin_file = name;
205
- bin_file .replace (name.size () - 5 , 5 , " .bin " );
205
+ xml_file_name = name;
206
+ xml_file_name .replace (name.size () - 5 , 5 , " .xml " );
206
207
} else {
207
208
throw std::runtime_error (" Invalid model name. Make sure *.onnx, *.xml, and *.bin carry the same name." );
208
209
}
209
210
210
- // Read the model XML into a string
211
- std::stringstream xml_stream;
212
- xml_stream << model_stream.rdbuf ();
213
- std::string xml_content = xml_stream.str ();
214
-
215
- // Read model.bin into a vector
216
- std::ifstream bin_stream;
217
- bin_stream.open (bin_file, std::ios::binary);
218
- if (!bin_stream.is_open ()) {
219
- throw std::runtime_error (" Failed to open " + bin_file);
220
- }
221
-
222
- bin_stream.seekg (0 , std::ios::end);
223
- std::streamsize size = bin_stream.tellg ();
224
- bin_stream.seekg (0 , std::ios::beg);
225
- std::vector<uint8_t > bin_data (size);
226
- if (!bin_stream.read (reinterpret_cast <char *>(bin_data.data ()), size)) {
227
- throw std::runtime_error (" Failed to read binary data from " + bin_file);
228
- }
229
-
230
- // Create an ov::Tensor for weights
231
- ov::Tensor weights_tensor (ov::element::u8 , {bin_data.size ()}, bin_data.data ());
232
-
233
- // Load the model explicitly with XML content and weights
234
- std::shared_ptr<ov::Model> model = core.read_model (xml_content, weights_tensor);
211
+ // Load the model explicitly with XML contents
212
+ std::shared_ptr<ov::Model> model = core.read_model (xml_file_name);
235
213
236
214
if (enable_causallm) {
237
215
exe = OVCore::Get ()->StatefulCompileModel (model, hw_target, device_config);
0 commit comments