Skip to content

Commit 8c10750

Browse files
committed
refactor: move VAE tiling parameters to SDGenerationParams
1 parent f0f641a commit 8c10750

3 files changed

Lines changed: 77 additions & 76 deletions

File tree

examples/cli/main.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -735,7 +735,7 @@ int main(int argc, const char* argv[]) {
735735
gen_params.pm_id_embed_path.c_str(),
736736
gen_params.pm_style_strength,
737737
}, // pm_params
738-
ctx_params.vae_tiling_params,
738+
gen_params.vae_tiling_params,
739739
gen_params.cache_params,
740740
};
741741

@@ -761,7 +761,7 @@ int main(int argc, const char* argv[]) {
761761
gen_params.seed,
762762
gen_params.video_frames,
763763
gen_params.vace_strength,
764-
ctx_params.vae_tiling_params,
764+
gen_params.vae_tiling_params,
765765
gen_params.cache_params,
766766
};
767767

examples/common/common.hpp

Lines changed: 72 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -475,8 +475,7 @@ struct SDContextParams {
475475
prediction_t prediction = PREDICTION_COUNT;
476476
lora_apply_mode_t lora_apply_mode = LORA_APPLY_AUTO;
477477

478-
sd_tiling_params_t vae_tiling_params = {false, 0, 0, 0.5f, 0.0f, 0.0f};
479-
bool force_sdxl_vae_conv_scale = false;
478+
bool force_sdxl_vae_conv_scale = false;
480479

481480
float flow_shift = INFINITY;
482481

@@ -577,21 +576,13 @@ struct SDContextParams {
577576
};
578577

579578
options.float_options = {
580-
{"",
581-
"--vae-tile-overlap",
582-
"tile overlap for vae tiling, in fraction of tile size (default: 0.5)",
583-
&vae_tiling_params.target_overlap},
584579
{"",
585580
"--flow-shift",
586581
"shift value for Flow models like SD3.x or WAN (default: auto)",
587582
&flow_shift},
588583
};
589584

590585
options.bool_options = {
591-
{"",
592-
"--vae-tiling",
593-
"process vae in tiles to reduce memory usage",
594-
true, &vae_tiling_params.enabled},
595586
{"",
596587
"--force-sdxl-vae-conv-scale",
597588
"force use of conv scale on sdxl vae",
@@ -728,52 +719,6 @@ struct SDContextParams {
728719
return 1;
729720
};
730721

731-
auto on_tile_size_arg = [&](int argc, const char** argv, int index) {
732-
if (++index >= argc) {
733-
return -1;
734-
}
735-
std::string tile_size_str = argv[index];
736-
size_t x_pos = tile_size_str.find('x');
737-
try {
738-
if (x_pos != std::string::npos) {
739-
std::string tile_x_str = tile_size_str.substr(0, x_pos);
740-
std::string tile_y_str = tile_size_str.substr(x_pos + 1);
741-
vae_tiling_params.tile_size_x = std::stoi(tile_x_str);
742-
vae_tiling_params.tile_size_y = std::stoi(tile_y_str);
743-
} else {
744-
vae_tiling_params.tile_size_x = vae_tiling_params.tile_size_y = std::stoi(tile_size_str);
745-
}
746-
} catch (const std::invalid_argument&) {
747-
return -1;
748-
} catch (const std::out_of_range&) {
749-
return -1;
750-
}
751-
return 1;
752-
};
753-
754-
auto on_relative_tile_size_arg = [&](int argc, const char** argv, int index) {
755-
if (++index >= argc) {
756-
return -1;
757-
}
758-
std::string rel_size_str = argv[index];
759-
size_t x_pos = rel_size_str.find('x');
760-
try {
761-
if (x_pos != std::string::npos) {
762-
std::string rel_x_str = rel_size_str.substr(0, x_pos);
763-
std::string rel_y_str = rel_size_str.substr(x_pos + 1);
764-
vae_tiling_params.rel_size_x = std::stof(rel_x_str);
765-
vae_tiling_params.rel_size_y = std::stof(rel_y_str);
766-
} else {
767-
vae_tiling_params.rel_size_x = vae_tiling_params.rel_size_y = std::stof(rel_size_str);
768-
}
769-
} catch (const std::invalid_argument&) {
770-
return -1;
771-
} catch (const std::out_of_range&) {
772-
return -1;
773-
}
774-
return 1;
775-
};
776-
777722
options.manual_options = {
778723
{"",
779724
"--type",
@@ -800,14 +745,6 @@ struct SDContextParams {
800745
"but it usually offers faster inference speed and, in some cases, lower memory usage. "
801746
"The at_runtime mode, on the other hand, is exactly the opposite.",
802747
on_lora_apply_mode_arg},
803-
{"",
804-
"--vae-tile-size",
805-
"tile size for vae tiling, format [X]x[Y] (default: 32x32)",
806-
on_tile_size_arg},
807-
{"",
808-
"--vae-relative-tile-size",
809-
"relative tile size for vae tiling, format [X]x[Y], in fraction of image size if < 1, in number of tiles per dim if >=1 (overrides --vae-tile-size)",
810-
on_relative_tile_size_arg},
811748
};
812749

813750
return options;
@@ -922,13 +859,6 @@ struct SDContextParams {
922859
<< " chroma_t5_mask_pad: " << chroma_t5_mask_pad << ",\n"
923860
<< " prediction: " << sd_prediction_name(prediction) << ",\n"
924861
<< " lora_apply_mode: " << sd_lora_apply_mode_name(lora_apply_mode) << ",\n"
925-
<< " vae_tiling_params: { "
926-
<< vae_tiling_params.enabled << ", "
927-
<< vae_tiling_params.tile_size_x << ", "
928-
<< vae_tiling_params.tile_size_y << ", "
929-
<< vae_tiling_params.target_overlap << ", "
930-
<< vae_tiling_params.rel_size_x << ", "
931-
<< vae_tiling_params.rel_size_y << " },\n"
932862
<< " force_sdxl_vae_conv_scale: " << (force_sdxl_vae_conv_scale ? "true" : "false") << "\n"
933863
<< "}";
934864
return oss.str();
@@ -1068,6 +998,8 @@ struct SDGenerationParams {
1068998

1069999
int64_t seed = 42;
10701000

1001+
sd_tiling_params_t vae_tiling_params = {false, 0, 0, 0.5f, 0.0f, 0.0f};
1002+
10711003
// Photo Maker
10721004
std::string pm_id_images_dir;
10731005
std::string pm_id_embed_path;
@@ -1254,6 +1186,10 @@ struct SDGenerationParams {
12541186
"--vace-strength",
12551187
"wan vace strength",
12561188
&vace_strength},
1189+
{"",
1190+
"--vae-tile-overlap",
1191+
"tile overlap for vae tiling, in fraction of tile size (default: 0.5)",
1192+
&vae_tiling_params.target_overlap},
12571193
};
12581194

12591195
options.bool_options = {
@@ -1267,6 +1203,10 @@ struct SDGenerationParams {
12671203
"disable auto resize of ref images",
12681204
false,
12691205
&auto_resize_ref_image},
1206+
{"",
1207+
"--vae-tiling",
1208+
"process vae in tiles to reduce memory usage",
1209+
true, &vae_tiling_params.enabled},
12701210
};
12711211

12721212
auto on_seed_arg = [&](int argc, const char** argv, int index) {
@@ -1478,6 +1418,52 @@ struct SDGenerationParams {
14781418
return 1;
14791419
};
14801420

1421+
auto on_tile_size_arg = [&](int argc, const char** argv, int index) {
1422+
if (++index >= argc) {
1423+
return -1;
1424+
}
1425+
std::string tile_size_str = argv[index];
1426+
size_t x_pos = tile_size_str.find('x');
1427+
try {
1428+
if (x_pos != std::string::npos) {
1429+
std::string tile_x_str = tile_size_str.substr(0, x_pos);
1430+
std::string tile_y_str = tile_size_str.substr(x_pos + 1);
1431+
vae_tiling_params.tile_size_x = std::stoi(tile_x_str);
1432+
vae_tiling_params.tile_size_y = std::stoi(tile_y_str);
1433+
} else {
1434+
vae_tiling_params.tile_size_x = vae_tiling_params.tile_size_y = std::stoi(tile_size_str);
1435+
}
1436+
} catch (const std::invalid_argument&) {
1437+
return -1;
1438+
} catch (const std::out_of_range&) {
1439+
return -1;
1440+
}
1441+
return 1;
1442+
};
1443+
1444+
auto on_relative_tile_size_arg = [&](int argc, const char** argv, int index) {
1445+
if (++index >= argc) {
1446+
return -1;
1447+
}
1448+
std::string rel_size_str = argv[index];
1449+
size_t x_pos = rel_size_str.find('x');
1450+
try {
1451+
if (x_pos != std::string::npos) {
1452+
std::string rel_x_str = rel_size_str.substr(0, x_pos);
1453+
std::string rel_y_str = rel_size_str.substr(x_pos + 1);
1454+
vae_tiling_params.rel_size_x = std::stof(rel_x_str);
1455+
vae_tiling_params.rel_size_y = std::stof(rel_y_str);
1456+
} else {
1457+
vae_tiling_params.rel_size_x = vae_tiling_params.rel_size_y = std::stof(rel_size_str);
1458+
}
1459+
} catch (const std::invalid_argument&) {
1460+
return -1;
1461+
} catch (const std::out_of_range&) {
1462+
return -1;
1463+
}
1464+
return 1;
1465+
};
1466+
14811467
options.manual_options = {
14821468
{"-s",
14831469
"--seed",
@@ -1533,6 +1519,14 @@ struct SDGenerationParams {
15331519
"--scm-policy",
15341520
"SCM policy: 'dynamic' (default) or 'static'",
15351521
on_scm_policy_arg},
1522+
{"",
1523+
"--vae-tile-size",
1524+
"tile size for vae tiling, format [X]x[Y] (default: 32x32)",
1525+
on_tile_size_arg},
1526+
{"",
1527+
"--vae-relative-tile-size",
1528+
"relative tile size for vae tiling, format [X]x[Y], in fraction of image size if < 1, in number of tiles per dim if >=1 (overrides --vae-tile-size)",
1529+
on_relative_tile_size_arg},
15361530

15371531
};
15381532

@@ -1974,6 +1968,13 @@ struct SDGenerationParams {
19741968
<< " seed: " << seed << ",\n"
19751969
<< " upscale_repeats: " << upscale_repeats << ",\n"
19761970
<< " upscale_tile_size: " << upscale_tile_size << ",\n"
1971+
<< " vae_tiling_params: { "
1972+
<< vae_tiling_params.enabled << ", "
1973+
<< vae_tiling_params.tile_size_x << ", "
1974+
<< vae_tiling_params.tile_size_y << ", "
1975+
<< vae_tiling_params.target_overlap << ", "
1976+
<< vae_tiling_params.rel_size_x << ", "
1977+
<< vae_tiling_params.rel_size_y << " },\n"
19771978
<< "}";
19781979
free(sample_params_str);
19791980
free(high_noise_sample_params_str);

examples/server/main.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -500,7 +500,7 @@ int main(int argc, const char** argv) {
500500
gen_params.pm_id_embed_path.c_str(),
501501
gen_params.pm_style_strength,
502502
}, // pm_params
503-
ctx_params.vae_tiling_params,
503+
gen_params.vae_tiling_params,
504504
gen_params.cache_params,
505505
};
506506

@@ -716,7 +716,7 @@ int main(int argc, const char** argv) {
716716
gen_params.pm_id_embed_path.c_str(),
717717
gen_params.pm_style_strength,
718718
}, // pm_params
719-
ctx_params.vae_tiling_params,
719+
gen_params.vae_tiling_params,
720720
gen_params.cache_params,
721721
};
722722

@@ -1003,7 +1003,7 @@ int main(int argc, const char** argv) {
10031003
gen_params.pm_id_embed_path.c_str(),
10041004
gen_params.pm_style_strength,
10051005
}, // pm_params
1006-
ctx_params.vae_tiling_params,
1006+
gen_params.vae_tiling_params,
10071007
gen_params.cache_params,
10081008
};
10091009

0 commit comments

Comments
 (0)