Skip to content

Commit 36f9bd4

Browse files
committed
apg: add SD_LOG_CFG_DELTA_NORM
1 parent 8408ee1 commit 36f9bd4

File tree

1 file changed

+16
-2
lines changed

1 file changed

+16
-2
lines changed

stable-diffusion.cpp

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -977,7 +977,18 @@ class StableDiffusionGGML {
977977

978978
float* deltas = vec_denoised;
979979

980-
// https://arxiv.org/pdf/2410.02416
980+
// APG: https://arxiv.org/pdf/2410.02416
981+
982+
bool log_cfg_norm = false;
983+
const char* SD_LOG_CFG_DELTA_NORM = getenv("SD_LOG_CFG_DELTA_NORM");
984+
if (SD_LOG_CFG_DELTA_NORM != nullptr) {
985+
std::string sd_log_cfg_norm_str = SD_LOG_CFG_DELTA_NORM;
986+
if (sd_log_cfg_norm_str == "ON" || sd_log_cfg_norm_str == "TRUE") {
987+
log_cfg_norm = true;
988+
} else if (sd_log_cfg_norm_str != "OFF" && sd_log_cfg_norm_str != "FALSE") {
989+
LOG_WARN("SD_LOG_CFG_DELTA_NORM environment variable has unexpected value. Assuming default (\"OFF\"). (Expected \"ON\"/\"TRUE\" or\"OFF\"/\"FALSE\", got \"%s\")", SD_LOG_CFG_DELTA_NORM);
990+
}
991+
}
981992
float apg_scale_factor = 1.;
982993
float diff_norm = 0;
983994
float cond_norm_sq = 0;
@@ -989,7 +1000,7 @@ class StableDiffusionGGML {
9891000
delta += apg_params.momentum * apg_momentum_buffer[i];
9901001
apg_momentum_buffer[i] = delta;
9911002
}
992-
if (apg_params.norm_treshold > 0) {
1003+
if (apg_params.norm_treshold > 0 || log_cfg_norm) {
9931004
diff_norm += delta * delta;
9941005
}
9951006
if (apg_params.eta != 1.0f) {
@@ -998,6 +1009,9 @@ class StableDiffusionGGML {
9981009
}
9991010
deltas[i] = delta;
10001011
}
1012+
if(log_cfg_norm){
1013+
LOG_INFO("CFG Delta norm: %.2f", sqrtf(diff_norm));
1014+
}
10011015
if (apg_params.norm_treshold > 0) {
10021016
diff_norm = sqrtf(diff_norm);
10031017
if (apg_params.norm_treshold_smoothing <= 0) {

0 commit comments

Comments
 (0)