Skip to content

Latest commit

 

History

History
73 lines (48 loc) · 7.1 KB

File metadata and controls

73 lines (48 loc) · 7.1 KB

Configuration and paths

Create the complete editable tuning profile with magicquant init-config --output config.yaml, then pass it explicitly with --config config.yaml. See best practices for scratch storage and optional Unsloth baselines.

Loading and precedence

--config <file> selects a YAML file; otherwise the executable loads its adjacent config.default.yaml. Debug and Release follow the same rule. config.dev.yaml is no longer selected automatically.

The loader deserializes the selected file into MagicQuantYamlConfig, whose property initializers supply omitted fields, applies supported CLI overrides, normalizes values, and updates Config.Current and MQ.DB.Cache. It does not merge a custom file with config.default.yaml. The distributed YAML intentionally differs from C# defaults for some research tuning settings. Copy that whole file to reproduce its profile.

Unknown CLI options, duplicate options, missing values, and values supplied to presence-only flags are rejected. CLI string options generally override nonblank YAML values. Many boolean switches only enable a feature; use YAML to disable it unless a specific negative CLI switch exists. Use --name value or --name=value; quote paths with spaces using normal shell quoting.

Unknown or inactive YAML keys produce a warning with their setting path and line number; --strict-config rejects them. Compare with the commented default file and src/MagicQuant/Configuration/MagicQuantYamlConfig.cs. CI strictly parses the distributed examples so their keys cannot silently drift.

Model-neutral startup

The bundled profile selects no model, architecture, provider repository, imatrix source, GPU limit, or scratch disk. init-config produces that same profile. Set model/architecture paths and review output/storage before your first campaign; a blank model is intentionally rejected by preflight.

Standard llama.cpp families and general research thresholds remain populated so the file describes a usable starting policy. These values are not a Qwen preset or a claim that every model shares an optimum. The Qwen/other-family patterns in src/MQ.DB/tensor_groups.yaml are model-compatibility rules, not a selected campaign; do not erase them when configuring a different model.

Confirmed-anomaly expansion defaults to built-in Q6_K/Q5_K candidates. Add exact external baseline names only after configuring that source. The external-provider template shows this opt-in; it contains placeholders and must be edited before use. Existing explicit local campaign configs are not rewritten.

Main sections

Section Responsibility
paths Source model, runtime root, llama.cpp, scratch roots, external cache directory name
identity Architecture-family name and explicit alias override
flags Imatrix, hardware reprobe, high-precision hybrid policy
learning Tensor review, safe profile rebucketing, targeted relearn requests
baselines Built-in roles and external repository definitions, including optional revision pins
hardware Per-GPU usable VRAM limits
imatrix Local/remote matrix or dataset source
isolation_pruning Isolation gating and damage/tradeoff thresholds
prediction Rank-safe KLD fitting and combination memory limits
candidate_selection Final candidate windows, fallback attempts, and spacing/tradeoff rules
anomaly_detection, synergy_detection Bounded contextual probes and evidence adjustments
output Export destination, naming, reuse, and external-baseline export policy
readme Generated model card title and frontmatter

Built-in standard_baselines_mode is all, selected, or none. selected uses the explicit role lists; an empty list enables none for that role. In all, those lists do not restrict built-ins. Custom repositories are configured independently. Native anchors may still be required by the runtime. Historical standard_only/custom_only comments did not describe implemented filtering modes.

Path contracts

Paths do not expand shell variables or ~ inside YAML. Prefer absolute paths. Relative --config, model, runtime, llama.cpp, dataset, and scratch paths resolve against the process working directory, not the YAML file's directory.

Setting / command Blank default Relative value
paths.magic_quant_root <user-home>/MagicQuant Process working directory
paths.model_dir Required for model commands Process working directory
Model work directory <model>/MagicQuant Derived from model path
pipeline / build-hybrids output <model>/MagicQuant/Final_Outputs Under <model>/MagicQuant
Clone output <model>/MagicQuant/FinalOutput Process working directory
Prediction validation output via CLI <model>/MagicQuant/PredictionValidation if no YAML output Process working directory, exact destination
Prediction validation with YAML output only <output.output_dir>/PredictionValidation YAML output resolves against process working directory

These historical output differences are preserved for existing campaigns. OutputPathService owns the rules. An absolute output_dir avoids ambiguity.

external_baseline_cache_dir_name is intended to be a folder name beneath the model work directory; use a simple name such as ExternalBaselines. Scratch roots are separate from durable downloads. They need not be physically distinct disks, but the scheduler's one-heavy-writer-per-root policy assumes you choose them thoughtfully.

Model metadata and compatibility

readme.frontmatter accepts arbitrary scalar/list metadata. Set license, base_model, and other provenance fields for the actual exported model; no model license is inferred for you.

The old evolution, survival, sensitivity-group, brain-layer, and collapse-penalty config surfaces had no active consumers and have been removed from the typed configuration. Old YAML containing them is tolerated with warnings unless --strict-config is selected; they do not tune the current algorithm. See candidate_selection and the research wiki for current selection policy.

Preflight and cancellation

Normal runs validate local inputs before applying global state, creating runtime directories, installing dependencies, or cleaning artifacts. --check-config performs only this check. Non-finite numeric values and null required sections are rejected. Clone preflight requires one source manifest/repository, and model discovery requires explicit architecture-family identity.

Exports cannot contain the source model/runtime root or overlap protected model work directories such as GGUF, Benchmarks, Logs, Runs, and ExternalBaselines. Physical symlink targets are considered. These guards do not make arbitrary existing export contents safe: still choose a dedicated directory.

Ctrl+C requests cooperative cancellation, stops active native work, and returns status 130. A second Ctrl+C requests immediate OS termination. Process/lease cleanup is cooperative; forced termination or power loss can still require stale-artifact cleanup on the next run.