# CogVideoXDDIMScheduler

`CogVideoXDDIMScheduler` được xây dựng dựa trên [Denoising Diffusion Implicit Models](https://huggingface.co/papers/2010.02502), dành riêng cho các mô hình CogVideoX.

## CogVideoXDDIMScheduler[[diffusers.CogVideoXDDIMScheduler]]

#### diffusers.CogVideoXDDIMScheduler[[diffusers.CogVideoXDDIMScheduler]]

```python
diffusers.CogVideoXDDIMScheduler(num_train_timesteps: int = 1000, beta_start: float = 0.00085, beta_end: float = 0.012, beta_schedule: typing.Literal['linear', 'scaled_linear', 'squaredcos_cap_v2'] = 'scaled_linear', trained_betas: numpy.ndarray | list[float] | None = None, clip_sample: bool = True, set_alpha_to_one: bool = True, steps_offset: int = 0, prediction_type: typing.Literal['epsilon', 'sample', 'v_prediction'] = 'epsilon', clip_sample_range: float = 1.0, sample_max_value: float = 1.0, timestep_spacing: typing.Literal['linspace', 'leading', 'trailing'] = 'leading', rescale_betas_zero_snr: bool = False, snr_shift_scale: float = 3.0)
```

[Nguồn](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/schedulers/scheduling_ddim_cogvideox.py#L133)

**Tham số:**

num_train_timesteps (`int`, mặc định là 1000) : Số bước khuếch tán để huấn luyện mô hình.

beta_start (`float`, mặc định là 0.00085) : Giá trị `beta` ban đầu của suy luận.

beta_end (`float`, mặc định là 0.0120) : Giá trị `beta` cuối cùng.

beta_schedule (`str`, mặc định là `"scaled_linear"`) : Lịch trình beta, một ánh xạ từ một khoảng beta sang một chuỗi các beta để bước qua mô hình. Chọn từ `linear`, `scaled_linear`, hoặc `squaredcos_cap_v2`.

trained_betas (`np.ndarray`, *tùy chọn*) : Truyền một mảng betas trực tiếp vào constructor để bỏ qua `beta_start` và `beta_end`.

clip_sample (`bool`, mặc định là `True`) : Cắt mẫu dự đoán để đảm bảo ổn định về mặt số học.

clip_sample_range (`float`, mặc định là 1.0) : Độ lớn tối đa cho việc cắt mẫu. Chỉ có hiệu lực khi `clip_sample=True`.

set_alpha_to_one (`bool`, mặc định là `True`) : Mỗi bước khuếch tán sử dụng giá trị tích alpha tại bước đó và tại bước trước đó. Đối với bước cuối cùng, không có alpha trước đó. Khi tùy chọn này là `True`, tích alpha trước đó được cố định là `1`, ngược lại nó sử dụng giá trị alpha tại bước 0.

steps_offset (`int`, mặc định là 0) : Một giá trị bù được cộng vào các bước suy luận, theo yêu cầu của một số họ mô hình.

prediction_type (`str`, defaults to `epsilon`, *optional*) : Prediction type of the scheduler function; can be `epsilon` (predicts the noise of the diffusion process), `sample` (directly predicts the noisy sample`) or `v_prediction` (see section 2.4 of [Imagen Video](https://huggingface.co/papers/2210.02303) paper).

thresholding (`bool`, mặc định là `False`) : Có sử dụng phương pháp "dynamic thresholding" hay không. Phương pháp này không phù hợp với các mô hình khuếch tán trong không gian ẩn như Stable Diffusion.

dynamic_thresholding_ratio (`float`, mặc định là 0.995) : Tỷ lệ cho phương pháp ngưỡng động. Chỉ hợp lệ khi `thresholding=True`.

sample_max_value (`float`, mặc định là 1.0) : Giá trị ngưỡng cho ngưỡng động. Chỉ hợp lệ khi `thresholding=True`.

timestep_spacing (`str`, mặc định là `"leading"`) : Cách các bước thời gian (timesteps) nên được mở rộng. Xem Bảng 2 trong [Common Diffusion Noise Schedules and Sample Steps are Flawed](https://huggingface.co/papers/2305.08891) để biết thêm thông tin.

rescale_betas_zero_snr (`bool`, mặc định là `False`) : Có nên điều chỉnh lại các hệ số beta để có SNR cuối bằng không hay không. Điều này cho phép mô hình tạo ra các mẫu rất sáng và rất tối thay vì giới hạn ở các mẫu có độ sáng trung bình. Liên quan lỏng lẻo đến [`--offset_noise`](https://github.com/huggingface/diffusers/blob/74fd735eb073eb1d774b1ab4154a0876eb82f055/examples/dreambooth/train_dreambooth.py#L506).

snr_shift_scale (`float`, mặc định là 3.0) : Thang dịch chuyển cho SNR.

`DDIMScheduler` mở rộng quy trình khử nhiễu được giới thiệu trong các mô hình xác suất khuếch tán khử nhiễu (DDPM) bằng cách sử dụng hướng dẫn phi Markov.

Mô hình này kế thừa từ [SchedulerMixin](/docs/diffusers/v0.43.0/vi/api/schedulers/overview#diffusers.SchedulerMixin) và [ConfigMixin](/docs/diffusers/v0.43.0/vi/api/configuration#diffusers.ConfigMixin). Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các scheduler, chẳng hạn như tải và lưu.

#### add_noise[[diffusers.CogVideoXDDIMScheduler.add_noise]]

```python
add_noise(original_samples: Tensor, noise: Tensor, timesteps: IntTensor)
```

[Nguồn](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/schedulers/scheduling_ddim_cogvideox.py#L428)

**Tham số:**

original_samples (`torch.Tensor`) : Các mẫu gốc mà nhiễu sẽ được thêm vào.

noise (`torch.Tensor`) : Nhiễu cần thêm vào các mẫu.

timesteps (`torch.IntTensor`) : Các bước thời gian (timesteps) chỉ ra mức độ nhiễu cho từng mẫu.

**Trả về:** `torch.Tensor`

Các mẫu nhiễu.

Thêm nhiễu vào các mẫu gốc theo mức độ nhiễu tại mỗi bước thời gian (đây là quá trình khuếch tán thuận).

#### get_velocity[[diffusers.CogVideoXDDIMScheduler.get_velocity]]

```python
get_velocity(sample: Tensor, noise: Tensor, timesteps: IntTensor)
```

[Nguồn](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/schedulers/scheduling_ddim_cogvideox.py#L471)

**Tham số:**

sample (`torch.Tensor`) : Mẫu đầu vào.

noise (`torch.Tensor`) : Tensor nhiễu.

timesteps (`torch.IntTensor`) : Các bước thời gian (timesteps) cho việc tính toán vận tốc.

**Trả về:** `torch.Tensor`

Tốc độ đã được tính toán.

Tính dự đoán vận tốc từ mẫu và nhiễu theo công thức vận tốc.

#### scale_model_input[[diffusers.CogVideoXDDIMScheduler.scale_model_input]]

```python
scale_model_input(sample: Tensor, timestep: int = None)
```

[Nguồn](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/schedulers/scheduling_ddim_cogvideox.py#L260)

**Tham số:**

sample (`torch.Tensor`) : Mẫu đầu vào.

timestep (`int`, *tùy chọn*) : Bước thời gian hiện tại trong chuỗi khuếch tán.

**Trả về:** `torch.Tensor`

Một mẫu đầu vào đã được chuẩn hóa.

Đảm bảo khả năng hoán đổi với các trình lập lịch cần mở rộng đầu vào của mô hình khử nhiễu tùy thuộc vào bước thời gian hiện tại.

#### set_timesteps[[diffusers.CogVideoXDDIMScheduler.set_timesteps]]

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

[Nguồn](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/schedulers/scheduling_ddim_cogvideox.py#L277)

**Tham số:**

num_inference_steps (`int`) : Số bước khuếch tán được sử dụng khi tạo mẫu bằng một mô hình đã được huấn luyện trước.

device (`str` hoặc `torch.device`, *tuỳ chọn*) : Thiết bị mà các bước thời gian (timesteps) sẽ được chuyển đến. Nếu là `None`, các bước thời gian sẽ không được chuyển.

Đặt các bước thời gian rời rạc được sử dụng cho chuỗi khuếch tán (cần chạy trước khi suy luận).

#### bước[[diffusers.CogVideoXDDIMScheduler.step]]

```python
step(model_output: Tensor, timestep: int, sample: Tensor, eta: float = 0.0, use_clipped_model_output: bool = False, generator: typing.Optional[torch.Generator] = None, variance_noise: typing.Optional[torch.Tensor] = None, return_dict: bool = True)
```

[Nguồn](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/schedulers/scheduling_ddim_cogvideox.py#L328)

**Tham số:**

model_output (`torch.Tensor`) : Đầu ra trực tiếp từ mô hình khuếch tán đã học.

timestep (`int`) : Bước thời gian rời rạc hiện tại trong chuỗi khuếch tán.

sample (`torch.Tensor`) : Một bản sao mẫu hiện tại được tạo ra bởi quá trình khuếch tán.

eta (`float`) : Trọng số của nhiễu cho nhiễu được thêm vào trong bước khuếch tán.

use_clipped_model_output (`bool`, mặc định là `False`) : Nếu `True`, sẽ tính toán `model_output` đã "điều chỉnh" từ mẫu gốc dự đoán đã bị cắt. Điều này là cần thiết vì mẫu gốc dự đoán sẽ bị cắt về khoảng [-1, 1] khi `self.config.clip_sample` là `True`. Nếu không có sự cắt nào xảy ra, `model_output` đã "điều chỉnh" sẽ trùng khớp với giá trị được cung cấp làm đầu vào và `use_clipped_model_output` sẽ không có tác dụng.

generator (`torch.Generator`, *tùy chọn*) : Bộ tạo số ngẫu nhiên.

variance_noise (`torch.Tensor`) : Cách thay thế cho việc tạo nhiễu bằng `generator` bằng cách cung cấp trực tiếp nhiễu cho phương sai. Hữu ích cho các phương pháp như `CycleDiffusion`.

return_dict (`bool`, *tuỳ chọn*, mặc định là `True`) : Có trả về [DDIMSchedulerOutput](/docs/diffusers/v0.43.0/vi/api/schedulers/ddim#diffusers.schedulers.scheduling_ddim.DDIMSchedulerOutput) hay `tuple` hay không.

**Trả về:** [DDIMSchedulerOutput](/docs/diffusers/v0.43.0/vi/api/schedulers/ddim#diffusers.schedulers.scheduling_ddim.DDIMSchedulerOutput) hoặc `tuple`

If return_dict is `True`, [DDIMSchedulerOutput](/docs/diffusers/v0.43.0/vi/api/schedulers/ddim#diffusers.schedulers.scheduling_ddim.DDIMSchedulerOutput) is returned, otherwise a tuple is returned where the first element is the sample tensor.

Dự đoán mẫu từ bước thời gian trước đó bằng cách đảo ngược SDE. Hàm này lan truyền quá trình khuếch tán từ các đầu ra của mô hình đã học (thường nhất là nhiễu được dự đoán).

