Metadata-Version: 2.4
Name: skrample
Version: 0.2.1
Summary: Composable sampling functions for diffusion models
Author-email: Beinsezii <beinsezii@gmail.com>
License-Expression: Apache-2.0
License-File: LICENSE
Requires-Python: >=3.12
Requires-Dist: numpy>=2.0
Provides-Extra: all
Requires-Dist: scipy>=1.12; extra == 'all'
Requires-Dist: torch>=2.5; extra == 'all'
Requires-Dist: torchsde>=0.2.6; extra == 'all'
Provides-Extra: beta-schedule
Requires-Dist: scipy>=1.12; extra == 'beta-schedule'
Provides-Extra: brownian-noise
Requires-Dist: torchsde>=0.2.6; extra == 'brownian-noise'
Provides-Extra: cdf-schedule
Requires-Dist: scipy>=1.12; extra == 'cdf-schedule'
Provides-Extra: dev
Requires-Dist: accelerate>=1.3; extra == 'dev'
Requires-Dist: diffusers>=0.32; extra == 'dev'
Requires-Dist: matplotlib>=3.10.1; extra == 'dev'
Requires-Dist: protobuf>=5.29; extra == 'dev'
Requires-Dist: pyright>=1.1.397; extra == 'dev'
Requires-Dist: pytest-xdist>=3.6.1; extra == 'dev'
Requires-Dist: pytest>=8.3; extra == 'dev'
Requires-Dist: ruff>=0.11; extra == 'dev'
Requires-Dist: scipy>=1.12; extra == 'dev'
Requires-Dist: sentencepiece>=0.2; extra == 'dev'
Requires-Dist: torch>=2.5; extra == 'dev'
Requires-Dist: torchsde>=0.2.6; extra == 'dev'
Requires-Dist: transformers>=4.48; extra == 'dev'
Provides-Extra: diffusers-wrapper
Requires-Dist: torch>=2.5; extra == 'diffusers-wrapper'
Provides-Extra: pytorch
Requires-Dist: torch>=2.5; extra == 'pytorch'
Provides-Extra: scripts
Requires-Dist: matplotlib>=3.10.1; extra == 'scripts'
Requires-Dist: scipy>=1.12; extra == 'scripts'
Requires-Dist: torch>=2.5; extra == 'scripts'
Requires-Dist: torchsde>=0.2.6; extra == 'scripts'
Provides-Extra: test
Requires-Dist: diffusers>=0.32; extra == 'test'
Requires-Dist: matplotlib>=3.10.1; extra == 'test'
Requires-Dist: pyright>=1.1.397; extra == 'test'
Requires-Dist: pytest-xdist>=3.6.1; extra == 'test'
Requires-Dist: pytest>=8.3; extra == 'test'
Requires-Dist: ruff>=0.11; extra == 'test'
Requires-Dist: scipy>=1.12; extra == 'test'
Requires-Dist: torch>=2.5; extra == 'test'
Requires-Dist: torchsde>=0.2.6; extra == 'test'
Requires-Dist: transformers>=4.48; extra == 'test'
Description-Content-Type: text/markdown

# Skrample 0.2.1
Composable sampling functions for diffusion models

## Status
Vertical slice, overtaking most diffusers features in [quickdif](https://github.com/Beinsezii/quickdif.git)

### Feature Flags
 - `beta-schedule` -> `scipy` : For the `Beta()` schedule modifier
 - `brownian-noise` -> `torchsde` : For the `Brownian()` noise generator
 - `cdf-schedule` -> `scipy` : For the `SigmoidCDF()` schedule
 - `diffusers-wrapper` -> `torch` : For the `diffusers` integration module
 - `pytorch` -> `torch` : For the `pytorch` module
   - `pytorch.noise` : Custom generators
 - `all` : All of the above
 - `dev` : For running `tests/`

### Samplers
- Euler
  - Ancestral
- DPM
  - 1st order, 2nd order, 3rd order
  - SDE
- IPNDM
  - Ancestral (from Euler)
- UniPC
  - N order, limited to 9 for stability
  - Custom solver via other SkrampleSampler types

### Schedules
- Linear
- Scaled
  - `uniform` flag, AKA `"trailing"` in diffusers
- SigmaCDF
- ZSNR

### Schedule modifiers
- Karras
- Exponential
- FlowShift
- Beta

### Predictors
- Epsilon
- Velocity / vpred
- Flow

### Noise generators
- Random
- Brownian
- Offset
- Pyramid

## Integrations
### Diffusers
- [X] Compatibility for pipelines
  - [X] SD1
  - [X] SDXL
  - [X] SD3
  - [X] Flux
  - [ ] Others?
- [X] Import from config
  - [X] Sampler
  - [X] Schedule
  - [X] Predictor
- [X] Manage state
  - [X] Steps
  - [X] Higher order
  - [X] Generators
  - [X] Config as presented

## Implementations
### quickdif
My diffusers cli [quickdif](https://github.com/Beinsezii/quickdif) has full support for all major Skrample features, allowing extremely fine-grained customization.
