timestep_sampling
timestep_sampling
¶
Timestep sampling strategies for flow matching training.
References
Esser et al. "Scaling Rectified Flow Transformers for High-Resolution Image Synthesis" https://arxiv.org/abs/2403.03206
Black et al. "pi0: A Vision-Language-Action Flow Model for General Robot Control" https://arxiv.org/abs/2410.24164
TimestepSampler
¶
Bases: Enum
Timestep sampling strategies for continuous-time generative models.
TimestepSamplingConfig
dataclass
¶
TimestepSamplingConfig(sampler=BETA.value, logit_mean=0.0, logit_std=1.0, beta_alpha=1.5, beta_beta=1.0, max_timestep=0.999)
Configuration for continuous timestep sampling.
__post_init__
¶
Validate timestep sampling configuration values.
Raises:
| Type | Description |
|---|---|
ValueError
|
If any sampling parameter is outside its valid range. |
Source code in src/versatil/models/layers/denoising/timestep_sampling.py
validate_timestep_sampler
¶
Validate a continuous timestep sampler name.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
sampler
|
str
|
Sampling strategy name. |
required |
Raises:
| Type | Description |
|---|---|
ValueError
|
If sampler is not recognized. |
Source code in src/versatil/models/layers/denoising/timestep_sampling.py
validate_timestep_sampling_parameters
¶
validate_timestep_sampling_parameters(sampler, batch_size, logit_std, beta_alpha, beta_beta, max_timestep)
Validate shared continuous timestep sampling parameters.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
sampler
|
str
|
Sampling strategy name. |
required |
batch_size
|
int
|
Number of samples to draw. |
required |
logit_std
|
float
|
Standard deviation for logit-normal sampling. |
required |
beta_alpha
|
float
|
First Beta concentration parameter. |
required |
beta_beta
|
float
|
Second Beta concentration parameter. |
required |
max_timestep
|
float
|
Upper timestep bound for Beta sampling. |
required |
Raises:
| Type | Description |
|---|---|
ValueError
|
If any parameter is outside its valid range. |
Source code in src/versatil/models/layers/denoising/timestep_sampling.py
sample_timesteps_from_config
¶
Sample continuous timesteps from a reusable sampling configuration.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
config
|
TimestepSamplingConfig
|
Sampling configuration. |
required |
batch_size
|
int
|
Number of samples to draw. |
required |
device
|
device
|
Target device. |
required |
Returns:
| Type | Description |
|---|---|
Tensor
|
Tensor of shape (batch_size,) with sampled timesteps. |
Source code in src/versatil/models/layers/denoising/timestep_sampling.py
sample_timesteps
¶
sample_timesteps(batch_size, device, sampler=BETA.value, logit_mean=0.0, logit_std=1.0, beta_alpha=1.5, beta_beta=1.0, max_timestep=0.999)
Sample timesteps t in [0, 1] using various strategies.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
batch_size
|
int
|
Number of samples. |
required |
device
|
device
|
Target device. |
required |
sampler
|
str
|
Sampling strategy name. |
BETA.value
|
logit_mean
|
float
|
Mean for logit-normal (shifts mode; 0 centers at t=0.5). |
0.0
|
logit_std
|
float
|
Std for logit-normal (smaller = more concentrated). |
1.0
|
beta_alpha
|
float
|
First shape parameter for Beta distribution. |
1.5
|
beta_beta
|
float
|
Second shape parameter for Beta distribution. |
1.0
|
max_timestep
|
float
|
Upper bound s for Beta sampling; timesteps above s are never sampled. Samples follow p(t) = Beta((s-t)/s; alpha, beta). |
0.999
|
Returns:
| Type | Description |
|---|---|
Tensor
|
Tensor of shape (batch_size,) with values in [0, 1]. |
Raises:
| Type | Description |
|---|---|
ValueError
|
If sampler is not recognized or parameters are invalid. |