Conversation
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
Improve training metrics dashboard layout
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.
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
Fix validation artifact asset formats
…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)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.