@@ -156,6 +156,7 @@ void print_params(SDParams params) {
156156 printf (" negative_prompt: %s\n " , params.negative_prompt .c_str ());
157157 printf (" min_cfg: %.2f\n " , params.min_cfg );
158158 printf (" cfg_scale: %.2f\n " , params.cfg_scale );
159+ printf (" slg_scale: %.2f\n " , params.slg_scale );
159160 printf (" guidance: %.2f\n " , params.guidance );
160161 printf (" clip_skip: %d\n " , params.clip_skip );
161162 printf (" width: %d\n " , params.width );
@@ -202,11 +203,12 @@ void print_usage(int argc, const char* argv[]) {
202203 printf (" -p, --prompt [PROMPT] the prompt to render\n " );
203204 printf (" -n, --negative-prompt PROMPT the negative prompt (default: \"\" )\n " );
204205 printf (" --cfg-scale SCALE unconditional guidance scale: (default: 7.0)\n " );
205- printf (" --slg enable skip layer guidance (CFG variant)\n " );
206- printf (" --skip_layers LAYERS Layers to skip for skip layer CFG (requires --slg): (default: [7,8,9])\n " );
207- printf (" --slg-scale SCALE skip layer guidance scale (requires --slg): (default: 2.5)\n " );
208- printf (" --skip_layer_start START skip layer enabling point (* steps) (requires --slg): (default: 0.01)\n " );
209- printf (" --skip_layer_end END skip layer enabling point (* steps) (requires --slg): (default: 0.2)\n " );
206+ printf (" --slg-scale SCALE skip layer guidance (SLG) scale, only for DiT models: (default: 0)\n " );
207+ printf (" 0 means disabled, a value of 2.5 is nice for sd3.5 medium\n " );
208+ printf (" --skip_layers LAYERS Layers to skip for SLG steps: (default: [7,8,9])\n " );
209+ printf (" --skip_layer_start START SLG enabling point: (default: 0.01)\n " );
210+ printf (" --skip_layer_end END SLG disabling point: (default: 0.2)\n " );
211+ printf (" SLG will be enabled at step int([STEPS]*[START]) and disabled at int([STEPS]*[END])\n " );
210212 printf (" --strength STRENGTH strength for noising/unnoising (default: 0.75)\n " );
211213 printf (" --style-ratio STYLE-RATIO strength for keeping input identity (default: 20%%)\n " );
212214 printf (" --control-strength STRENGTH strength to apply Control Net (default: 0.9)\n " );
@@ -233,7 +235,6 @@ void print_usage(int argc, const char* argv[]) {
233235
234236void parse_args (int argc, const char ** argv, SDParams& params) {
235237 bool invalid_arg = false ;
236- bool cfg_skip = false ;
237238 std::string arg;
238239 for (int i = 1 ; i < argc; i++) {
239240 arg = argv[i];
@@ -545,8 +546,12 @@ void parse_args(int argc, const char** argv, SDParams& params) {
545546 params.verbose = true ;
546547 } else if (arg == " --color" ) {
547548 params.color = true ;
548- } else if (arg == " --slg" ) {
549- cfg_skip = true ;
549+ } else if (arg == " --slg-scale" ) {
550+ if (++i >= argc) {
551+ invalid_arg = true ;
552+ break ;
553+ }
554+ params.slg_scale = std::stof (argv[i]);
550555 } else if (arg == " --skip-layers" ) {
551556 if (++i >= argc) {
552557 invalid_arg = true ;
@@ -584,12 +589,6 @@ void parse_args(int argc, const char** argv, SDParams& params) {
584589 if (invalid_arg) {
585590 break ;
586591 }
587- } else if (arg == " --slg-scale" ) {
588- if (++i >= argc) {
589- invalid_arg = true ;
590- break ;
591- }
592- params.slg_scale = std::stof (argv[i]);
593592 } else if (arg == " --skip-layer-start" ) {
594593 if (++i >= argc) {
595594 invalid_arg = true ;
@@ -617,11 +616,6 @@ void parse_args(int argc, const char** argv, SDParams& params) {
617616 params.n_threads = get_num_physical_cores ();
618617 }
619618
620- if (!cfg_skip) {
621- // set skip_layers to empty
622- params.skip_layers .clear ();
623- }
624-
625619 if (params.mode != CONVERT && params.mode != IMG2VID && params.prompt .length () == 0 ) {
626620 fprintf (stderr, " error: the following arguments are required: prompt\n " );
627621 print_usage (argc, argv);
@@ -697,6 +691,16 @@ std::string get_image_params(SDParams params, int64_t seed) {
697691 }
698692 parameter_string += " Steps: " + std::to_string (params.sample_steps ) + " , " ;
699693 parameter_string += " CFG scale: " + std::to_string (params.cfg_scale ) + " , " ;
694+ if (params.slg_scale != 0 && params.skip_layers .size () != 0 ) {
695+ parameter_string += " SLG scale: " + std::to_string (params.cfg_scale ) + " , " ;
696+ parameter_string += " Skip layers: [" ;
697+ for (const auto & layer : params.skip_layers ) {
698+ parameter_string += std::to_string (layer) + " , " ;
699+ }
700+ parameter_string += " ], " ;
701+ parameter_string += " Skip layer start: " + std::to_string (params.skip_layer_start ) + " , " ;
702+ parameter_string += " Skip layer end: " + std::to_string (params.skip_layer_end ) + " , " ;
703+ }
700704 parameter_string += " Guidance: " + std::to_string (params.guidance ) + " , " ;
701705 parameter_string += " Seed: " + std::to_string (seed) + " , " ;
702706 parameter_string += " Size: " + std::to_string (params.width ) + " x" + std::to_string (params.height ) + " , " ;
0 commit comments