Config System
The core of AutoPipeline is not merely that it registers many classes. The real objective is to turn a pipeline YAML file into a stable, executable runtime configuration. The config system performs three jobs:
_base_inheritance${...}variable resolutiondefault_configandinit_configmerging
1. _base_: attach default files as namespaces
A typical pattern looks like this:
_base_:
pipes_default: "../modules_init/pipes_default.yaml"
experts_default: "../modules_init/experts_default.yaml"
This is not a plain include. Each referenced file is attached as a namespace that can be reused later:
default_config: ${pipes_default.clip-pipe}
2. ${...}: resolve variable references
Common patterns include:
model_path: ${user_config.model_paths.clip_path}
api_key: ${client_config.api_key}
default_config: ${pipes_default.instruction_parser}
ConfigEngine resolves these references before pipeline instantiation.
3. default_config plus init_config
This is the most important merge step.
In a pipeline YAML, you will usually see a pattern like:
metric_configs:
emd:
pipe_name: clip-pipe
default_config: ${pipes_default.clip-pipe}
init_config:
scope: unedit_area
runtime_params:
patch_mask_threshold: 0.1
At load time, the system merges default_config and init_config into the effective initialization config. In practice, the clean rule is:
- put reusable defaults into
modules_init/*.yaml - put task-specific overrides into the active pipeline YAML
Files users modify most often
configs/pipelines/user_config.yaml
This is the file most users edit first. It controls:
client_configmodel_paths
In many cases, updating this file is enough to adapt the runtime to your own machine.
configs/pipelines/modules_init/pipes_default.yaml
This file holds reusable pipe defaults, for example:
- CLIP model paths
- DINO model paths
- default VLM and LLM backend configs
configs/pipelines/modules_init/experts_default.yaml
This file holds reusable expert defaults, for example:
- face detector
- hair segmenter
- human segmenter
How prompt assets are connected
Many client-backed configs include:
prompt_info:
prompt_id: llm/instruction_parsing/basic_object
version: v1
At runtime, PromptAssetStore resolves this entry against the YAML prompt assets in src/prompts/assets/.
When you add a new prompt-driven component, you must make sure that:
prompt_idandversionpoint to a real asset- the output schema matches the prompt semantics
Recommended configuration workflow
- Choose the pipeline family
- Copy the closest starter config
- Update
support_task - Update
prompt_info - Update
metric_configs - Only then consider Python changes
If you want to author a new task config, continue with How to Add a Pipeline Config.