Skip to content

Commit b50e8d5

Browse files
committed
refactor slg cli args
1 parent bcc8880 commit b50e8d5

File tree

1 file changed

+23
-19
lines changed

1 file changed

+23
-19
lines changed

examples/cli/main.cpp

+23-19
Original file line numberDiff line numberDiff line change
@@ -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

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

Comments
 (0)