inline-core 1.2.68__tar.gz → 1.2.69__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {inline_core-1.2.68 → inline_core-1.2.69}/PKG-INFO +11 -5
- {inline_core-1.2.68 → inline_core-1.2.69}/README.md +1 -1
- {inline_core-1.2.68 → inline_core-1.2.69}/pyproject.toml +22 -5
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/catalog.py +6 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/__init__.py +18 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/lora_keys.py +73 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/memory.py +201 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/pipeline.py +351 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/provider.py +113 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/requirements.py +462 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/runner.py +384 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/__init__.py +38 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/__init__.py +0 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/allocator_trim_strategy.py +8 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/batch_split.py +105 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/block_streaming/__init__.py +20 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/block_streaming/block_fetcher.py +83 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/block_streaming/builder.py +500 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/block_streaming/disk.py +167 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/block_streaming/pool.py +71 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/block_streaming/provider.py +165 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/block_streaming/source.py +175 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/block_streaming/stream_sync.py +174 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/block_streaming/utils.py +169 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/block_streaming/wrapper.py +101 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/color/__init__.py +59 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/color/audio_mux.py +82 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/color/hlg.py +306 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/color/primaries.py +125 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/color/yuv.py +228 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/components/__init__.py +10 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/components/diffusion_steps.py +252 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/components/guiders.py +369 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/components/noisers.py +37 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/components/patchifiers.py +353 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/components/protocols.py +101 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/components/schedulers.py +130 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/conditioning/__init__.py +25 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/conditioning/exceptions.py +4 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/conditioning/item.py +20 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/conditioning/mask_utils.py +244 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/conditioning/types/__init__.py +19 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/conditioning/types/attention_strength_wrapper.py +71 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/conditioning/types/keyframe_cond.py +90 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/conditioning/types/keyframe_slots.py +174 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/conditioning/types/latent_cond.py +43 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/conditioning/types/mask_cond.py +49 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/conditioning/types/noise_mask_cond.py +45 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/conditioning/types/reference_audio_cond.py +65 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/conditioning/types/reference_video_cond.py +108 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/devices.py +112 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/duration_head/__init__.py +11 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/duration_head/duration_head.py +118 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/duration_head/model_configurator.py +35 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/guidance/__init__.py +15 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/guidance/perturbations.py +143 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/hdr.py +172 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/loader/__init__.py +66 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/loader/attention_ops.py +42 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/loader/fuse_loras.py +204 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/loader/helpers.py +95 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/loader/kernels.py +79 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/loader/module_ops.py +14 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/loader/primitives.py +176 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/loader/registry.py +147 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/loader/sd_ops.py +145 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/loader/sft_loader.py +77 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/loader/single_gpu_model_builder.py +294 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/modality_tiling.py +243 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/__init__.py +11 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/audio_vae/__init__.py +29 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/audio_vae/attention.py +71 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/audio_vae/audio_vae.py +509 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/audio_vae/causal_conv_2d.py +110 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/audio_vae/causality_axis.py +10 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/audio_vae/downsample.py +110 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/audio_vae/model_configurator.py +200 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/audio_vae/ops.py +75 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/audio_vae/resnet.py +176 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/audio_vae/upsample.py +106 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/audio_vae/vocoder.py +630 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/common/__init__.py +9 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/common/normalization.py +59 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/disposable.py +42 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/model_protocol.py +44 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/transformer/__init__.py +22 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/transformer/adaln.py +45 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/transformer/attention.py +579 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/transformer/compiling.py +239 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/transformer/cudagraph_capture.py +167 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/transformer/feed_forward.py +15 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/transformer/gelu_approx.py +10 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/transformer/modality.py +77 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/transformer/model.py +604 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/transformer/model_configurator.py +239 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/transformer/ops.py +106 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/transformer/rope.py +224 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/transformer/text_projection.py +38 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/transformer/timestep_embedding.py +143 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/transformer/transformer.py +447 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/transformer/transformer_args.py +411 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/upsampler/__init__.py +10 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/upsampler/blur_downsample.py +53 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/upsampler/model.py +143 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/upsampler/model_configurator.py +31 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/upsampler/pixel_shuffle.py +54 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/upsampler/res_block.py +37 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/upsampler/spatial_rational_resampler.py +47 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/__init__.py +54 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/attention.py +69 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/conv_video_decoder.py +557 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/convolution.py +317 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/diffusion_tiling.py +759 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/diffusion_video_decoder.py +748 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/enums.py +20 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/memory_efficient_decode.py +683 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/model_configurator.py +565 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/normalization.py +3 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/ops.py +84 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/resnet.py +277 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/sampling.py +123 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/__init__.py +107 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/apply.py +206 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/attention.py +174 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/blocks.py +83 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/chunked/__init__.py +1 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/chunked/attn.py +420 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/chunked/block.py +70 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/chunked/context.py +88 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/chunked/mlp.py +178 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/combined/__init__.py +1 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/combined/attn.py +123 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/combined/block.py +32 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/combined/context.py +21 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/combined/mlp.py +24 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/compiling.py +95 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/config.py +110 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/det_attn_rope.py +175 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/dsl_kernels/__init__.py +39 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/dsl_kernels/apply_dsl.py +111 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/dsl_kernels/attn.py +88 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/dsl_kernels/block.py +151 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/dsl_kernels/chain.py +79 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/fallback_na/__init__.py +154 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/fallback_na/eager.py +166 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/fallback_na/triton_na.py +181 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/layers.py +86 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/qkv.py +34 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/rope.py +109 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/rope_math.py +61 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/swiglu.py +479 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/video_vae.py +637 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/multigpu/__init__.py +11 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/multigpu/gemma/__init__.py +6 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/multigpu/gemma/accelerate_wrapper.py +23 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/multigpu/gemma/batch_parallel_wrapper.py +71 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/multigpu/gemma/broadcast_wrapper.py +120 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/multigpu/gemma/loader.py +120 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/multigpu/sharded_sd.py +191 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/multigpu/transformer/__init__.py +13 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/multigpu/transformer/attention.py +270 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/multigpu/transformer/sequence_parallel.py +318 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/multigpu/transformer/tiled_data_parallel.py +99 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/multigpu/vae/__init__.py +5 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/multigpu/vae/distributed_decoder.py +318 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/quantization/__init__.py +17 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/quantization/blockwise/__init__.py +47 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/quantization/blockwise/_impl.py +433 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/quantization/fp8_cast.py +337 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/quantization/fp8_scaled_mm.py +203 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/quantization/nvfp4/__init__.py +64 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/quantization/nvfp4/convert.py +126 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/quantization/nvfp4/fuse.py +50 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/quantization/nvfp4/linear.py +139 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/quantization/nvfp4/prequant.py +207 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/quantization/nvfp4/types.py +13 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/quantization/policy.py +24 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/text_encoders/__init__.py +1 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/text_encoders/gemma/__init__.py +49 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/text_encoders/gemma/embeddings_connector.py +256 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/text_encoders/gemma/embeddings_processor.py +117 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/text_encoders/gemma/encoders/base_encoder.py +262 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/text_encoders/gemma/encoders/encoder_configurator.py +481 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/text_encoders/gemma/encoders/prompts/gemma3_i2v_system_prompt.txt +30 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/text_encoders/gemma/encoders/prompts/gemma3_t2v_system_prompt.txt +40 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/text_encoders/gemma/encoders/prompts/gemma4_i2v_system_prompt.txt +27 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/text_encoders/gemma/encoders/prompts/gemma4_t2v_system_prompt.txt +25 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/text_encoders/gemma/feature_extractor.py +129 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/text_encoders/gemma/gemma_assets.py +396 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/text_encoders/gemma/tokenizer.py +63 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/tiling.py +945 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/tools.py +280 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/types.py +300 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_core/utils.py +62 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/__init__.py +74 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/a2vid_two_stage.py +387 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/dfr_layout.py +213 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/dfr_pipeline.py +630 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/distilled.py +367 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/distilled_mgpu.py +233 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/dubit.py +401 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/hdr_ic_lora.py +987 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/ic_lora.py +540 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/iclora_utils.py +170 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/keyframe_interpolation.py +362 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/multigpu/__init__.py +31 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/multigpu/_broadcast.py +68 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/multigpu/bp_gemma_builder.py +90 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/multigpu/controller.py +382 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/multigpu/delegating_builder.py +91 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/multigpu/fleet.py +375 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/multigpu/gemma_builders.py +199 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/multigpu/nccl_groups.py +31 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/multigpu/runner.py +62 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/multigpu/sp_builder.py +62 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/multigpu/tdp_builder.py +75 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/multigpu/vae_builders.py +87 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/multigpu/weight_tracker.py +181 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/retake.py +397 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/t2a_one_stage.py +215 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/ti2vid_one_stage.py +311 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/ti2vid_two_stages.py +380 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/ti2vid_two_stages_hq.py +409 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/ti2vid_two_stages_hq_mgpu.py +278 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/ti2vid_two_stages_mgpu.py +279 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/__init__.py +57 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/args.py +1214 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/blocks.py +1236 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/constants.py +199 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/denoisers.py +361 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/gpu_model.py +34 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/helpers.py +585 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/media_io/__init__.py +76 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/media_io/color_config.py +103 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/media_io/decode.py +435 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/media_io/encode.py +302 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/media_io/exr.py +255 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/media_io/range_map.py +25 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/media_io/resize.py +143 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/model_paths.py +189 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/quantization_factory.py +50 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/res2s.py +62 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/samplers.py +707 -0
- inline_core-1.2.69/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/types.py +144 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/video_params.py +7 -4
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/runtime/video_encode.py +10 -3
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/server/bootstrap.py +11 -0
- inline_core-1.2.69/src/inline_core/studio/dataset_import.py +191 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/studio/handlers.py +12 -1
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/studio/schema.py +17 -7
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/studio/training.py +205 -14
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/studio/training_store.py +54 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/training/arch.py +151 -15
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/training/cache.py +19 -5
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/training/dataset.py +80 -0
- inline_core-1.2.69/src/inline_core/training/ltx25.py +364 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/training/models.py +83 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/training/precache_store.py +3 -1
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/training/trainer.py +29 -7
- inline_core-1.2.69/tests/test_clip_grid_parity.py +68 -0
- inline_core-1.2.69/tests/test_dataset_import.py +86 -0
- inline_core-1.2.69/tests/test_ltx25_lora_keys.py +117 -0
- inline_core-1.2.69/tests/test_ltx25_nodes.py +201 -0
- inline_core-1.2.69/tests/test_ltx25_requirements.py +438 -0
- inline_core-1.2.69/tests/test_ltx25_training.py +220 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_studio_rpc.py +3 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_studio_schema.py +41 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_training_dataset.py +38 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_video_encode.py +23 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/.gitignore +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/.python-version +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/CLAUDE.md +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/main.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/scripts/flux2_train_matrix.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/scripts/minimax_h3_lora_check.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/scripts/minimax_h3_train_matrix.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/scripts/reference.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/__init__.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/components/__init__.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/components/conditioning.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/components/interfaces.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/config.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/device/__init__.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/device/auto.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/device/detect.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/device/memory.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/device/policy.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/device/probe.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/device/types.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/errors.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/extensions/__init__.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/extensions/api.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/extensions/constraints.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/extensions/fetch.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/extensions/handlers.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/extensions/importer.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/extensions/install.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/extensions/loader.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/extensions/manifest.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/extensions/models.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/extensions/paths.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/extensions/resolve.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/extensions/scanner.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/extensions/state.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/extensions/tools.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/ffmpeg.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/graph/__init__.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/graph/cache.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/graph/descriptor.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/graph/executor.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/graph/loader_runners.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/graph/primitives.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/graph/registry.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/graph/runners.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/graph/schema.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/graph/topo.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/graph/validate.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/media.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/__init__.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/checkpoint.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/controlspace.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/flux2/__init__.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/flux2/controlnet.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/flux2/embeds.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/flux2/provider.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/flux2/requirements.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/flux2/runner.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/flux2/variants.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/keymap.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/krea2/__init__.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/krea2/convert.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/krea2/depth_control.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/krea2/img2img.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/krea2/provider.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/krea2/requirements.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/krea2/runner.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/loaders.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/lora.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/minimaxh3/__init__.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/minimaxh3/adaln.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/minimaxh3/keys.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/minimaxh3/load.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/minimaxh3/lora_keys.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/minimaxh3/pipeline.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/minimaxh3/provider.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/minimaxh3/requirements.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/minimaxh3/runner.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/minimaxh3/vae_keys.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/minimaxh3/vendor/__init__.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/minimaxh3/vendor/autoencoder_kl_minimax_h3.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/minimaxh3/vendor/autoencoder_kl_minimax_h3_audio.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/minimaxh3/vendor/before_denoise.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/minimaxh3/vendor/before_encoder.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/minimaxh3/vendor/decoders.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/minimaxh3/vendor/denoise.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/minimaxh3/vendor/encoders.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/minimaxh3/vendor/modular_blocks_minimax_h3.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/minimaxh3/vendor/modular_pipeline.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/minimaxh3/vendor/packing.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/minimaxh3/vendor/packing_ref2va.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/minimaxh3/vendor/scheduling_minimax_h3.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/minimaxh3/vendor/transformer_minimax_h3.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/offload.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/pipeline_runtime.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/prepared.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/preprocess/__init__.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/preprocess/requirements.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/preprocess/runner.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/references.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/requirements.py +3 -3
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/sampling.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/zimage/__init__.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/zimage/primitives.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/zimage/provider.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/zimage/requirements.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/models/zimage/runner.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/parallel/__init__.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/parallel/config.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/parallel/group.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/parallel/launch.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/parallel/protocol.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/parallel/registry.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/parallel/worker.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/runtime/__init__.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/runtime/context.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/runtime/file_store.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/runtime/progress.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/runtime/run.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/runtime/store.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/sampling/__init__.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/sampling/batch.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/server/__init__.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/server/__main__.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/server/app.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/server/assets.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/server/frontend.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/server/manager.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/server/rpc.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/server/run_store.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/server/serialize.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/studio/__init__.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/studio/activity.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/studio/assets.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/studio/config.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/studio/fal.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/studio/frames.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/studio/generation.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/studio/graph_build.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/studio/image_meta.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/studio/models.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/studio/moodboard.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/studio/peaks.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/studio/recipe.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/studio/store.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/studio/system_stats.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/studio/timeline/__init__.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/studio/timeline/compose.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/studio/timeline/ffmpeg.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/studio/timeline/render.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/studio/timeline/resolve.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/takes.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/training/__init__.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/training/__main__.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/training/caption.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/training/h3.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/src/inline_core/training/protocol.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/conftest.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/helpers.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_cache.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_catalog.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_checkpoint.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_config.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_device_detect.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_encoder_parking.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_executor.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_extension_api.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_extension_install.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_extension_manifest.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_extension_resolve.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_extension_scanner.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_extension_spine.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_extension_state.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_file_store.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_flux2_controlnet.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_flux2_folder.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_flux2_resolve.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_flux2_runner.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_flux2_training.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_flux2_variants.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_frontend_serving.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_hidden_nodes.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_keymap.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_krea2_convert.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_krea2_depth_control.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_krea2_requirements.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_krea2_runner.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_loader_runners.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_loaders.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_lora.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_lora_download.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_manager_queue.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_memory_policy.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_minimaxh3_adaln.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_minimaxh3_keys.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_minimaxh3_load.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_minimaxh3_lora_keys.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_minimaxh3_nodes.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_minimaxh3_training.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_model_requirements.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_offload_prepared.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_output_kind_contract.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_parallel_group.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_pipeline_cache.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_precache_store.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_primitives.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_recipe.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_references.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_rpc_bridge.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_run_store.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_sampling.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_schema.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_server.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_staged_residency.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_studio_activity.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_studio_assets.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_studio_fal.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_studio_frames.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_studio_generation.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_studio_graph_build.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_studio_models.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_studio_moodboard.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_studio_multi_reference.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_studio_node_size.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_studio_peaks.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_studio_store.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_studio_timeline.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_studio_training.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_take_bytes.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_topo.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_training_arch.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_training_models.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_training_resolve.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_training_snapshots.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_validate.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_video_params.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_webui_install.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_xfuser_sampler.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_zimage_primitives.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_zimage_resolve.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/tests/test_zimage_runner.py +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/uv.lock +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/webui.bat +0 -0
- {inline_core-1.2.68 → inline_core-1.2.69}/webui.sh +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: inline-core
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.69
|
|
4
4
|
Summary: The generation engine behind Inline Studio.
|
|
5
5
|
License-Expression: GPL-3.0-or-later
|
|
6
6
|
Requires-Python: >=3.11
|
|
@@ -10,6 +10,7 @@ Provides-Extra: all
|
|
|
10
10
|
Requires-Dist: accelerate>=0.30; extra == 'all'
|
|
11
11
|
Requires-Dist: av>=12; extra == 'all'
|
|
12
12
|
Requires-Dist: bitsandbytes>=0.43; (platform_system != 'Darwin') and extra == 'all'
|
|
13
|
+
Requires-Dist: cloudpickle>=3.1; extra == 'all'
|
|
13
14
|
Requires-Dist: controlnet-aux>=0.0.7; extra == 'all'
|
|
14
15
|
Requires-Dist: diffusers==0.39.0; extra == 'all'
|
|
15
16
|
Requires-Dist: einops>=0.7; extra == 'all'
|
|
@@ -18,6 +19,7 @@ Requires-Dist: huggingface-hub>=0.32; extra == 'all'
|
|
|
18
19
|
Requires-Dist: imageio-ffmpeg>=0.4; extra == 'all'
|
|
19
20
|
Requires-Dist: nvidia-ml-py>=12; extra == 'all'
|
|
20
21
|
Requires-Dist: onnxruntime>=1.17; extra == 'all'
|
|
22
|
+
Requires-Dist: openimageio>=3.0; extra == 'all'
|
|
21
23
|
Requires-Dist: peft>=0.11; extra == 'all'
|
|
22
24
|
Requires-Dist: pillow>=10; extra == 'all'
|
|
23
25
|
Requires-Dist: psutil>=5.9; extra == 'all'
|
|
@@ -26,7 +28,8 @@ Requires-Dist: scipy>=1.11; extra == 'all'
|
|
|
26
28
|
Requires-Dist: timm>=1.0; extra == 'all'
|
|
27
29
|
Requires-Dist: torch>=2.2; extra == 'all'
|
|
28
30
|
Requires-Dist: torchao>=0.14; extra == 'all'
|
|
29
|
-
Requires-Dist:
|
|
31
|
+
Requires-Dist: torchaudio; extra == 'all'
|
|
32
|
+
Requires-Dist: transformers<5.15,>=5.8; extra == 'all'
|
|
30
33
|
Requires-Dist: uvicorn[standard]>=0.29; extra == 'all'
|
|
31
34
|
Provides-Extra: dev
|
|
32
35
|
Requires-Dist: httpx>=0.27; extra == 'dev'
|
|
@@ -39,22 +42,25 @@ Requires-Dist: xfuser>=0.4; extra == 'parallel'
|
|
|
39
42
|
Provides-Extra: runtime
|
|
40
43
|
Requires-Dist: accelerate>=0.30; extra == 'runtime'
|
|
41
44
|
Requires-Dist: av>=12; extra == 'runtime'
|
|
45
|
+
Requires-Dist: cloudpickle>=3.1; extra == 'runtime'
|
|
42
46
|
Requires-Dist: controlnet-aux>=0.0.7; extra == 'runtime'
|
|
43
47
|
Requires-Dist: diffusers==0.39.0; extra == 'runtime'
|
|
48
|
+
Requires-Dist: einops>=0.7; extra == 'runtime'
|
|
44
49
|
Requires-Dist: huggingface-hub>=0.32; extra == 'runtime'
|
|
45
50
|
Requires-Dist: onnxruntime>=1.17; extra == 'runtime'
|
|
51
|
+
Requires-Dist: openimageio>=3.0; extra == 'runtime'
|
|
46
52
|
Requires-Dist: safetensors>=0.4; extra == 'runtime'
|
|
47
53
|
Requires-Dist: scipy>=1.11; extra == 'runtime'
|
|
48
54
|
Requires-Dist: torch>=2.2; extra == 'runtime'
|
|
49
55
|
Requires-Dist: torchao>=0.14; extra == 'runtime'
|
|
50
|
-
Requires-Dist:
|
|
56
|
+
Requires-Dist: torchaudio; extra == 'runtime'
|
|
57
|
+
Requires-Dist: transformers<5.15,>=5.8; extra == 'runtime'
|
|
51
58
|
Provides-Extra: server
|
|
52
59
|
Requires-Dist: fastapi>=0.110; extra == 'server'
|
|
53
60
|
Requires-Dist: imageio-ffmpeg>=0.4; extra == 'server'
|
|
54
61
|
Requires-Dist: uvicorn[standard]>=0.29; extra == 'server'
|
|
55
62
|
Provides-Extra: training
|
|
56
63
|
Requires-Dist: bitsandbytes>=0.43; (platform_system != 'Darwin') and extra == 'training'
|
|
57
|
-
Requires-Dist: einops>=0.7; extra == 'training'
|
|
58
64
|
Requires-Dist: nvidia-ml-py>=12; extra == 'training'
|
|
59
65
|
Requires-Dist: peft>=0.11; extra == 'training'
|
|
60
66
|
Requires-Dist: pillow>=10; extra == 'training'
|
|
@@ -76,7 +82,7 @@ start; **Krea 2** (Krea AI), a 12.9B single-stream MMDiT released as an undistil
|
|
|
76
82
|
its soundtrack in a single pass.
|
|
77
83
|
|
|
78
84
|
Core also runs the **LoRA trainer** behind Inline Studio's Trainer canvas, so the same engine that
|
|
79
|
-
generates can fine-tune Z-Image, Krea 2, FLUX.2
|
|
85
|
+
generates can fine-tune Z-Image, Krea 2, FLUX.2, MiniMax H3 and LTX-2.5 on your own images without a cloud
|
|
80
86
|
step. Training is cheaper than generating: Krea 2 fits a 16GB card at 512px with a 4-bit base. Its
|
|
81
87
|
dependencies sit behind the `training` extra. See the
|
|
82
88
|
[LoRA training guide](https://inlinestudio.art/lora-training) for the measured VRAM table.
|
|
@@ -12,7 +12,7 @@ start; **Krea 2** (Krea AI), a 12.9B single-stream MMDiT released as an undistil
|
|
|
12
12
|
its soundtrack in a single pass.
|
|
13
13
|
|
|
14
14
|
Core also runs the **LoRA trainer** behind Inline Studio's Trainer canvas, so the same engine that
|
|
15
|
-
generates can fine-tune Z-Image, Krea 2, FLUX.2
|
|
15
|
+
generates can fine-tune Z-Image, Krea 2, FLUX.2, MiniMax H3 and LTX-2.5 on your own images without a cloud
|
|
16
16
|
step. Training is cheaper than generating: Krea 2 fits a 16GB card at 512px with a 4-bit base. Its
|
|
17
17
|
dependencies sit behind the `training` extra. See the
|
|
18
18
|
[LoRA training guide](https://inlinestudio.art/lora-training) for the measured VRAM table.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
# PyPI name; the import package is `inline_core` (src/inline_core).
|
|
3
3
|
name = "inline-core"
|
|
4
|
-
version = "1.2.
|
|
4
|
+
version = "1.2.69"
|
|
5
5
|
description = "The generation engine behind Inline Studio."
|
|
6
6
|
readme = "README.md"
|
|
7
7
|
license = "GPL-3.0-or-later"
|
|
@@ -21,9 +21,16 @@ runtime = [
|
|
|
21
21
|
# Pinned, not floored: MiniMax H3 is vendored from an unmerged PR and imports six symbols
|
|
22
22
|
# from the experimental Modular Diffusers surface, which a minor release may rename.
|
|
23
23
|
"diffusers==0.39.0",
|
|
24
|
-
|
|
24
|
+
# Floored at 5.8 because LTX-2.5's text encoder is Gemma 4, which does not exist below it.
|
|
25
|
+
# Capped below 5.15 because 5.15 routes config attribute access through the heterogeneity layer
|
|
26
|
+
# and raises on the global `config.head_dim` that transformers' own Gemma 4 code still reads, so
|
|
27
|
+
# the encoder cannot be built at all. Lightricks verify against 5.14.1; so do we.
|
|
28
|
+
"transformers>=5.8,<5.15",
|
|
25
29
|
"accelerate>=0.30",
|
|
26
30
|
"safetensors>=0.4",
|
|
31
|
+
# LTX-2.5's audio VAE and vocoder; the audio branch raises a bare ImportError without it, which
|
|
32
|
+
# would leave every LTX node advertising an audio port it cannot fill.
|
|
33
|
+
"torchaudio",
|
|
27
34
|
# int8 weight-only quant for smart memory; best-effort at load, falls back if absent.
|
|
28
35
|
"torchao>=0.14",
|
|
29
36
|
# Backs the Beta sigma schedule (diffusers gates use_beta_sigmas on scipy).
|
|
@@ -41,6 +48,13 @@ runtime = [
|
|
|
41
48
|
# The blocks raise a plain ImportError without it, so the node would advertise two ports it
|
|
42
49
|
# cannot read. Video output goes out through ffmpeg, not this.
|
|
43
50
|
"av>=12",
|
|
51
|
+
# Reached only by paths we do not call (LTX's EXR/HDR export and its multi-GPU fleet), but both
|
|
52
|
+
# are imported at module level by the vendored package roots. Two small wheels are a cheaper
|
|
53
|
+
# price than deleting files out of `models/ltx25/vendor/` and making every re-sync a merge.
|
|
54
|
+
"openimageio>=3.0",
|
|
55
|
+
"cloudpickle>=3.1",
|
|
56
|
+
# Tensor reshaping throughout LTX-2.5's vendored transformer and VAEs.
|
|
57
|
+
"einops>=0.7",
|
|
44
58
|
]
|
|
45
59
|
server = [
|
|
46
60
|
"fastapi>=0.110",
|
|
@@ -65,7 +79,6 @@ training = [
|
|
|
65
79
|
"nvidia-ml-py>=12",
|
|
66
80
|
# Florence-2 auto-captioner is loaded via trust_remote_code and needs these.
|
|
67
81
|
"timm>=1.0",
|
|
68
|
-
"einops>=0.7",
|
|
69
82
|
]
|
|
70
83
|
dev = [
|
|
71
84
|
"pytest>=8",
|
|
@@ -81,12 +94,16 @@ all = [
|
|
|
81
94
|
# runtime
|
|
82
95
|
"torch>=2.2",
|
|
83
96
|
"diffusers==0.39.0",
|
|
84
|
-
|
|
97
|
+
# See the `runtime` extra: floored by LTX-2.5's Gemma 4 encoder, capped by transformers 5.15.
|
|
98
|
+
"transformers>=5.8,<5.15",
|
|
85
99
|
"accelerate>=0.30",
|
|
86
100
|
"safetensors>=0.4",
|
|
101
|
+
"torchaudio",
|
|
87
102
|
"torchao>=0.14",
|
|
88
|
-
# Clip decode for MiniMax H3 LoRA training, and H3's reference node.
|
|
103
|
+
# Clip decode for MiniMax H3 and LTX-2.5 LoRA training, and H3's reference node.
|
|
89
104
|
"av>=12",
|
|
105
|
+
"openimageio>=3.0",
|
|
106
|
+
"cloudpickle>=3.1",
|
|
90
107
|
"scipy>=1.11",
|
|
91
108
|
# 0.32 is where hf_xet became a hard dependency rather than an extra. Below it, Hugging Face
|
|
92
109
|
# refuses the largest files outright ("too large to be downloaded using the regular download
|
|
@@ -30,6 +30,12 @@ CATEGORIES: tuple[str, ...] = (
|
|
|
30
30
|
"clip_vision",
|
|
31
31
|
"controlnet",
|
|
32
32
|
"upscale_models",
|
|
33
|
+
# Latent-space upsamplers, kept apart from `upscale_models` (which is pixel-space) because they
|
|
34
|
+
# are not interchangeable: LTX-2.5's two-stage pipeline upsamples between denoise stages.
|
|
35
|
+
"latent_upscale_models",
|
|
36
|
+
# Small weight patches applied to a loaded model rather than loaded as one, e.g. LTX-2.5's
|
|
37
|
+
# duration head. Mirrors the folder the split packs publish them under.
|
|
38
|
+
"model_patches",
|
|
33
39
|
"embeddings",
|
|
34
40
|
# Written by the preprocess runner rather than the user, but it holds real weights and the
|
|
35
41
|
# panel is meant to show everything on disk.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"""LTX-2.5: text, image and keyframe pairs to video with a synchronised soundtrack.
|
|
2
|
+
|
|
3
|
+
The runner and its descriptors are re-exported here; `pipeline` and `vendor` are imported lazily so
|
|
4
|
+
this package stays importable for the model popup on an install with no ML stack.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
from .runner import DESCRIPTORS, GRID, VARIANTS, Ltx25Runner, Variant, register_ltx25
|
|
10
|
+
|
|
11
|
+
__all__ = [
|
|
12
|
+
"DESCRIPTORS",
|
|
13
|
+
"GRID",
|
|
14
|
+
"VARIANTS",
|
|
15
|
+
"Ltx25Runner",
|
|
16
|
+
"Variant",
|
|
17
|
+
"register_ltx25",
|
|
18
|
+
]
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"""Write an LTX-2.5 adapter in the names and the scaling other LTX tools actually read.
|
|
2
|
+
|
|
3
|
+
Two things separate what PEFT produces from what the ecosystem expects, and only one of them is a
|
|
4
|
+
rename.
|
|
5
|
+
|
|
6
|
+
**The prefix.** Published LTX LoRAs key every tensor as ``diffusion_model.<module>.lora_A.weight``.
|
|
7
|
+
Module paths below it already match ours exactly - the published distilled LoRA targets 1660
|
|
8
|
+
modules and the transformer has exactly 1660 Linears, with no mismatch - so the rename is the
|
|
9
|
+
prefix and nothing else.
|
|
10
|
+
|
|
11
|
+
**The scale, which is the part that bites.** PEFT trains with a scale of ``alpha / rank`` and saves
|
|
12
|
+
the factors raw, expecting the loader to reapply it. Inline's loader does, from the ``.alpha``
|
|
13
|
+
written beside each pair. `ltx_core`'s does **not**: ``_products_for_sd_key`` pairs ``lora_A`` with
|
|
14
|
+
``lora_B`` by exact key and applies only the user's strength, ignoring alpha. Upstream never notices
|
|
15
|
+
because their published adapters ship ``rank == alpha``, so the scale is 1.0.
|
|
16
|
+
|
|
17
|
+
So an adapter trained at ``alpha != rank`` would load correctly here and at the wrong strength
|
|
18
|
+
everywhere else - silently, because a LoRA at the wrong scale is not an error, just a worse result.
|
|
19
|
+
Folding the scale into ``lora_B`` and dropping ``.alpha`` makes the file mean the same thing to
|
|
20
|
+
every loader, which is what portability has to mean.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
from __future__ import annotations
|
|
24
|
+
|
|
25
|
+
from typing import Any
|
|
26
|
+
|
|
27
|
+
#: Every published LTX LoRA carries it; our loader already strips it on the way back in.
|
|
28
|
+
PREFIX = "diffusion_model."
|
|
29
|
+
|
|
30
|
+
_DOWN = ".lora_A.weight"
|
|
31
|
+
_UP = ".lora_B.weight"
|
|
32
|
+
_ALPHA = ".alpha"
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def export_reference(state: dict[str, Any]) -> dict[str, Any]:
|
|
36
|
+
"""PEFT's state dict as a published-convention LTX LoRA.
|
|
37
|
+
|
|
38
|
+
Takes the ``.alpha`` scalars ``trainer._save_lora`` has already written, folds ``alpha / rank``
|
|
39
|
+
into the up-projection, drops them, and prefixes what remains.
|
|
40
|
+
"""
|
|
41
|
+
scales = _scales(state)
|
|
42
|
+
out: dict[str, Any] = {}
|
|
43
|
+
for key, value in state.items():
|
|
44
|
+
if key.endswith(_ALPHA):
|
|
45
|
+
continue # folded into lora_B below; keeping it would double-apply in our own loader
|
|
46
|
+
if key.endswith(_UP):
|
|
47
|
+
scale = scales.get(key[: -len(_UP)], 1.0)
|
|
48
|
+
value = value * scale if scale != 1.0 else value
|
|
49
|
+
out[f"{PREFIX}{key}"] = value
|
|
50
|
+
return out
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def _scales(state: dict[str, Any]) -> dict[str, float]:
|
|
54
|
+
"""``module -> alpha / rank``, from the alpha scalars and the rank of each down-projection.
|
|
55
|
+
|
|
56
|
+
Rank is read off ``lora_A``'s own first dimension rather than taken from the run's config, so a
|
|
57
|
+
resumed or hand-edited adapter is described by what it contains.
|
|
58
|
+
"""
|
|
59
|
+
scales: dict[str, float] = {}
|
|
60
|
+
for key, alpha in state.items():
|
|
61
|
+
if not key.endswith(_ALPHA):
|
|
62
|
+
continue
|
|
63
|
+
module = key[: -len(_ALPHA)]
|
|
64
|
+
down = state.get(f"{module}{_DOWN}")
|
|
65
|
+
rank = int(getattr(down, "shape", (0,))[0]) if down is not None else 0
|
|
66
|
+
if rank:
|
|
67
|
+
scales[module] = float(alpha) / rank
|
|
68
|
+
return scales
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def is_reference(state: dict[str, Any]) -> bool:
|
|
72
|
+
"""Whether a state dict is already in the published convention."""
|
|
73
|
+
return any(key.startswith(PREFIX) for key in state)
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
"""Turn the device policy's verdict into LTX's own quantisation and offload vocabulary.
|
|
2
|
+
|
|
3
|
+
Every other model runner lowers a `FitEstimate` through `models/offload.py` into a torchao plus
|
|
4
|
+
group-offload recipe. LTX cannot: the vendored pipelines own their loading end to end and have their
|
|
5
|
+
own quantisation policies and weight-streaming modes. So this module is the adapter, and it is the
|
|
6
|
+
only place that knows how our ladder maps onto theirs.
|
|
7
|
+
|
|
8
|
+
The decision half is pure and torch-free so it can be unit-tested with no GPU and no weights; the
|
|
9
|
+
construction half is a thin lazy wrapper over the vendored builders.
|
|
10
|
+
|
|
11
|
+
**LTX's streaming changes what "does not fit" means.** Group offload holds the whole model in host
|
|
12
|
+
RAM, so for every other model a card too small is a refusal. LTX's ``DISK`` mode streams from the
|
|
13
|
+
file through a small buffer and needs roughly 5 GB of VRAM and 5 GB of RAM whatever the checkpoint
|
|
14
|
+
weighs. So the ladder here bottoms out in "slow" rather than "no", and the refusal is reserved for
|
|
15
|
+
a card that cannot hold the streaming buffer at all.
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
from __future__ import annotations
|
|
19
|
+
|
|
20
|
+
from dataclasses import dataclass
|
|
21
|
+
from typing import Any
|
|
22
|
+
|
|
23
|
+
#: What LTX's streaming path needs on the card regardless of checkpoint size, from the OffloadMode
|
|
24
|
+
#: documentation in the vendored `ltx_pipelines/utils/types.py`. Below this there is no plan left.
|
|
25
|
+
_STREAM_VRAM_FLOOR_BYTES = 5 * 1024**3
|
|
26
|
+
|
|
27
|
+
#: CPU offload pins the weights in host RAM, so it is only offered when they demonstrably fit with
|
|
28
|
+
#: room for the activations and whatever else the box is doing. Otherwise DISK, which re-reads.
|
|
29
|
+
_CPU_OFFLOAD_RAM_HEADROOM_BYTES = 8 * 1024**3
|
|
30
|
+
|
|
31
|
+
#: fp8-cast stores linear weights at one byte per parameter and upcasts in the matmul, so a bf16
|
|
32
|
+
#: checkpoint halves. It needs no hardware fp8 support: the cast is storage, not arithmetic.
|
|
33
|
+
_FP8_FACTOR = 0.5
|
|
34
|
+
|
|
35
|
+
#: Working room for the denoise on top of every resident weight. Video activations dwarf an image
|
|
36
|
+
#: model's - a 121-frame clip carries tens of thousands of tokens through attention - so Core's
|
|
37
|
+
#: 2.5 GB image-tuned headroom is not enough. Measured, not guessed: a 960x576 clip peaked at
|
|
38
|
+
#: 7.71 GiB with the weights streamed, and bf16 resident left 0.6 GiB spare on a 44.39 GiB L40S and
|
|
39
|
+
#: OOMed while the transformer was still streaming in.
|
|
40
|
+
_ACTIVATION_RESERVE_BYTES = 8 * 1024**3
|
|
41
|
+
|
|
42
|
+
#: What a streamed prompt encoder needs on the card while it runs. The encoder is 24.5 GiB resident,
|
|
43
|
+
#: which is what forced the transformer to stream in the first place; streaming the encoder instead
|
|
44
|
+
#: costs a buffer this size and frees the rest of the card for the model that actually denoises.
|
|
45
|
+
_ENCODER_STREAM_BYTES = 5 * 1024**3
|
|
46
|
+
|
|
47
|
+
QUANT_NONE = ""
|
|
48
|
+
QUANT_FP8_CAST = "fp8-cast"
|
|
49
|
+
QUANT_NVFP4_PREQUANT = "nvfp4-prequant"
|
|
50
|
+
|
|
51
|
+
OFFLOAD_NONE = "none"
|
|
52
|
+
OFFLOAD_CPU = "cpu"
|
|
53
|
+
OFFLOAD_DISK = "disk"
|
|
54
|
+
|
|
55
|
+
#: `DevicePolicy.vram_budget_mb` is **not** MiB. The policy stores capacity as decimal GB
|
|
56
|
+
#: (`torch.cuda.mem_get_info()[1] / 1e9`) and multiplies by 1024, so an L40S reports 48811 for a
|
|
57
|
+
#: card holding 44.39 GiB. Reading it as MiB overstates the card by 7.4% - and overstating is the
|
|
58
|
+
#: dangerous direction, because it promises "fully resident" on a card that then has nothing left
|
|
59
|
+
#: for activations. Everything else here is real bytes, so the conversion belongs in one place.
|
|
60
|
+
_VRAM_MB_TO_BYTES = 1e9 / 1024
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def vram_bytes(policy: Any) -> int:
|
|
64
|
+
"""The accelerator's capacity in real bytes, from the policy's decimal-GB budget."""
|
|
65
|
+
budget = policy.vram_budget_mb() if policy is not None else None
|
|
66
|
+
return int(budget * _VRAM_MB_TO_BYTES) if budget else 0
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
def ram_bytes(policy: Any) -> int:
|
|
70
|
+
"""Free host RAM in real bytes. Same convention as ``vram_budget_mb``."""
|
|
71
|
+
free = policy.free_ram_mb() if policy is not None else None
|
|
72
|
+
return int(free * _VRAM_MB_TO_BYTES) if free else 0
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
@dataclass(frozen=True)
|
|
76
|
+
class Ltx25Plan:
|
|
77
|
+
"""How to load the transformer on this machine, and how to load the encoder beside it."""
|
|
78
|
+
|
|
79
|
+
quantization: str
|
|
80
|
+
offload: str
|
|
81
|
+
note: str
|
|
82
|
+
#: The prompt encoder's own offload mode. Separate from the transformer's on purpose - see
|
|
83
|
+
#: ``plan_for``. Streaming it is what lets the transformer stay resident.
|
|
84
|
+
encoder_offload: str = OFFLOAD_CPU
|
|
85
|
+
|
|
86
|
+
@property
|
|
87
|
+
def streams(self) -> bool:
|
|
88
|
+
return self.offload != OFFLOAD_NONE
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
def plan_for(
|
|
92
|
+
*,
|
|
93
|
+
fit_plan: str,
|
|
94
|
+
model_bytes: int,
|
|
95
|
+
total_vram_bytes: int,
|
|
96
|
+
free_ram_bytes: int,
|
|
97
|
+
fixed_bytes: int = 0,
|
|
98
|
+
prequantised: bool = False,
|
|
99
|
+
kernels_available: bool = False,
|
|
100
|
+
) -> Ltx25Plan | None:
|
|
101
|
+
"""The load plan, or None when even the streaming buffer will not fit.
|
|
102
|
+
|
|
103
|
+
``fit_plan`` is the device policy's rung (``resident``, ``int8``, ``nf4``, ``offload`` or
|
|
104
|
+
``wont-fit``). It is advice, not an instruction: it was computed against a ladder built for
|
|
105
|
+
torchao and group offload, and the rungs mean different things here. What carries over is its
|
|
106
|
+
ordering, which is a statement about how tight this card is.
|
|
107
|
+
|
|
108
|
+
A prequantised NVFP4 checkpoint is already in its target form and is never re-quantised, which
|
|
109
|
+
is the rule `core/CLAUDE.md` states for FLUX.2's prequantised builds and applies unchanged here.
|
|
110
|
+
|
|
111
|
+
**The encoder and the transformer get different offload modes**, which is the whole point. They
|
|
112
|
+
are never both needed at once - Gemma runs, is freed, and only then does the denoise start - but
|
|
113
|
+
the pipeline holds the transformer from construction, so sizing them as one resident block made
|
|
114
|
+
a 39 GiB transformer stream on a card with room for it. Measured: the denoise itself peaked at
|
|
115
|
+
7.71 GiB. Streaming the encoder costs a 5 GiB buffer and buys back 24.5 GiB.
|
|
116
|
+
"""
|
|
117
|
+
if total_vram_bytes and total_vram_bytes < _STREAM_VRAM_FLOOR_BYTES:
|
|
118
|
+
return None
|
|
119
|
+
|
|
120
|
+
# The transformer never has the card to itself: both VAEs and the spatial upscaler stay
|
|
121
|
+
# resident beside it, and the denoise needs working room on top. Sizing against the transformer
|
|
122
|
+
# alone is what promised "fully resident" on a 44 GiB L40S and then OOMed mid-load.
|
|
123
|
+
budget = max(
|
|
124
|
+
0,
|
|
125
|
+
total_vram_bytes - fixed_bytes - _ACTIVATION_RESERVE_BYTES - _ENCODER_STREAM_BYTES,
|
|
126
|
+
)
|
|
127
|
+
|
|
128
|
+
if prequantised:
|
|
129
|
+
# The file only loads through the NVFP4 path; without the kernels there is nothing to fall
|
|
130
|
+
# back to, because the weights on disk are packed nibbles rather than a readable dtype.
|
|
131
|
+
if not kernels_available:
|
|
132
|
+
return None
|
|
133
|
+
return _fit(
|
|
134
|
+
QUANT_NVFP4_PREQUANT, model_bytes, budget, free_ram_bytes,
|
|
135
|
+
"NVFP4, prequantised.",
|
|
136
|
+
)
|
|
137
|
+
|
|
138
|
+
if fit_plan == "resident" and model_bytes and budget >= model_bytes:
|
|
139
|
+
return Ltx25Plan(QUANT_NONE, OFFLOAD_NONE, "bf16, fully resident.")
|
|
140
|
+
|
|
141
|
+
return _fit(
|
|
142
|
+
QUANT_FP8_CAST, int(model_bytes * _FP8_FACTOR), budget, free_ram_bytes,
|
|
143
|
+
"fp8-cast, which halves the transformer and costs a little fidelity.",
|
|
144
|
+
)
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
def _fit(quant: str, resident_bytes: int, vram: int, ram: int, note: str) -> Ltx25Plan:
|
|
148
|
+
"""Whether a quantised model sits on the card, streams from RAM, or streams from disk.
|
|
149
|
+
|
|
150
|
+
``vram`` is already net of the resident components and the activation reserve.
|
|
151
|
+
"""
|
|
152
|
+
if vram and resident_bytes and vram >= resident_bytes:
|
|
153
|
+
return Ltx25Plan(quant, OFFLOAD_NONE, note)
|
|
154
|
+
if ram and resident_bytes and ram >= resident_bytes + _CPU_OFFLOAD_RAM_HEADROOM_BYTES:
|
|
155
|
+
return Ltx25Plan(quant, OFFLOAD_CPU, f"{note} Weights stream from system RAM.")
|
|
156
|
+
return Ltx25Plan(
|
|
157
|
+
quant, OFFLOAD_DISK,
|
|
158
|
+
f"{note} Weights stream from disk, which is the slowest path and re-reads every step.",
|
|
159
|
+
)
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
def offload_mode(plan: Ltx25Plan) -> Any:
|
|
163
|
+
"""``plan.offload`` as the vendored enum."""
|
|
164
|
+
return offload_mode_for(plan.offload)
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
def offload_mode_for(mode: str) -> Any:
|
|
168
|
+
"""One of our offload names as the vendored enum."""
|
|
169
|
+
from .vendor.ltx_pipelines.utils.types import OffloadMode
|
|
170
|
+
|
|
171
|
+
return {
|
|
172
|
+
OFFLOAD_NONE: OffloadMode.NONE,
|
|
173
|
+
OFFLOAD_CPU: OffloadMode.CPU,
|
|
174
|
+
OFFLOAD_DISK: OffloadMode.DISK,
|
|
175
|
+
}[mode]
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
def quantization_policy(plan: Ltx25Plan, checkpoint_path: str) -> Any | None:
|
|
179
|
+
"""``plan.quantization`` as a vendored ``QuantizationPolicy``, or None for bf16."""
|
|
180
|
+
if plan.quantization == QUANT_FP8_CAST:
|
|
181
|
+
from .vendor.ltx_core.quantization.fp8_cast import build_policy
|
|
182
|
+
|
|
183
|
+
return build_policy(checkpoint_path)
|
|
184
|
+
if plan.quantization == QUANT_NVFP4_PREQUANT:
|
|
185
|
+
from .vendor.ltx_core.quantization.nvfp4 import build_nvfp4_prequant_policy
|
|
186
|
+
|
|
187
|
+
return build_nvfp4_prequant_policy(checkpoint_path)
|
|
188
|
+
return None
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
def kernels_available() -> bool:
|
|
192
|
+
"""Whether ``ltx-kernels`` can back the NVFP4 path on this machine.
|
|
193
|
+
|
|
194
|
+
Not vendored: it compiles CUDA extensions and only builds on Blackwell toolchains, so it stays
|
|
195
|
+
an opt-in install and its absence is a normal state rather than a broken one.
|
|
196
|
+
"""
|
|
197
|
+
try:
|
|
198
|
+
from ltx_kernels import nvfp4 # noqa: F401 # pyright: ignore[reportMissingImports]
|
|
199
|
+
except (ImportError, OSError):
|
|
200
|
+
return False
|
|
201
|
+
return True
|