Skip to content

Commit 02dd5e5

Browse files
authored
refactor: move VAE tiling parameters to SDGenerationParams (#1261)
1 parent 8f2967c commit 02dd5e5

3 files changed

Lines changed: 78 additions & 78 deletions

File tree

examples/cli/main.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -750,7 +750,7 @@ int main(int argc, const char* argv[]) {
750750
gen_params.pm_id_embed_path.c_str(),
751751
gen_params.pm_style_strength,
752752
}, // pm_params
753-
ctx_params.vae_tiling_params,
753+
gen_params.vae_tiling_params,
754754
gen_params.cache_params,
755755
};
756756

@@ -776,7 +776,7 @@ int main(int argc, const char* argv[]) {
776776
gen_params.seed,
777777
gen_params.video_frames,
778778
gen_params.vace_strength,
779-
ctx_params.vae_tiling_params,
779+
gen_params.vae_tiling_params,
780780
gen_params.cache_params,
781781
};
782782

examples/common/common.hpp

Lines changed: 73 additions & 73 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

@@ -576,18 +575,9 @@ struct SDContextParams {
576575
&chroma_t5_mask_pad},
577576
};
578577

579-
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},
584-
};
578+
options.float_options = {};
585579

586580
options.bool_options = {
587-
{"",
588-
"--vae-tiling",
589-
"process vae in tiles to reduce memory usage",
590-
true, &vae_tiling_params.enabled},
591581
{"",
592582
"--force-sdxl-vae-conv-scale",
593583
"force use of conv scale on sdxl vae",
@@ -724,52 +714,6 @@ struct SDContextParams {
724714
return 1;
725715
};
726716

727-
auto on_tile_size_arg = [&](int argc, const char** argv, int index) {
728-
if (++index >= argc) {
729-
return -1;
730-
}
731-
std::string tile_size_str = argv[index];
732-
size_t x_pos = tile_size_str.find('x');
733-
try {
734-
if (x_pos != std::string::npos) {
735-
std::string tile_x_str = tile_size_str.substr(0, x_pos);
736-
std::string tile_y_str = tile_size_str.substr(x_pos + 1);
737-
vae_tiling_params.tile_size_x = std::stoi(tile_x_str);
738-
vae_tiling_params.tile_size_y = std::stoi(tile_y_str);
739-
} else {
740-
vae_tiling_params.tile_size_x = vae_tiling_params.tile_size_y = std::stoi(tile_size_str);
741-
}
742-
} catch (const std::invalid_argument&) {
743-
return -1;
744-
} catch (const std::out_of_range&) {
745-
return -1;
746-
}
747-
return 1;
748-
};
749-
750-
auto on_relative_tile_size_arg = [&](int argc, const char** argv, int index) {
751-
if (++index >= argc) {
752-
return -1;
753-
}
754-
std::string rel_size_str = argv[index];
755-
size_t x_pos = rel_size_str.find('x');
756-
try {
757-
if (x_pos != std::string::npos) {
758-
std::string rel_x_str = rel_size_str.substr(0, x_pos);
759-
std::string rel_y_str = rel_size_str.substr(x_pos + 1);
760-
vae_tiling_params.rel_size_x = std::stof(rel_x_str);
761-
vae_tiling_params.rel_size_y = std::stof(rel_y_str);
762-
} else {
763-
vae_tiling_params.rel_size_x = vae_tiling_params.rel_size_y = std::stof(rel_size_str);
764-
}
765-
} catch (const std::invalid_argument&) {
766-
return -1;
767-
} catch (const std::out_of_range&) {
768-
return -1;
769-
}
770-
return 1;
771-
};
772-
773717
options.manual_options = {
774718
{"",
775719
"--type",
@@ -796,14 +740,6 @@ struct SDContextParams {
796740
"but it usually offers faster inference speed and, in some cases, lower memory usage. "
797741
"The at_runtime mode, on the other hand, is exactly the opposite.",
798742
on_lora_apply_mode_arg},
799-
{"",
800-
"--vae-tile-size",
801-
"tile size for vae tiling, format [X]x[Y] (default: 32x32)",
802-
on_tile_size_arg},
803-
{"",
804-
"--vae-relative-tile-size",
805-
"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)",
806-
on_relative_tile_size_arg},
807743
};
808744

809745
return options;
@@ -917,13 +853,6 @@ struct SDContextParams {
917853
<< " chroma_t5_mask_pad: " << chroma_t5_mask_pad << ",\n"
918854
<< " prediction: " << sd_prediction_name(prediction) << ",\n"
919855
<< " lora_apply_mode: " << sd_lora_apply_mode_name(lora_apply_mode) << ",\n"
920-
<< " vae_tiling_params: { "
921-
<< vae_tiling_params.enabled << ", "
922-
<< vae_tiling_params.tile_size_x << ", "
923-
<< vae_tiling_params.tile_size_y << ", "
924-
<< vae_tiling_params.target_overlap << ", "
925-
<< vae_tiling_params.rel_size_x << ", "
926-
<< vae_tiling_params.rel_size_y << " },\n"
927856
<< " force_sdxl_vae_conv_scale: " << (force_sdxl_vae_conv_scale ? "true" : "false") << "\n"
928857
<< "}";
929858
return oss.str();
@@ -1061,6 +990,8 @@ struct SDGenerationParams {
1061990

1062991
int64_t seed = 42;
1063992

993+
sd_tiling_params_t vae_tiling_params = {false, 0, 0, 0.5f, 0.0f, 0.0f};
994+
1064995
// Photo Maker
1065996
std::string pm_id_images_dir;
1066997
std::string pm_id_embed_path;
@@ -1251,6 +1182,10 @@ struct SDGenerationParams {
12511182
"--vace-strength",
12521183
"wan vace strength",
12531184
&vace_strength},
1185+
{"",
1186+
"--vae-tile-overlap",
1187+
"tile overlap for vae tiling, in fraction of tile size (default: 0.5)",
1188+
&vae_tiling_params.target_overlap},
12541189
};
12551190

12561191
options.bool_options = {
@@ -1264,6 +1199,10 @@ struct SDGenerationParams {
12641199
"disable auto resize of ref images",
12651200
false,
12661201
&auto_resize_ref_image},
1202+
{"",
1203+
"--vae-tiling",
1204+
"process vae in tiles to reduce memory usage",
1205+
true, &vae_tiling_params.enabled},
12671206
};
12681207

12691208
auto on_seed_arg = [&](int argc, const char** argv, int index) {
@@ -1460,6 +1399,52 @@ struct SDGenerationParams {
14601399
return 1;
14611400
};
14621401

1402+
auto on_tile_size_arg = [&](int argc, const char** argv, int index) {
1403+
if (++index >= argc) {
1404+
return -1;
1405+
}
1406+
std::string tile_size_str = argv[index];
1407+
size_t x_pos = tile_size_str.find('x');
1408+
try {
1409+
if (x_pos != std::string::npos) {
1410+
std::string tile_x_str = tile_size_str.substr(0, x_pos);
1411+
std::string tile_y_str = tile_size_str.substr(x_pos + 1);
1412+
vae_tiling_params.tile_size_x = std::stoi(tile_x_str);
1413+
vae_tiling_params.tile_size_y = std::stoi(tile_y_str);
1414+
} else {
1415+
vae_tiling_params.tile_size_x = vae_tiling_params.tile_size_y = std::stoi(tile_size_str);
1416+
}
1417+
} catch (const std::invalid_argument&) {
1418+
return -1;
1419+
} catch (const std::out_of_range&) {
1420+
return -1;
1421+
}
1422+
return 1;
1423+
};
1424+
1425+
auto on_relative_tile_size_arg = [&](int argc, const char** argv, int index) {
1426+
if (++index >= argc) {
1427+
return -1;
1428+
}
1429+
std::string rel_size_str = argv[index];
1430+
size_t x_pos = rel_size_str.find('x');
1431+
try {
1432+
if (x_pos != std::string::npos) {
1433+
std::string rel_x_str = rel_size_str.substr(0, x_pos);
1434+
std::string rel_y_str = rel_size_str.substr(x_pos + 1);
1435+
vae_tiling_params.rel_size_x = std::stof(rel_x_str);
1436+
vae_tiling_params.rel_size_y = std::stof(rel_y_str);
1437+
} else {
1438+
vae_tiling_params.rel_size_x = vae_tiling_params.rel_size_y = std::stof(rel_size_str);
1439+
}
1440+
} catch (const std::invalid_argument&) {
1441+
return -1;
1442+
} catch (const std::out_of_range&) {
1443+
return -1;
1444+
}
1445+
return 1;
1446+
};
1447+
14631448
options.manual_options = {
14641449
{"-s",
14651450
"--seed",
@@ -1511,6 +1496,14 @@ struct SDGenerationParams {
15111496
"--scm-policy",
15121497
"SCM policy: 'dynamic' (default) or 'static'",
15131498
on_scm_policy_arg},
1499+
{"",
1500+
"--vae-tile-size",
1501+
"tile size for vae tiling, format [X]x[Y] (default: 32x32)",
1502+
on_tile_size_arg},
1503+
{"",
1504+
"--vae-relative-tile-size",
1505+
"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)",
1506+
on_relative_tile_size_arg},
15141507

15151508
};
15161509

@@ -1946,6 +1939,13 @@ struct SDGenerationParams {
19461939
<< " seed: " << seed << ",\n"
19471940
<< " upscale_repeats: " << upscale_repeats << ",\n"
19481941
<< " upscale_tile_size: " << upscale_tile_size << ",\n"
1942+
<< " vae_tiling_params: { "
1943+
<< vae_tiling_params.enabled << ", "
1944+
<< vae_tiling_params.tile_size_x << ", "
1945+
<< vae_tiling_params.tile_size_y << ", "
1946+
<< vae_tiling_params.target_overlap << ", "
1947+
<< vae_tiling_params.rel_size_x << ", "
1948+
<< vae_tiling_params.rel_size_y << " },\n"
19491949
<< "}";
19501950
free(sample_params_str);
19511951
free(high_noise_sample_params_str);

examples/server/main.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -525,7 +525,7 @@ int main(int argc, const char** argv) {
525525
gen_params.pm_id_embed_path.c_str(),
526526
gen_params.pm_style_strength,
527527
}, // pm_params
528-
ctx_params.vae_tiling_params,
528+
gen_params.vae_tiling_params,
529529
gen_params.cache_params,
530530
};
531531

@@ -772,7 +772,7 @@ int main(int argc, const char** argv) {
772772
gen_params.pm_id_embed_path.c_str(),
773773
gen_params.pm_style_strength,
774774
}, // pm_params
775-
ctx_params.vae_tiling_params,
775+
gen_params.vae_tiling_params,
776776
gen_params.cache_params,
777777
};
778778

@@ -1088,7 +1088,7 @@ int main(int argc, const char** argv) {
10881088
gen_params.pm_id_embed_path.c_str(),
10891089
gen_params.pm_style_strength,
10901090
}, // pm_params
1091-
ctx_params.vae_tiling_params,
1091+
gen_params.vae_tiling_params,
10921092
gen_params.cache_params,
10931093
};
10941094

0 commit comments

Comments
 (0)