Skip to content

Commit ca744d0

Browse files
committed
refactor slg cli args
1 parent e5567a6 commit ca744d0

File tree

1 file changed

+23
-19
lines changed

1 file changed

+23
-19
lines changed

examples/cli/main.cpp

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -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

234236
void 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

Comments
 (0)