Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
10073b3
fix: LTX-2 voice training — 24 bugs fixed, audio actually works now
Feb 20, 2026
878d484
Merge branch 'ostris:main' into main
ArtDesignAwesome Feb 20, 2026
949a8b8
fix: bidirectional auto-balance audio loss — clamp floor 1.0 → 0.05
Feb 20, 2026
7a60e4e
feat(ltx2): LTX-2 Audio Training Excellence & Omni-Merge Framework
Feb 24, 2026
21e4e49
docs: Rewrite README to reflect BIG DADDY VERSION open source philoso…
Feb 24, 2026
c31c1fc
fix: Remove rogue JSX syntax error in merge page
Feb 24, 2026
bc6f644
fix: Remove dynamic rank compression to guarantee 100% data preservat…
Feb 24, 2026
0a21dca
fix: Remove dead ZipLoRA import that crashes MergeJob on startup
Feb 24, 2026
e6069b8
fix: Properly parse PEFT lora_A/lora_B keys to enable merging and sav…
Feb 24, 2026
4fd30c8
perf: Implement randomized low-rank SVD (100x speedup for structure m…
Feb 24, 2026
a81f0b7
perf: Mathematical exact bypass for DO-Merge (100% preservation with …
Feb 24, 2026
890bd9f
fix: Add .contiguous() to BaseMergeProcess save to prevent safetensor…
Feb 24, 2026
b5aec50
perf: O(R^2*D) mathematical optimization for DO-Merge (3000x speedup)…
Feb 24, 2026
a4616cf
docs: Update Release Notes with O(R^2*D) Exact Math bypass and PEFT p…
Feb 24, 2026
1eb2b80
LTX-2.3 throughput profiles, LTX-only soft lock, and promotion harness
Mar 6, 2026
a251dfe
Add RunPod-ready template for BIG DADDY fork
Mar 7, 2026
22adefa
Fix LTX-2.3 official backend loading and sampling
Mar 7, 2026
5068dcb
Fix missing audio_loss field on training batches
Mar 7, 2026
8980686
Fix fresh install path for LTX-2.3 backend
Mar 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
328 changes: 328 additions & 0 deletions .hotfix_base/LTX2_AUDIO_SOP.md

Large diffs are not rendered by default.

1,153 changes: 1,153 additions & 0 deletions .hotfix_base/extensions_built_in/diffusion_models/ltx2/ltx2.py

Large diffs are not rendered by default.

2,210 changes: 2,210 additions & 0 deletions .hotfix_base/extensions_built_in/sd_trainer/SDTrainer.py

Large diffs are not rendered by default.

2,537 changes: 2,537 additions & 0 deletions .hotfix_base/jobs/process/BaseSDTrainProcess.py

Large diffs are not rendered by default.

975 changes: 975 additions & 0 deletions .hotfix_base/ltx2-audio-fixes-v2.patch

Large diffs are not rendered by default.

1,373 changes: 1,373 additions & 0 deletions .hotfix_base/toolkit/config_modules.py

Large diffs are not rendered by default.

465 changes: 465 additions & 0 deletions .hotfix_base/toolkit/data_transfer_object/data_loader.py

Large diffs are not rendered by default.

1,494 changes: 1,494 additions & 0 deletions .hotfix_base/ui/src/app/jobs/new/SimpleJob.tsx

Large diffs are not rendered by default.

822 changes: 822 additions & 0 deletions .hotfix_base/ui/src/app/jobs/new/options.ts

Large diffs are not rendered by default.

449 changes: 449 additions & 0 deletions .hotfix_base/ui/src/docs.tsx

Large diffs are not rendered by default.

278 changes: 278 additions & 0 deletions .hotfix_base/ui/src/types.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,278 @@
/**
* GPU API response
*/

export interface GpuUtilization {
gpu: number;
memory: number;
}

export interface GpuMemory {
total: number;
free: number;
used: number;
}

export interface GpuPower {
draw: number;
limit: number;
}

export interface GpuClocks {
graphics: number;
memory: number;
}

export interface GpuFan {
speed: number;
}

export interface GpuInfo {
index: number;
name: string;
driverVersion: string;
temperature: number;
utilization: GpuUtilization;
memory: GpuMemory;
power: GpuPower;
clocks: GpuClocks;
fan: GpuFan;
}

export interface CpuInfo {
name: string;
cores: number;
temperature: number;
totalMemory: number;
freeMemory: number;
availableMemory: number;
currentLoad: number;
}

export interface GPUApiResponse {
hasNvidiaSmi: boolean;
gpus: GpuInfo[];
error?: string;
}

/**
* Training configuration
*/

export interface NetworkConfig {
type: string;
linear: number;
linear_alpha: number;
conv: number;
conv_alpha: number;
dropout?: number;
rank_dropout?: number;
module_dropout?: number;
lokr_full_rank: boolean;
lokr_factor: number;
network_kwargs: {
ignore_if_contains: string[];
};
}

export interface SaveConfig {
dtype: string;
save_every: number;
max_step_saves_to_keep: number;
save_format: string;
push_to_hub: boolean;
}

export interface DatasetConfig {
folder_path: string;
mask_path: string | null;
mask_min_value: number;
default_caption: string;
caption_ext: string;
caption_dropout_rate: number;
shuffle_tokens?: boolean;
is_reg: boolean;
network_weight: number;
cache_latents_to_disk?: boolean;
resolution: number[];
controls: string[];
control_path?: string | null;
num_frames: number;
shrink_video_to_frames: boolean;
do_i2v?: boolean;
do_audio?: boolean;
audio_normalize?: boolean;
audio_preserve_pitch?: boolean;
fps?: number;
flip_x: boolean;
flip_y: boolean;
num_repeats?: number;
control_path_1?: string | null;
control_path_2?: string | null;
control_path_3?: string | null;
}

export interface EMAConfig {
use_ema: boolean;
ema_decay: number;
}

export interface TrainConfig {
batch_size: number;
bypass_guidance_embedding?: boolean;
steps: number;
gradient_accumulation: number;
train_unet: boolean;
train_text_encoder: boolean;
gradient_checkpointing: boolean;
noise_scheduler: string;
timestep_type: string;
content_or_style: string;
optimizer: string;
lr: number;
ema_config?: EMAConfig;
dtype: string;
unload_text_encoder: boolean;
cache_text_embeddings: boolean;
optimizer_params: {
weight_decay: number;
};
skip_first_sample: boolean;
force_first_sample: boolean;
disable_sampling: boolean;
diff_output_preservation: boolean;
diff_output_preservation_multiplier: number;
diff_output_preservation_class: string;
blank_prompt_preservation?: boolean;
blank_prompt_preservation_multiplier?: number;
switch_boundary_every: number;
loss_type: 'mse' | 'mae' | 'wavelet' | 'stepped';
audio_loss_multiplier?: number;
auto_balance_audio_loss?: boolean;
independent_audio_timestep?: boolean;
strict_audio_mode?: boolean;
strict_audio_min_supervised_ratio?: number;
strict_audio_warmup_steps?: number;
noise_offset?: number;
min_snr_gamma?: number;
lr_scheduler?: string;
do_differential_guidance?: boolean;
differential_guidance_scale?: number;
}

export interface QuantizeKwargsConfig {
exclude: string[];
}

export interface ModelConfig {
name_or_path: string;
quantize: boolean;
quantize_te: boolean;
qtype: string;
qtype_te: string;
quantize_kwargs?: QuantizeKwargsConfig;
arch: string;
low_vram: boolean;
model_kwargs: { [key: string]: any };
layer_offloading?: boolean;
layer_offloading_transformer_percent?: number;
layer_offloading_text_encoder_percent?: number;
assistant_lora_path?: string;
}

export interface SampleItem {
prompt: string;
width?: number;
height?: number;
neg?: string;
seed?: number;
guidance_scale?: number;
sample_steps?: number;
fps?: number;
num_frames?: number;
ctrl_img?: string | null;
ctrl_idx?: number;
network_multiplier?: number;
ctrl_img_1?: string | null;
ctrl_img_2?: string | null;
ctrl_img_3?: string | null;
}

export interface SampleConfig {
sampler: string;
sample_every: number;
width: number;
height: number;
prompts?: string[];
samples: SampleItem[];
neg: string;
seed: number;
walk_seed: boolean;
guidance_scale: number;
sample_steps: number;
num_frames: number;
fps: number;
}

export interface LoggingConfig {
log_every: number;
use_ui_logger: boolean;
}

export interface SliderConfig {
guidance_strength?: number;
anchor_strength?: number;
positive_prompt?: string;
negative_prompt?: string;
target_class?: string;
anchor_class?: string | null;
}

export interface ProcessConfig {
type: string;
sqlite_db_path?: string;
training_folder: string;
performance_log_every: number;
trigger_word: string | null;
device: string;
network?: NetworkConfig;
slider?: SliderConfig;
save: SaveConfig;
datasets: DatasetConfig[];
train: TrainConfig;
logging: LoggingConfig;
model: ModelConfig;
sample: SampleConfig;
}

export interface ConfigObject {
name: string;
process: ProcessConfig[];
}

export interface MetaConfig {
name: string;
version: string;
}

export interface JobConfig {
job: string;
config: ConfigObject;
meta: MetaConfig;
}

export interface ConfigDoc {
title: string | React.ReactNode;
description: React.ReactNode;
}

export interface SelectOption {
readonly value: string;
readonly label: string;
}
export interface GroupedSelectOption {
readonly label: string;
readonly options: SelectOption[];
}

export type JobStatus = 'queued' | 'running' | 'stopping' | 'stopped' | 'completed' | 'error';
Loading