From e751ae6d6f35fdd735abf3236650ecae9b6474f4 Mon Sep 17 00:00:00 2001 From: leejet Date: Fri, 12 Sep 2025 00:32:16 +0800 Subject: [PATCH] fix the processing of vace_context --- ggml | 2 +- ggml_extend.hpp | 15 +++++++++++++++ stable-diffusion.cpp | 4 +--- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/ggml b/ggml index c46da31..5fdc78f 160000 --- a/ggml +++ b/ggml @@ -1 +1 @@ -Subproject commit c46da318b9b6730806196ef7fff67c8160a74c8e +Subproject commit 5fdc78fff274094e2a1b155928131983362d8a71 diff --git a/ggml_extend.hpp b/ggml_extend.hpp index 25835b1..390fc49 100644 --- a/ggml_extend.hpp +++ b/ggml_extend.hpp @@ -255,6 +255,21 @@ __STATIC_INLINE__ void ggml_tensor_iter( } } + +__STATIC_INLINE__ void ggml_tensor_diff( + ggml_tensor* a, + ggml_tensor* b, + float gap = 0.1f) { + GGML_ASSERT(ggml_nelements(a) == ggml_nelements(b)); + ggml_tensor_iter(a, [&] (ggml_tensor* a, int64_t i0, int64_t i1, int64_t i2, int64_t i3) { + float a_value = ggml_tensor_get_f32(a, i0, i1, i2, i3); + float b_value = ggml_tensor_get_f32(b, i0, i1, i2, i3); + if (abs(a_value - b_value) > gap) { + LOG_WARN("[%ld, %ld, %ld, %ld] %f %f", i3, i2, i1, i0, a_value, b_value); + } + }); +} + __STATIC_INLINE__ ggml_tensor* load_tensor_from_file(ggml_context* ctx, const std::string& file_path) { std::ifstream file(file_path, std::ios::binary); if (!file.is_open()) { diff --git a/stable-diffusion.cpp b/stable-diffusion.cpp index 1e220ba..e269508 100644 --- a/stable-diffusion.cpp +++ b/stable-diffusion.cpp @@ -2579,7 +2579,7 @@ SD_API sd_image_t* generate_video(sd_ctx_t* sd_ctx, const sd_vid_gen_params_t* s if (i3 < 16) { value = ggml_tensor_get_f32(inactive, i0, i1, i2 - ref_image_num, i3); } else { - value = ggml_tensor_get_f32(reactive, i0, i1, i2 - ref_image_num, i3); + value = ggml_tensor_get_f32(reactive, i0, i1, i2 - ref_image_num, i3 - 16); } } } else { // mask @@ -2598,8 +2598,6 @@ SD_API sd_image_t* generate_video(sd_ctx_t* sd_ctx, const sd_vid_gen_params_t* s LOG_INFO("encode_first_stage completed, taking %" PRId64 " ms", t2 - t1); } - print_ggml_tensor(vace_context); - if (init_latent == NULL) { init_latent = generate_init_latent(sd_ctx, work_ctx, width, height, frames, true); }