{"record":{"id":"a598d233f1558062","repo":"mudler/LocalAI","slug":"invalid-scheduler-using-default-s-n","errorCode":null,"errorMessage":"Invalid scheduler, using default: %s\\n","messagePattern":"Invalid scheduler, using default: (.+?)\\\\n","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"backend/go/stablediffusion-ggml/cpp/gosd.cpp","lineNumber":701,"sourceCode":"    sample_method_t sm = str_to_sample_method(sampler);\n    if (sm != SAMPLE_METHOD_COUNT) {\n        sample_method_found = (int)sm;\n        fprintf(stderr, \"Found sampler: %s\\n\", sampler);\n    }\n    if (sample_method_found == -1) {\n        sample_method_found = sd_get_default_sample_method(sd_ctx);\n        fprintf(stderr, \"Invalid sample method, using default: %s\\n\", sd_sample_method_name((sample_method_t)sample_method_found));\n    }\n    sample_method = (sample_method_t)sample_method_found;\n\n    scheduler_t sched = str_to_scheduler(scheduler_str);\n    if (sched != SCHEDULER_COUNT) {\n        scheduler = sched;\n        fprintf(stderr, \"Found scheduler: %s\\n\", scheduler_str);\n    }\n    if (scheduler == SCHEDULER_COUNT) {\n        scheduler = sd_get_default_scheduler(sd_ctx, sample_method);\n        fprintf(stderr, \"Invalid scheduler, using default: %s\\n\", sd_scheduler_name(scheduler));\n    }\n\n    sd_c = sd_ctx;\n\n    return 0;\n}\n\nvoid sd_tiling_params_set_enabled(sd_tiling_params_t *params, bool enabled) {\n    params->enabled = enabled;\n}\n\nvoid sd_tiling_params_set_tile_sizes(sd_tiling_params_t *params, int tile_size_x, int tile_size_y) {\n    params->tile_size_x = tile_size_x;\n    params->tile_size_y = tile_size_y;\n}\n\nvoid sd_tiling_params_set_rel_sizes(sd_tiling_params_t *params, float rel_size_x, float rel_size_y) {\n    params->rel_size_x = rel_size_x;","sourceCodeStart":683,"sourceCodeEnd":719,"githubUrl":"https://github.com/mudler/LocalAI/blob/44413a9d06bf5bc52ce088ba8ca74e5a2e8bee26/backend/go/stablediffusion-ggml/cpp/gosd.cpp#L683-L719","documentation":"Warning during generation setup: the scheduler string failed to parse via str_to_scheduler(), so sd_get_default_scheduler(sd_ctx, sample_method) selects the default scheduler paired with the chosen sampler. Generation proceeds; the noise schedule differs from the requested one, which can shift output quality.","triggerScenarios":"Passing scheduler with an unrecognized name (typo, wrong case, e.g. 'karras ' with trailing space or 'KARRAS' if the parser is case-sensitive); using a scheduler added after the vendored sd.cpp version.","commonSituations":"Sampler/scheduler pairs copied from other UIs; configs shared across LocalAI versions with different bundled sd libraries.","solutions":["Correct the scheduler name to an exact enum string (e.g. discrete, karras, exponential, ays)","Or omit it and accept the default pairing for the sampler","Verify via the 'Found scheduler:' log line"],"exampleFix":"// before\nscheduler = \"Karras\";  // not matched\n\n// after\nscheduler = \"karras\";","handlingStrategy":"validation","validationCode":"// Go caller: whitelist schedulers\nvalidSchedulers := map[string]bool{\"discrete\": true, \"karras\": true, \"exponential\": true, \"ays\": true, \"gits\": true}\nif req.Scheduler != \"\" && !validSchedulers[req.Scheduler] {\n    return fmt.Errorf(\"unknown scheduler %q\", req.Scheduler)\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Validate sampler and scheduler together at the request boundary","Lowercase/trim incoming strings before matching enum names"],"tags":["stablediffusion","scheduler","options","validation"],"backgroundTag":null,"analyzedSha":"44413a9d06bf5bc52ce088ba8ca74e5a2e8bee26","analyzedAt":"2026-08-15T10:13:50.291Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}