@@ -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);
0 commit comments