You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
[0.4.0] - 2026-10-24
Added
Portable training: brainforge train check prefights hardware, model
compatibility (architecture, chat template, pre-quantized and remote-code
rejection, gated-model HF_TOKEN guidance) and a memory estimate without
downloading model weights; --json and --strict modes for CI. Device
auto-detection covers CUDA/ROCm, Intel XPU, Apple MPS and CPU; TPU/NPU
fail fast with a --device cpu escape. training.device, training.quantization and training.backend (new auto defaults)
resolve a per-run plan recorded in train_summary.json and eval.json. make train-check, make install-rocm and make install-xpu targets.
Docs: new docs/reference/hardware.md; README, tutorial, training,
configuration, CLI and architecture pages updated. CUDA/ROCm/XPU paths are
implemented and unit-tested but not hardware-validated.
huggingface-hub>=0.26 is now a direct dependency (preflight model
metadata checks; previously available only transitively).
Graceful failure: PipelineDef.fallback_examples (default false) turns a
rejected case into an abstention training record (assistant target is a
canonical insufficient_information verdict plus the gate reasons) instead
of dropping it. Metadata carries fallback and fallback_reason; dataset
validation accepts those records without a passing quality gate. The
rejected-case audit trail is unchanged. ADR-0016.
train task-eval treats abstention as a third outcome class and reports abstain_rate and abstain_recall (of the records the judge could not
resolve, how many the model refused too).
Critic escalation: PipelineDef.retry_with_critic (default null) names a
critic role that runs, followed by a second judge pass, when the first pass
is rejected. The critic never sees the first judge verdict. Records from a
retry carry critic_retry and first_pass_reasons in metadata.
Changed
Training and evaluation no longer hard-require CUDA: the device plan
resolves automatically and qlora degrades to plain LoRA where 4-bit is
unavailable. train evaluate and train task-eval default to --quantization auto; train run accepts --device and --quantization overrides.
Rewrite the README for evaluators: dataset-first quickstart, verified
mechanics, explicit limits, and intent-based docs routing. The docs hub and
first-model tutorial use the same commands, vocabulary, and qualifiers.
AirLLM evaluated and not adopted (ADR-0017): layer streaming helps models
that do not fit VRAM, but its custom training API is incompatible with the
PEFT/TRL, KD, merge and GGUF contracts, and throughput rules out local
dataset generation.
Provider failures are isolated per case: the case is recorded with a provider_error reason and the batch continues instead of aborting. Run
summaries gain fallback and errors counters.
run_pipeline writes the dataset and the KD sidecar once, atomically, at
the end of the run (temp file plus rename). A crash plus rerun can no
longer duplicate lines, and a rerun after a config or prompt tweak no
longer keeps stale records. The dataset file always exists after a run,
empty when nothing is accepted.
New docs/reference/references.md maps each research paper and standard to
what it informs (judge independence, contamination, QLoRA, KD, RAG,
graceful failure). Stale links fixed: ADR-0008 pointed at the retired
GitLab host, README advertised a make docs-serve target that does not
exist.
Fixed
Force pillow>=13.0.0 to clear its known CVEs despite fastembed's <13
cap, and bump certifi to 2026.10.19.