diff --git a/CLAUDE.md b/CLAUDE.md index 1796bc16..c3286c2d 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -62,10 +62,11 @@ JSON workflow → schema validation → variable substitution → sequential ste | `dw/step.py` | Step executor: generates iterations, dispatches to pipeline/task/workflow | | `dw/pipeline_processors/pipeline.py` | Pipeline loading, components, quantization, LoRA, schedulers, offloading | | `dw/pipeline_processors/config_objects.py` | Quantization and group offload config creation | -| `dw/tasks/task.py` | Task dispatcher (image processing, QR codes, gathering, video, segmentation, captioning, frame interpolation) | +| `dw/tasks/task.py` | Task dispatcher (image processing, QR codes, gathering, video, segmentation, captioning, text generation, diffusion upscaling, frame interpolation) | | `dw/tasks/segment.py` | GroundingDINO + SAM2 text-prompted object segmentation | | `dw/tasks/image_to_text.py` | Image captioning via transformers image-to-text pipeline (BLIP, BLIP-2, etc.) | | `dw/tasks/text_generation.py` | Text generation / prompt expansion via transformers text-generation pipeline | +| `dw/tasks/diffusion_upscale.py` | Diffusion-based image upscaling via SD upscale pipelines (x2/x4) | | `dw/tasks/interpolate_frames.py` | RIFE frame interpolation (2x/4x/8x) with vendored IFNet v4.6 | | `dw/tasks/rife_model.py` | Vendored RIFE IFNet v4.6 architecture (MIT License, Megvii Inc.) | | `dw/previous_results.py` | Cross-step data flow via cartesian products | diff --git a/dw/pipeline_processors/config_objects.py b/dw/pipeline_processors/config_objects.py index fe9c39c3..eaa5a118 100644 --- a/dw/pipeline_processors/config_objects.py +++ b/dw/pipeline_processors/config_objects.py @@ -24,7 +24,15 @@ def get_quantization_configuration(configuration): quantization_config_type = quantization_config["configuration"][ "config_type" ] - return quantization_config_type(**quantization_config["arguments"]) + # Some quantization configs (e.g. TorchAoConfig) require argument values + # to be instances rather than classes. realize_args converts *_type keys to + # classes; instantiate them here with no args so callers can write e.g. + # "quant_type": "torchao.quantization.Int8WeightOnlyConfig" in JSON. + args = { + k: v() if isinstance(v, type) else v + for k, v in quantization_config["arguments"].items() + } + return quantization_config_type(**args) except Exception as e: logger.error( f"Failed to create quantization_config: {str(e)}", exc_info=True