Diffusers documentation
CogVideoXTransformer3DModel
CogVideoXTransformer3DModel
Một mô hình Diffusion Transformer cho dữ liệu 3D từ CogVideoX đã được giới thiệu trong CogVideoX: Text-to-Video Diffusion Models with An Expert Transformer bởi Đại học Thanh Hoa & ZhipuAI.
Mô hình có thể được tải bằng đoạn mã sau.
from diffusers import CogVideoXTransformer3DModel
transformer = CogVideoXTransformer3DModel.from_pretrained("THUDM/CogVideoX-2b", subfolder="transformer", dtype=torch.float16).to("cuda") # or "mps", "xpu", "cpu"CogVideoXTransformer3DModel
lớp diffusers.CogVideoXTransformer3DModel
< source >( num_attention_heads: int = 30attention_head_dim: int = 64in_channels: int = 16out_channels: int | None = 16flip_sin_to_cos: bool = Truefreq_shift: int = 0time_embed_dim: int = 512ofs_embed_dim: int | None = Nonetext_embed_dim: int = 4096num_layers: int = 30dropout: float = 0.0attention_bias: bool = Truesample_width: int = 90sample_height: int = 60sample_frames: int = 49patch_size: int = 2patch_size_t: int | None = Nonetemporal_compression_ratio: int = 4max_text_seq_length: int = 226activation_fn: str = 'gelu-approximate'timestep_activation_fn: str = 'silu'norm_elementwise_affine: bool = Truenorm_eps: float = 1e-05spatial_interpolation_scale: float = 1.875temporal_interpolation_scale: float = 1.0use_rotary_positional_embeddings: bool = Falseuse_learned_positional_embeddings: bool = Falsepatch_bias: bool = True )
Tham số
- num_attention_heads (
int, mặc định là30) — Số lượng đầu (heads) được sử dụng cho cơ chế chú ý đa đầu (multi-head attention). - attention_head_dim (
int, mặc định là64) — Số lượng kênh trong mỗi head. - in_channels (
int, mặc định là16) — Số lượng kênh trong đầu vào. - out_channels (
int, tùy chọn, mặc định là16) — Số lượng kênh trong đầu ra. - flip_sin_to_cos (
bool, mặc định làTrue) — Có nên đảo sin thành cos trong time embedding hay không. - time_embed_dim (
int, mặc định là512) — Kích thước đầu ra của các embedding bước thời gian. - ofs_embed_dim (
int, mặc định là512) — Kích thước đầu ra của các embedding “ofs” được sử dụng trong CogVideoX-5b-I2B ở phiên bản 1.5 - text_embed_dim (
int, mặc định là4096) — Kích thước đầu vào của các vector nhúng văn bản từ bộ mã hóa văn bản. - num_layers (
int, mặc định là30) — Số lượng lớp khối Transformer cần sử dụng. - dropout (
float, mặc định là0.0) — Xác suất dropout cần sử dụng. - attention_bias (
bool, mặc định làTrue) — Có sử dụng bias trong các lớp chiếu attention hay không. - sample_width (
int, mặc định là90) — Chiều rộng của các latents đầu vào. - sample_height (
int, mặc định là60) — Chiều cao của các latents đầu vào. - sample_frames (
int, mặc định là49) — Số lượng khung hình trong các latent đầu vào. Lưu ý rằng tham số này đã được khởi tạo sai thành 49 thay vì 13 vì CogVideoX xử lý 13 khung hình latent cùng lúc trong các cài đặt mặc định và được khuyến nghị, nhưng không thể thay đổi thành giá trị đúng để đảm bảo tính tương thích ngược. Để tạo một transformer với K khung hình latent, giá trị đúng cần truyền ở đây là: ((K - 1) * temporal_compression_ratio + 1). - patch_size (
int, mặc định là2) — Kích thước của các patch được sử dụng trong lớp nhúng patch. - temporal_compression_ratio (
int, mặc định là4) — Tỷ lệ nén theo chiều thời gian. Xem tài liệu chosample_frames. - max_text_seq_length (
int, mặc định là226) — Chiều dài tối đa của chuỗi cho các nhúng văn bản đầu vào. - activation_fn (
str, mặc định là"gelu-approximate") — Hàm kích hoạt được sử dụng trong mạng truyền thẳng. - timestep_activation_fn (
str, mặc định là"silu") — Hàm kích hoạt được sử dụng khi tạo các nhúng bước thời gian (timestep embeddings). - norm_elementwise_affine (
bool, mặc định làTrue) — Có sử dụng affine theo từng phần tử trong các lớp chuẩn hóa hay không. - norm_eps (
float, mặc định là1e-5) — Giá trị epsilon được sử dụng trong các lớp chuẩn hóa. - spatial_interpolation_scale (
float, mặc định là1.875) — Hệ số tỷ lệ áp dụng cho các nhúng vị trí 3D trên các chiều không gian. - temporal_interpolation_scale (
float, mặc định là1.0) — Hệ số tỷ lệ áp dụng cho các nhúng vị trí 3D trên các chiều thời gian.
Một mô hình Transformer cho dữ liệu dạng video trong CogVideoX.
forward
< source >( hidden_states: Tensorencoder_hidden_states: Tensortimestep: typing.Union[int, float, torch.LongTensor]timestep_cond: typing.Optional[torch.Tensor] = Noneofs: typing.Union[int, float, torch.LongTensor, NoneType] = Noneimage_rotary_emb: tuple[torch.Tensor, torch.Tensor] | None = Noneattention_kwargs: dict[str, typing.Any] | None = Nonereturn_dict: bool = True )
Tham số
- hidden_states (
torch.Tensorcó hình dạng(batch_size, num_frames, channels, height, width)) —hidden_statesđầu vào. - encoder_hidden_states (
torch.Tensorcó hình dạng(batch_size, sequence_len, embed_dims)) — Các embedding điều kiện (embedding được tính từ các điều kiện đầu vào như prompt) cần sử dụng. - timestep (
torch.LongTensor) — Dùng để chỉ bước khử nhiễu. - timestep_cond (
torch.Tensor, optional) — Các embedding điều kiện cho timestep. Nếu được cung cấp, các embedding này sẽ được cộng với các mẫu đã đi qua lớpself.time_embeddingđể thu được các embedding timestep cuối cùng. - ofs (
torch.Tensor, tùy chọn) — Các embedding offset được sử dụng trong CogVideoX-5b-I2V. - image_rotary_emb (
tuplecủatorch.Tensor, tùy chọn) — Các embedding vị trí xoay đã được tính trước. - attention_kwargs (
dict, tùy chọn) — Một từ điển kwargs, nếu được chỉ định, sẽ được truyền đếnAttentionProcessornhư đã định nghĩa dướiself.processortrong diffusers.models.attention_processor. - return_dict (
bool, tùy chọn, mặc định làTrue) — Có nên trả về một~models.transformer_2d.Transformer2DModelOutputthay vì một tuple thông thường hay không.
Phương thức forward của CogVideoXTransformer3DModel.
Bật các phép chiếu QKV đã hợp nhất. Đối với các module tự chú ý, tất cả các ma trận chiếu (tức là truy vấn, khóa, giá trị) đều được hợp nhất. Đối với các module chú ý chéo, các ma trận chiếu khóa và giá trị được hợp nhất.
> API này 🧪 mang tính thử nghiệm.
Tắt dự phóng QKV hợp nhất nếu đã được bật.
> API này 🧪 mang tính thử nghiệm.
Transformer2DModelOutput
lớp diffusers.models.modeling_outputs.Transformer2DModelOutput
< source >( sample: torch.Tensor )
Tham số
- sample (
torch.Tensorcó hình dạng(batch_size, num_channels, height, width)hoặc(batch size, num_vector_embeds - 1, num_latent_pixels)nếu Transformer2DModel là rời rạc) — Trạng thái ẩn đầu ra được điều kiện bởi đầu vàoencoder_hidden_states. Nếu là rời rạc, trả về các phân phối xác suất cho các pixel tiềm ẩn không nhiễu.
Đầu ra của Transformer2DModel.