Skip to content

merge - #3193

Merged
bghira merged 47 commits into
releasefrom
main
Sep 1, 2026
Merged

merge#3193
bghira merged 47 commits into
releasefrom
main

Conversation

@bghira

@bghira bghira commented Sep 1, 2026

Copy link
Copy Markdown
Owner

No description provided.

AL3708 and others added 30 commits August 5, 2026 12:13
Metadata-only bucketing already exists, but not for still images scanned
from a local directory. Videos skip decoding via ffprobe, and the parquet,
huggingface and webshart backends read dimensions from metadata columns.
With the discovery backend on a plain image folder, every file is fully
read and decoded just to reach image.size.

Bucketing never needs those pixels: calculate_target_size() and the crop
coordinate maths derive everything from original_size, and PreparedSample
stores no pixel-derived metadata. On a network filesystem this means a
multi-megabyte read per image for data that is discarded immediately, and
the only way to avoid it today is to maintain an external parquet of
dimensions the file headers already contain.

Still images now take the same metadata-only path as videos.
use_metadata_only is already supported downstream -- TrainingSample
tolerates image=None, since crop() and the transform helper both guard on
`self.image is not None`, and meets_resolution_requirements() has an
image_metadata branch reading original_size. So this adds the entry point
plus a header probe.

_probe_image_dimensions() opens the file with PIL, which parses only the
header; pixel data is loaded lazily and never requested.

The two per-media guards are folded into one
_should_use_metadata_only(is_video_file), so the face-crop exclusion lives
in one place instead of being duplicated. is_video_file is passed
explicitly so a video-extension file inside an IMAGE dataset still falls
back to a full decode. Verified equivalent to the previous logic across
all 480 combinations of file kind, dataset type, ffprobe availability,
backend type, crop flag and crop style.

Guards follow the existing video precedent: local backends only, IMAGE and
CONDITIONING dataset types, never with crop_style="face" (the one crop
style whose coordinates depend on pixel content), and any header read
failure falls back to a full decode.

EXIF orientations 5-8 transpose the image, so header dimensions are
swapped relative to exif_transpose() on the decode path. The orientation
tag is in the header, so it is applied here. Verified equal to the
full-decode result for all eight orientations plus JPEG/PNG/WebP without
EXIF, with corrupt headers falling back as intended.
Extend metadata-only bucketing to still images in the discovery backend
…set-types

implement optimised data filtration for all backends
support Krea2 turbo LoRA from TheDivergentAI
…oshift

Fix Krea2 eval dynamic shift patch sizing
(#3160) refactor report_to for multiple trackers; remove "all" option
Add manual system telemetry metrics logging
Add local metrics galleries and timestep charts
Prevent training service tests from leaking running jobs
…tate

Fix WebUI save dirty state tracking
…isables

Treat blank publishing config as disabled
…isolation

Stabilize cloud hardware profile E2E harness
audit_log(event_type, action, **kwargs) takes action positionally, but
five call sites pass event_type as a keyword and never pass action, so
each raises TypeError: missing a required argument: 'action'.

In routes/approvals.py the four calls are unguarded and run after the
approval has already been committed, so the endpoint 500s on a request
that actually succeeded and no audit record is written. In
services/cloud/credential_resolver.py the call sits inside a try/except
that logs at debug level, so credential-use auditing silently never
records anything.

Pass action positionally in the same style as routes/auth.py.
bghira and others added 17 commits August 31, 2026 09:56
Fix validation adapter state restore
fix(server): five audit_log calls omit the required action argument
Improve CUDA OOM log extraction
Fix adapter-only validation adapter runs
Fix metrics layout with many validation samples
Fix validation lightbox checkpoint switching
Fix W&B tracker initialization handling
…ora argument

QuantoLoraConv2d defines its own update_layer with use_dora as a required
positional parameter, but __init__ calls it with only six arguments:

    self.update_layer(adapter_name, r, lora_alpha, lora_dropout, init_lora_weights, use_rslora)

so constructing the layer raises

    TypeError: update_layer() missing 1 required positional argument: 'use_dora'

QuantoLoraConv2d is the QConv2d entry in custom_module_mapping and is
instantiated by dispatch_default, so quanto LoRA on any model with Conv2d
layers cannot be set up at all.

use_dora is already a parameter of __init__ (guarded to False just above), and
update_layer uses it to drive dora_init and the self.use_dora bookkeeping, so
passing it through is what the method was written to receive.
…-use-dora

fix(quantisation): QuantoLoraConv2d cannot be constructed (update_layer missing use_dora)
@bghira
bghira merged commit 9788218 into release Sep 1, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants