Commit graph

6,779 commits

Author SHA1 Message Date
pre-commit-ci[bot]
5921609bb3 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2026-07-05 08:04:18 +00:00
Daniel Han
4ecd7b6ef2 Merge branch 'video-inference' into video-tab 2026-07-05 07:57:33 +00:00
Daniel Han
e0235111a6 Merge branch 'diffusion-more-families' into video-inference 2026-07-05 07:57:28 +00:00
Daniel Han
d8adabb389 Merge branch 'diffusion-auto-badges' into diffusion-more-families 2026-07-05 07:57:22 +00:00
Daniel Han
266c75501a Merge branch 'diffusion-auto-install' into diffusion-auto-badges 2026-07-05 07:57:16 +00:00
Daniel Han
ff7814f452 Merge branch 'diffusion-fp16-accum' into diffusion-auto-install 2026-07-05 07:57:11 +00:00
Daniel Han
c800d7cf93 Merge branch 'diffusion-auto-policy' into diffusion-fp16-accum 2026-07-05 07:57:06 +00:00
Daniel Han
8dce79ff51 Merge branch 'diffusion-train-perf2' into diffusion-auto-policy 2026-07-05 07:57:01 +00:00
Daniel Han
466f853f14 Merge branch 'diffusion-krea2' into diffusion-train-perf2 2026-07-05 07:56:51 +00:00
Daniel Han
4b93558ad4 Merge branch 'diffusion-train-tab-2' into diffusion-krea2 2026-07-05 07:56:47 +00:00
Daniel Han
69f32b9586 Merge branch 'diffusion-train-precision' into diffusion-train-tab-2 2026-07-05 07:56:20 +00:00
Daniel Han
3925aea07f Merge branch 'diffusion-train-perf' into diffusion-train-precision 2026-07-05 07:56:14 +00:00
Daniel Han
6485e68147 Harden video load path: early GGUF-repo rejection, family fallback parity, rollback and teardown fixes
Review follow-ups on the video inference backend:

- validate_load_request now rejects a -GGUF repo picked as a diffusers
  pipeline (no gguf_filename) up front, instead of failing minutes later
  in from_pretrained after the GPU owner was already evicted.
- New _detect_load_family helper shared by validate_load_request and
  _run_load: when the repo id alone does not carry the family, fall back
  to detecting it from the picked GGUF filename, so both paths agree.
- routes/video.py now threads base_repo into validate_load_request so an
  untrusted companion repo is refused before the arbiter handoff.
- unload() now drains _generate_lock before _teardown_state so a
  cancelled clip actually exits the denoise loop before the VRAM is
  reported free.
- load_pipeline re-checks the load token after the generate-lock barrier
  and raises if the load was superseded while waiting.
- Pre-commit global mutations (backend flags, gguf compile installs) are
  registered per load token and rolled back in _run_load's error path
  via _rollback_precommit_globals, so a failed load no longer leaks
  process-wide state.
- fp32 memory estimates now apply a 2x dtype scale on non-CPU devices
  for pipeline, single-file and companion sizes (bf16 tables assume
  2 bytes/param); GGUF quant estimates stay unscaled.

Tests: GGUF-repo-as-pipeline rejection, _detect_load_family fallback and
override semantics; fake route backend accepts base_repo. 66 passed
across test_video_backend, test_video_routes, test_video_families,
test_video_gallery.
2026-07-05 07:55:26 +00:00
Daniel Han
8c00f81a5d Size-gate the automatic diffusion latent cache
The latent cache holds two fp32 posterior tensors per crop/flip variant per
image, pinned on CUDA hosts, so datasets with thousands of images can exhaust
host or pinned memory with no fallback. Estimate the cache size from the first
real encoded latent and fall back to per-step VAE encoding when it exceeds a
4 GiB budget. UNSLOTH_DIFFUSION_FORCE_LATENT_CACHE bypasses the gate; the
existing UNSLOTH_DIFFUSION_NO_LATENT_CACHE opt-out is unchanged.
2026-07-05 07:53:12 +00:00
Daniel Han
da3a79468e Use permutation-cycle index sampling in diffusion trainers and guard non-object run records
Replace the with-replacement per-batch index draw in the SDXL and DiT LoRA
trainers with a shared PermutationBatchSampler that visits every image once per
cycle before repeating, so short runs cover the whole dataset. The sampler
reshuffles from the run's rng so the index stream stays seed-deterministic.

Guard the diffusion run detail route against a valid-JSON non-object record,
which previously raised TypeError and returned a 500; it now 404s like the list
path's shape check.

Add regression tests for both.
2026-07-05 07:49:30 +00:00
Daniel Han
149ceeeab7 Merge branch 'video-inference' into video-tab 2026-07-05 07:41:41 +00:00
Daniel Han
5ae91a00a4 Merge branch 'diffusion-more-families' into video-inference 2026-07-05 07:41:39 +00:00
Daniel Han
8fafe25c6f Merge branch 'diffusion-auto-badges' into diffusion-more-families 2026-07-05 07:41:38 +00:00
Daniel Han
94db8c4fae Merge branch 'diffusion-auto-install' into diffusion-auto-badges 2026-07-05 07:41:37 +00:00
Daniel Han
242c9ffc9e Merge branch 'diffusion-fp16-accum' into diffusion-auto-install 2026-07-05 07:41:36 +00:00
Daniel Han
12ff90119d Merge branch 'diffusion-auto-policy' into diffusion-fp16-accum 2026-07-05 07:41:35 +00:00
Daniel Han
45e6dc8a12 Merge branch 'diffusion-train-perf2' into diffusion-auto-policy 2026-07-05 07:41:34 +00:00
Daniel Han
715d4965c8 Merge branch 'diffusion-krea2' into diffusion-train-perf2 2026-07-05 07:41:32 +00:00
Daniel Han
866e03d4ce Merge branch 'diffusion-train-tab-2' into diffusion-krea2 2026-07-05 07:41:31 +00:00
Daniel Han
882b5354c4 Merge branch 'diffusion-train-precision' into diffusion-train-tab-2 2026-07-05 07:41:30 +00:00
Daniel Han
8c4cdcd385 Merge branch 'diffusion-train-perf' into diffusion-train-precision 2026-07-05 07:41:29 +00:00
Daniel Han
3977f1a71d Merge branch 'image-generation' into diffusion-train-perf 2026-07-05 07:41:28 +00:00
Daniel Han
f313cfd7e5 Security audit: baseline the new huggingface-hub Sandboxes findings
The latest huggingface-hub release added the Sandboxes feature. Its
bootstrap (_sandbox.py) fetches the static sbx-server binary into /tmp with
an Authorization header and marks it executable, which is exactly the
staged-dropper pattern the scanner hunts, and three while True polling loops
in _sandbox.py / hf_api.py / utils/_http.py match the beaconing heuristic.
All four verified against the official huggingface/huggingface_hub
repository: the snippet is the documented sandbox server injection and the
loops are deadline-style job and sandbox polling. Entries generated with
--write-baseline and reviewed line by line; scan_packages.py huggingface-hub
now exits 0 with the four findings suppressed.
2026-07-05 07:40:45 +00:00
Daniel Han
e8194ef453 Merge branch 'video-inference' into video-tab 2026-07-05 05:36:04 +00:00
Daniel Han
cab60395c4 Merge branch 'diffusion-more-families' into video-inference 2026-07-05 05:36:02 +00:00
Daniel Han
ca8365da72 Merge branch 'diffusion-auto-badges' into diffusion-more-families 2026-07-05 05:36:01 +00:00
Daniel Han
49f1e352f2 Merge branch 'diffusion-auto-install' into diffusion-auto-badges 2026-07-05 05:36:00 +00:00
Daniel Han
ff22c434b4 Merge branch 'diffusion-fp16-accum' into diffusion-auto-install 2026-07-05 05:35:59 +00:00
Daniel Han
10ba804db7 Merge branch 'diffusion-auto-policy' into diffusion-fp16-accum 2026-07-05 05:35:58 +00:00
Daniel Han
a61e56b975 Merge branch 'diffusion-train-perf2' into diffusion-auto-policy 2026-07-05 05:35:56 +00:00
Daniel Han
6a9db8017b Merge branch 'diffusion-krea2' into diffusion-train-perf2 2026-07-05 05:35:55 +00:00
Daniel Han
e0786a98be Merge branch 'diffusion-train-tab-2' into diffusion-krea2 2026-07-05 05:35:54 +00:00
Daniel Han
1978b2a844 Merge branch 'diffusion-train-precision' into diffusion-train-tab-2 2026-07-05 05:35:53 +00:00
Daniel Han
1919491665 Merge branch 'diffusion-train-perf' into diffusion-train-precision 2026-07-05 05:35:52 +00:00
Daniel Han
dfe15c8141 Merge branch 'image-generation' into diffusion-train-perf 2026-07-05 05:35:50 +00:00
Daniel Han
fc35c40c18 Return 404 for malformed diffusion run records in the detail route
The run detail route built DiffusionTrainingRunDetail(**rec) unguarded, so a
valid-JSON-but-wrong-shape record (hand-edited or an older schema) would 500
instead of reading as absent. Catch ValidationError and 404, matching how the
list route skips malformed records.
2026-07-05 05:34:18 +00:00
Daniel Han
14f4e7ef7c Keep standalone chat templates in the scoped video download
tokenizer/chat_template.jinja ships as its own file in the LTX-2 and
HunyuanVideo-1.5 repos and apply_chat_template reads it at generation
time, so a scoped snapshot without it loads fine and then crashes the
first generation.
2026-07-05 05:32:24 +00:00
Daniel Han
7a05d8655b Stream every DiT through group offload, not just the primary transformer
A dual-DiT pipeline (Ideogram 4's unconditional tower) placed its second
denoiser resident under the group tier, which defeats the tier since the
pair rarely fits where one alone did not. Stream transformer_2 and
unconditional_transformer alongside the transformer and keep only the
smaller companions resident.
2026-07-05 05:30:58 +00:00
Daniel Han
d6795ed077 Restore pre-Ampere bf16 fail-fast in the DiT trainer
The perf rewrite dropped the bf16 capability guard, so a pre-Ampere CUDA
device (T4/V100/RTX 20xx) would die deep in model load with an opaque dtype
error instead of a clear message. Restores parity with the SDXL trainer.
2026-07-05 05:27:58 +00:00
pre-commit-ci[bot]
de2cddc606 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2026-07-05 05:25:40 +00:00
Daniel Han
a274308330 Check the cancel event between predownload files and probe local dirs for LTX-2.3
A warm-cache predownload sweep never consults the cancel event (each cached
file returns instantly), so an unload during it was ignored until a cold
file hit the network. The 2.3 detection also only probed bare-file local
repos; resolve directory repos through the same child resolver the loader
uses so their base pull is scoped too.
2026-07-05 05:25:03 +00:00
Daniel Han
1023758a10 Merge branch 'video-inference' into video-tab 2026-07-05 05:01:21 +00:00
Daniel Han
ef6f18c1ba Merge branch 'diffusion-more-families' into video-inference 2026-07-05 05:01:20 +00:00
Daniel Han
f114020def Merge branch 'diffusion-auto-badges' into diffusion-more-families 2026-07-05 05:01:19 +00:00
Daniel Han
93371c1ba2 Merge branch 'diffusion-auto-install' into diffusion-auto-badges 2026-07-05 05:01:18 +00:00