# RFD4ProteinaScheduler

`RFD4ProteinaScheduler` 是 RFD4-Proteína 中针对单一模态的时序分数重缩放流采样器。该 pipeline 使用两个实例，一个用于 backbone（`bb_ca`，坐标单位为纳米），另一个用于每个 token 的局部潜变量（`local_latents`），每个实例都有各自的时间调度、噪声调度和重缩放。有关采样循环，请参阅 [RFD4ProteinaPipeline](/docs/diffusers/v0.43.0/zh/api/pipelines/rfd4_proteina#diffusers.RFD4ProteinaPipeline)。

## RFD4ProteinaScheduler[[diffusers.RFD4ProteinaScheduler]]

#### diffusers.RFD4ProteinaScheduler[[diffusers.RFD4ProteinaScheduler]]

```python
diffusers.RFD4ProteinaScheduler(schedule_mode: str, noise_mode: str, tsr_k: float, tsr_sigma: float, tail_steps: int = 10, tail_step_multiplier: int = 2, t_lim_ode: float = 0.95, t_lim_ode_below: float = 0.02)
```

[源代码](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/schedulers/scheduling_rfd4_proteina.py#L76)

**参数：**

schedule_mode (`str`) : 噪声与数据之间时间间隔的间距： `"log"` 或 `"power"`。

noise_mode (`str`) : 注入到随机窗口中的噪声形状：`"1/t"` 或 `"tan"`。

tsr_k (`float`)：采样温度可以降到的下限；值越大，温度越低。

tsr_sigma (`float`)：达到低温的速度；值越大，速度越快。

tail_steps (`int`，默认为 `10`)：最后 `tail_step_multiplier` 个区间的数量，这些区间比其余区间更细。

tail_step_multiplier (`int`，默认为 `2`)：最终区间的细分程度。

t_lim_ode (`float`，默认值为 `0.95`)：超过此时间后，该步骤是确定性的。

t_lim_ode_below (`float`，默认值为 `0.02`)：低于此时间时，该步骤是确定性的。

RFD4-Proteína 单模态的时间分数重缩放流采样器。

该流水线整合了两种模态：主干网络（backbone）和逐 token 的局部潜变量（per-token local latents），每种模态各使用一个调度器。它们在时间调度、噪声调度和重缩放方面有所不同。

在采样之前调用 `set_timesteps`。时间步从噪声向干净数据递增。调度器会跟踪当前区间，不应在并发生成之间共享。

#### set_timesteps[[diffusers.RFD4ProteinaScheduler.set_timesteps]]

```python
set_timesteps(num_inference_steps: int, device: typing.Union[str, torch.device, NoneType] = None, start_time: float | None = None)
```

[源代码](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/schedulers/scheduling_rfd4_proteina.py#L133)

**参数：**

num_inference_steps (`int`) : 积分区间的数量。

device (`str` 或 `torch.device`，*可选*)：`timesteps` 所在的设备。区间长度和噪声系数保留在 CPU 上。

start_time (`float`, *可选*) : 部分扩散的起始时间，取值范围为 `[0, 1)`。若省略，则执行完整生成。

解析调度并重置集成游标。

#### add_noise[[diffusers.RFD4ProteinaScheduler.add_noise]]

```python
add_noise(original_samples: Tensor, noise: Tensor, timesteps: typing.Union[float, torch.Tensor])
```

[源代码](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/schedulers/scheduling_rfd4_proteina.py#L194)

**参数：**

original_samples (`torch.Tensor`) : 干净状态 `(batch, tokens, D)`。

noise (`torch.Tensor`) : 由调用方生成的、形状相同的噪声。

timesteps (`float` 或 `torch.Tensor`)：位于 `[0, 1)` 区间内的时间，标量或 `(batch,)`。

采样前向边缘分布 `(1 - t) * noise + t * clean`。

#### 步骤[[diffusers.RFD4ProteinaScheduler.step]]

```python
step(model_output: Tensor, timestep: Tensor, sample: Tensor, emit_mask: Tensor, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, return_dict: bool = True)
```

[源代码](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/schedulers/scheduling_rfd4_proteina.py#L212)

**参数：**

model_output (`torch.Tensor`) : 预测速度，形状与 `sample` 相同。

timestep (`torch.Tensor`) : `timesteps` 的下一个元素。顺序错误的步骤将被拒绝。

sample (`torch.Tensor`) : 当前状态 `(B, N, D)`。

emit_mask (`torch.Tensor`) : 布尔型 `(B, N)`，对于被更新的 token（非上下文或填充）为 true。

generator (`torch.Generator` 或 `list[torch.Generator]`，*可选*)：用于单行或为每个批次行提供不同生成器的生成器。省略它们将使用全局流。

return_dict (`bool`，默认为 `True`)：返回 `RFD4ProteinaSchedulerOutput`；否则返回一个包含该状态的单元素元组。

**返回：** `RFD4ProteinaSchedulerOutput` 或 `tuple`

更新后的状态。

推进一个积分区间并更新 `step_index`。

## RFD4ProteinaSchedulerOutput[[diffusers.schedulers.scheduling_rfd4_proteina.RFD4ProteinaSchedulerOutput]]

#### diffusers.schedulers.scheduling_rfd4_proteina.RFD4ProteinaSchedulerOutput[[diffusers.schedulers.scheduling_rfd4_proteina.RFD4ProteinaSchedulerOutput]]

```python
diffusers.schedulers.scheduling_rfd4_proteina.RFD4ProteinaSchedulerOutput(prev_sample: Tensor)
```

[源代码](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/schedulers/scheduling_rfd4_proteina.py#L19)

**参数：**

prev_sample (`torch.Tensor`) : 执行步骤后的状态，形状为 `(B, N, D)`：`D` 对于主干网络为 3（坐标单位为纳米），对于局部潜在变量则为潜在宽度。

某一模态的更新后状态。

