File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -2456,13 +2456,14 @@ struct GGMLRunner {
24562456 GGML_ASSERT (gf != nullptr );
24572457
24582458 size_t effective_budget = max_graph_vram_bytes;
2459+ size_t free_clamp = SIZE_MAX ;
24592460 if (stream_layers_enabled && max_graph_vram_bytes > 0 && runtime_backend != nullptr ) {
24602461 ggml_backend_dev_t dev = ggml_backend_get_device (runtime_backend);
24612462 if (dev != nullptr && ggml_backend_dev_type (dev) != GGML_BACKEND_DEVICE_TYPE_CPU ) {
24622463 size_t free_vram = 0 , total_vram = 0 ;
24632464 ggml_backend_dev_memory (dev, &free_vram, &total_vram);
24642465 constexpr size_t safety_margin = 512ull * 1024 * 1024 ;
2465- size_t free_clamp = (free_vram > safety_margin) ? (free_vram - safety_margin) : 0 ;
2466+ free_clamp = (free_vram > safety_margin) ? (free_vram - safety_margin) : 0 ;
24662467 if (free_clamp < effective_budget) {
24672468 LOG_DEBUG (" %s clamping streaming budget: actual free VRAM %.2f MB < user cap %.2f MB" ,
24682469 get_desc ().c_str (),
@@ -2479,7 +2480,9 @@ struct GGMLRunner {
24792480 observed_max_effective_budget_ = effective_budget;
24802481 budget_increased = true ;
24812482 } else {
2482- effective_budget = observed_max_effective_budget_;
2483+ // Keep the plan cache stable, but never plan above what is free now:
2484+ // another model or process can take VRAM after the first measurement.
2485+ effective_budget = std::min (observed_max_effective_budget_, free_clamp);
24832486 }
24842487 }
24852488
You can’t perform that action at this time.
0 commit comments