@@ -158,6 +158,7 @@ void print_params(SDParams params) {
158158 printf (" negative_prompt: %s\n " , params.negative_prompt .c_str ());
159159 printf (" min_cfg: %.2f\n " , params.min_cfg );
160160 printf (" cfg_scale: %.2f\n " , params.cfg_scale );
161+ printf (" slg_scale: %.2f\n " , params.slg_scale );
161162 printf (" guidance: %.2f\n " , params.guidance );
162163 printf (" clip_skip: %d\n " , params.clip_skip );
163164 printf (" width: %d\n " , params.width );
@@ -206,11 +207,12 @@ void print_usage(int argc, const char* argv[]) {
206207 printf (" -p, --prompt [PROMPT] the prompt to render\n " );
207208 printf (" -n, --negative-prompt PROMPT the negative prompt (default: \"\" )\n " );
208209 printf (" --cfg-scale SCALE unconditional guidance scale: (default: 7.0)\n " );
209- printf (" --slg enable skip layer guidance (CFG variant)\n " );
210- printf (" --skip_layers LAYERS Layers to skip for skip layer CFG (requires --slg): (default: [7,8,9])\n " );
211- printf (" --slg-scale SCALE skip layer guidance scale (requires --slg): (default: 2.5)\n " );
212- printf (" --skip_layer_start START skip layer enabling point (* steps) (requires --slg): (default: 0.01)\n " );
213- printf (" --skip_layer_end END skip layer enabling point (* steps) (requires --slg): (default: 0.2)\n " );
210+ printf (" --slg-scale SCALE skip layer guidance (SLG) scale, only for DiT models: (default: 0)\n " );
211+ printf (" 0 means disabled, a value of 2.5 is nice for sd3.5 medium\n " );
212+ printf (" --skip_layers LAYERS Layers to skip for SLG steps: (default: [7,8,9])\n " );
213+ printf (" --skip_layer_start START SLG enabling point: (default: 0.01)\n " );
214+ printf (" --skip_layer_end END SLG disabling point: (default: 0.2)\n " );
215+ printf (" SLG will be enabled at step int([STEPS]*[START]) and disabled at int([STEPS]*[END])\n " );
214216 printf (" --strength STRENGTH strength for noising/unnoising (default: 0.75)\n " );
215217 printf (" --style-ratio STYLE-RATIO strength for keeping input identity (default: 20%%)\n " );
216218 printf (" --control-strength STRENGTH strength to apply Control Net (default: 0.9)\n " );
@@ -237,7 +239,6 @@ void print_usage(int argc, const char* argv[]) {
237239
238240void parse_args (int argc, const char ** argv, SDParams& params) {
239241 bool invalid_arg = false ;
240- bool cfg_skip = false ;
241242 std::string arg;
242243 for (int i = 1 ; i < argc; i++) {
243244 arg = argv[i];
@@ -574,8 +575,12 @@ void parse_args(int argc, const char** argv, SDParams& params) {
574575 params.verbose = true ;
575576 } else if (arg == " --color" ) {
576577 params.color = true ;
577- } else if (arg == " --slg" ) {
578- cfg_skip = true ;
578+ } else if (arg == " --slg-scale" ) {
579+ if (++i >= argc) {
580+ invalid_arg = true ;
581+ break ;
582+ }
583+ params.slg_scale = std::stof (argv[i]);
579584 } else if (arg == " --skip-layers" ) {
580585 if (++i >= argc) {
581586 invalid_arg = true ;
@@ -613,12 +618,6 @@ void parse_args(int argc, const char** argv, SDParams& params) {
613618 if (invalid_arg) {
614619 break ;
615620 }
616- } else if (arg == " --slg-scale" ) {
617- if (++i >= argc) {
618- invalid_arg = true ;
619- break ;
620- }
621- params.slg_scale = std::stof (argv[i]);
622621 } else if (arg == " --skip-layer-start" ) {
623622 if (++i >= argc) {
624623 invalid_arg = true ;
@@ -646,11 +645,6 @@ void parse_args(int argc, const char** argv, SDParams& params) {
646645 params.n_threads = get_num_physical_cores ();
647646 }
648647
649- if (!cfg_skip) {
650- // set skip_layers to empty
651- params.skip_layers .clear ();
652- }
653-
654648 if (params.mode != CONVERT && params.mode != IMG2VID && params.prompt .length () == 0 ) {
655649 fprintf (stderr, " error: the following arguments are required: prompt\n " );
656650 print_usage (argc, argv);
@@ -726,6 +720,16 @@ std::string get_image_params(SDParams params, int64_t seed) {
726720 }
727721 parameter_string += " Steps: " + std::to_string (params.sample_steps ) + " , " ;
728722 parameter_string += " CFG scale: " + std::to_string (params.cfg_scale ) + " , " ;
723+ if (params.slg_scale != 0 && params.skip_layers .size () != 0 ) {
724+ parameter_string += " SLG scale: " + std::to_string (params.cfg_scale ) + " , " ;
725+ parameter_string += " Skip layers: [" ;
726+ for (const auto & layer : params.skip_layers ) {
727+ parameter_string += std::to_string (layer) + " , " ;
728+ }
729+ parameter_string += " ], " ;
730+ parameter_string += " Skip layer start: " + std::to_string (params.skip_layer_start ) + " , " ;
731+ parameter_string += " Skip layer end: " + std::to_string (params.skip_layer_end ) + " , " ;
732+ }
729733 parameter_string += " Guidance: " + std::to_string (params.guidance ) + " , " ;
730734 parameter_string += " Seed: " + std::to_string (seed) + " , " ;
731735 parameter_string += " Size: " + std::to_string (params.width ) + " x" + std::to_string (params.height ) + " , " ;
0 commit comments