From 7d0a9fa09bcfb1482e96713383c1105065c150ff Mon Sep 17 00:00:00 2001 From: Vuong Hoang Date: Mon, 11 May 2026 15:41:03 -0700 Subject: [PATCH] =?UTF-8?q?catalog:=20ace-step=20v3=20=E2=80=94=20fix=20sc?= =?UTF-8?q?heduler=5Ftype=20and=20cfg=5Ftype=20enum=20values?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Smoke testing in the asset_engine consumer surfaced an UnboundLocalError 500 from ace-step (althing thread 01KRCJF7NGMXYE9F62Q1A6KFD4 msg 3). Root cause: this catalog had invented enum values for scheduler_type and cfg_type that don't exist in the upstream pipeline. Read pipeline_ace_step.py inside the running container: scheduler_type dispatch: if == "euler": scheduler = FlowMatchEulerDiscreteScheduler(...) elif== "heun": scheduler = FlowMatchHeunDiscreteScheduler(...) elif== "pingpong": scheduler = FlowMatchPingPongScheduler(...) # no else -> "linear" / "squared" / "sqrt" leave scheduler unbound cfg_type dispatch: accepts: apg | cfg | cfg_star Catalog had: scheduler_type: [linear, squared, sqrt] / default linear <- all invalid cfg_type: [none, cfg, cfg_rw] / default cfg <- only cfg works Fixed: scheduler_type: [euler, heun, pingpong] / default euler cfg_type: [apg, cfg, cfg_star] / default cfg Bumped ace-step version 2 -> 3. Existing assets generated under v2 with scheduler_type=linear cannot reproduce (the value is now invalid); v2 assets with the accidentally-valid cfg_type=cfg + a corrected scheduler can be regenerated under v3 by mapping linear -> euler. catalog_version stays at 1 (no schema change). Verified end-to-end against live ace-step on irv-ml1: POST /generate { scheduler_type: euler, cfg_type: cfg, ... } -> 200, output_path returned, ~8s wall time Lesson: OpenAPI introspection isn't enough for accurate catalog authoring. Upstream OpenAPI returns bare `string` for both fields. Reading the actual dispatch code is the only way to capture the allowed values. Will sweep the other 11 service entries against their implementations before P2 (scale to all services) lands. --- docs/asset-engine/services.yaml | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/docs/asset-engine/services.yaml b/docs/asset-engine/services.yaml index 433aa75..8635e0e 100644 --- a/docs/asset-engine/services.yaml +++ b/docs/asset-engine/services.yaml @@ -752,7 +752,7 @@ services: Apache-2.0 hybrid diffusion+LLM music generation. Multi-minute lyric-aware songs with vocals + instrumentation. category: music - version: 2 + version: 3 host: irv-ml1 endpoint: http://10.100.79.3:8210/generate method: POST @@ -817,14 +817,22 @@ services: section: generation - name: scheduler_type type: select - options: [linear, squared, sqrt] - default: linear + options: [euler, heun, pingpong] + default: euler section: generation + description: > + Flow-matching scheduler. `euler` is the canonical default; + `heun` trades 2x compute for higher-order accuracy; `pingpong` + is a specialized noise-bouncing variant. - name: cfg_type type: select - options: [none, cfg, cfg_rw] + options: [apg, cfg, cfg_star] default: cfg section: generation + description: > + Classifier-free guidance variant. `cfg` is the standard formulation; + `apg` (adaptive projected guidance) and `cfg_star` are advanced + alternatives — see the upstream pipeline source for trade-offs. - name: omega_scale type: slider min: 0.0