@@ -250,9 +250,7 @@ EncodedImage llava_image_embed_make_with_bytes_slice(clip_ctx& ctx_clip, const o
250
250
tgt_sizes_data[1 ] = resized_source_size.width ;
251
251
encoder.set_tensor (" tgt_sizes" , tgt_sizes);
252
252
encoder.infer ();
253
- const ov::Tensor& output_tensor = encoder.get_output_tensor ();
254
- ov::Tensor resized_source{output_tensor.get_element_type (), output_tensor.get_shape ()};
255
- output_tensor.copy_to (resized_source);
253
+ const ov::Tensor& resized_source = encoder.get_output_tensor ();
256
254
257
255
if (1 == preprocessed.size ()) {
258
256
return {std::move (resized_source), resized_source_size};
@@ -266,9 +264,6 @@ EncodedImage llava_image_embed_make_with_bytes_slice(clip_ctx& ctx_clip, const o
266
264
size_t n_patches = size.height / patch_size * size.width / patch_size,
267
265
old_hidden_size = resized_source.get_shape ().at (2 );
268
266
ov::Tensor encoded_slices{ov::element::f32, {preprocessed.size () - 1 , preprocessed.at (1 ).size (), n_patches, old_hidden_size}};
269
- // там внутри есть какая-то операция которая констант фолдит батч и из-за этого нельзя использовать отличный от того что был при экспорте
270
- // констант фолдит она его в торч скрипте
271
- // Even though batch can't be used, it's still possible to use async.
272
267
for (size_t row = 1 ; row < preprocessed.size (); ++row) {
273
268
for (size_t col = 0 ; col < preprocessed.at (row).size (); ++col) {
274
269
clip_image_f32& elem = preprocessed.at (row).at (col);
@@ -289,6 +284,8 @@ EncodedImage llava_image_embed_make_with_bytes_slice(clip_ctx& ctx_clip, const o
289
284
encoder.infer ();
290
285
}
291
286
}
287
+ // Override prev output tensor that doesn't own memory.
288
+ encoder.set_output_tensor (resized_source);
292
289
return {resized_source, resized_source_size, encoded_slices, sliced_sizes};
293
290
}
294
291
}
0 commit comments