Buckets:
| # Allegro | |
| [Allegro: Mở hộp đen của mô hình tạo video cấp thương mại](https://huggingface.co/papers/2410.15458) từ RhymesAI, bởi Yuan Zhou, Qiuyue Wang, Yuxuan Cai, Huan Yang. | |
| Tóm tắt từ bài báo là: | |
| *Nhiều tiến bộ đáng kể đã được thực hiện trong lĩnh vực tạo video, với cộng đồng mã nguồn mở đóng góp một kho tàng các bài báo nghiên cứu và công cụ để huấn luyện các mô hình chất lượng cao. Tuy nhiên, bất chấp những nỗ lực này, thông tin và tài nguyên hiện có vẫn chưa đủ để đạt được hiệu suất ở cấp độ thương mại. Trong báo cáo này, chúng tôi mở hộp đen và giới thiệu Allegro, một mô hình tạo video tiên tiến vượt trội về cả chất lượng lẫn tính nhất quán theo thời gian. Chúng tôi cũng chỉ ra những hạn chế hiện tại của lĩnh vực này và trình bày một phương pháp luận toàn diện để huấn luyện các mô hình tạo video hiệu suất cao ở cấp độ thương mại, giải quyết các khía cạnh chính như dữ liệu, kiến trúc mô hình, quy trình huấn luyện và đánh giá. Nghiên cứu người dùng của chúng tôi cho thấy Allegro vượt qua các mô hình mã nguồn mở hiện có và phần lớn các mô hình thương mại, chỉ xếp sau Hailuo và Kling. Mã nguồn: https://github.com/rhymes-ai/Allegro , Mô hình: https://huggingface.co/rhymes-ai/Allegro , Thư viện ảnh: https://rhymes.ai/allegro_gallery .* | |
| > [!TIP] | |
| > Hãy chắc chắn xem qua [hướng dẫn](../../using-diffusers/schedulers) về Schedulers để tìm hiểu cách khám phá sự đánh đổi giữa tốc độ và chất lượng của scheduler, và xem phần [tái sử dụng các thành phần giữa các pipeline](../../using-diffusers/loading#reusing-models-in-multiple-pipelines) để tìm hiểu cách nạp các thành phần giống nhau vào nhiều pipeline một cách hiệu quả. | |
| ## Lượng tử hóa | |
| Quantization giúp giảm yêu cầu về bộ nhớ của các mô hình rất lớn bằng cách lưu trữ trọng số mô hình trong kiểu dữ liệu có độ chính xác thấp hơn. Tuy nhiên, lượng tử hóa có thể ảnh hưởng khác nhau đến chất lượng video tùy thuộc vào mô hình video. | |
| Tham khảo phần tổng quan [Lượng tử hóa](../../quantization/overview) để tìm hiểu thêm về các backend lượng tử hóa được hỗ trợ và cách chọn một backend lượng tử hóa phù hợp với trường hợp sử dụng của bạn. Ví dụ bên dưới minh họa cách tải một [AllegroPipeline](/docs/diffusers/main/vi/api/pipelines/allegro#diffusers.AllegroPipeline) đã được lượng tử hóa để suy luận bằng bitsandbytes. | |
| ```py | |
| import torch | |
| from diffusers import BitsAndBytesConfig as DiffusersBitsAndBytesConfig, AllegroTransformer3DModel, AllegroPipeline | |
| from diffusers.utils import export_to_video | |
| from transformers import BitsAndBytesConfig as BitsAndBytesConfig, T5EncoderModel | |
| quant_config = BitsAndBytesConfig(load_in_8bit=True) | |
| text_encoder_8bit = T5EncoderModel.from_pretrained( | |
| "rhymes-ai/Allegro", | |
| subfolder="text_encoder", | |
| quantization_config=quant_config, | |
| dtype=torch.float16, | |
| ) | |
| quant_config = DiffusersBitsAndBytesConfig(load_in_8bit=True) | |
| transformer_8bit = AllegroTransformer3DModel.from_pretrained( | |
| "rhymes-ai/Allegro", | |
| subfolder="transformer", | |
| quantization_config=quant_config, | |
| dtype=torch.float16, | |
| ) | |
| pipeline = AllegroPipeline.from_pretrained( | |
| "rhymes-ai/Allegro", | |
| text_encoder=text_encoder_8bit, | |
| transformer=transformer_8bit, | |
| dtype=torch.float16, | |
| device_map="balanced", | |
| ) | |
| prompt = ( | |
| "A seaside harbor with bright sunlight and sparkling seawater, with many boats in the water. From an aerial view, " | |
| "the boats vary in size and color, some moving and some stationary. Fishing boats in the water suggest that this " | |
| "location might be a popular spot for docking fishing boats." | |
| ) | |
| video = pipeline(prompt, guidance_scale=7.5, max_sequence_length=512).frames[0] | |
| export_to_video(video, "harbor.mp4", fps=15) | |
| ``` | |
| ## AllegroPipeline[[diffusers.AllegroPipeline]] | |
| #### diffusers.AllegroPipeline[[diffusers.AllegroPipeline]] | |
| ```python | |
| diffusers.AllegroPipeline(tokenizer: T5Tokenizer, text_encoder: T5EncoderModel, vae: AutoencoderKLAllegro, transformer: AllegroTransformer3DModel, scheduler: KarrasDiffusionSchedulers) | |
| ``` | |
| [Nguồn](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/allegro/pipeline_allegro.py#L144) | |
| **Tham số:** | |
| vae (`AllegroAutoEncoderKL3D`) : Mô hình Variational Auto-Encoder (VAE) để mã hóa và giải mã video từ và sang các biểu diễn ẩn. | |
| text_encoder (`T5EncoderModel`) : Bộ mã hóa văn bản đóng băng. PixArt-Alpha sử dụng [T5](https://huggingface.co/docs/transformers/model_doc/t5#transformers.T5EncoderModel), cụ thể là biến thể [t5-v1_1-xxl](https://huggingface.co/PixArt-alpha/PixArt-alpha/tree/main/t5-v1_1-xxl). | |
| tokenizer (`T5Tokenizer`) : Tokenizer của lớp [T5Tokenizer](https://huggingface.co/docs/transformers/model_doc/t5#transformers.T5Tokenizer). | |
| transformer ([AllegroTransformer3DModel](/docs/diffusers/main/vi/api/models/allegro_transformer3d#diffusers.AllegroTransformer3DModel)) : Một `AllegroTransformer3DModel` có điều kiện văn bản để khử nhiễu các latents video đã mã hóa. | |
| scheduler ([SchedulerMixin](/docs/diffusers/main/vi/api/schedulers/overview#diffusers.SchedulerMixin)) : Một scheduler được sử dụng kết hợp với `transformer` để khử nhiễu các latents video đã được mã hóa. | |
| Pipeline để tạo video từ văn bản sử dụng Allegro. | |
| Mô hình này kế thừa từ [DiffusionPipeline](/docs/diffusers/main/vi/api/pipelines/overview#diffusers.DiffusionPipeline). 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 pipeline (chẳng hạn như tải xuống hoặc lưu, chạy trên một thiết bị cụ thể, v.v.) | |
| #### __call__[[diffusers.AllegroPipeline.__call__]] | |
| ```python | |
| __call__(prompt: str | list[str] = None, negative_prompt: str = '', num_inference_steps: int = 100, timesteps: list[int] = None, guidance_scale: float = 7.5, num_frames: int | None = None, height: int | None = None, width: int | None = None, num_videos_per_prompt: int = 1, eta: float = 0.0, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_attention_mask: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_attention_mask: typing.Optional[torch.Tensor] = None, output_type: str | None = 'pil', return_dict: bool = True, callback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], clean_caption: bool = True, max_sequence_length: int = 512) | |
| ``` | |
| [Nguồn](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/allegro/pipeline_allegro.py#L665) | |
| **Tham số:** | |
| prompt (`str` hoặc `list[str]`, *tùy chọn*) : Prompt hoặc các prompt để định hướng việc tạo video. Nếu không được định nghĩa, bạn phải truyền `prompt_embeds` thay thế. | |
| negative_prompt (`str` hoặc `list[str]`, *tùy chọn*) : Prompt hoặc các prompt không được dùng để định hướng việc tạo video. Nếu không được định nghĩa, bạn phải truyền `negative_prompt_embeds` thay thế. Bỏ qua khi không sử dụng guidance (tức là bị bỏ qua nếu `guidance_scale` nhỏ hơn `1`). | |
| num_inference_steps (`int`, *optional*, mặc định là 100) : Số bước khử nhiễu. Số bước khử nhiễu nhiều hơn thường dẫn đến video có chất lượng cao hơn, đổi lại là suy luận chậm hơn. | |
| timesteps (`list[int]`, *optional*) : Các bước thời gian tùy chỉnh để sử dụng cho quá trình khử nhiễu. Nếu không được định nghĩa, các bước thời gian `num_inference_steps` cách đều sẽ được sử dụng. Phải được sắp xếp theo thứ tự giảm dần. | |
| guidance_scale (`float`, *optional*, mặc định là 7.5) : Thang độ dẫn hướng như được định nghĩa trong [Classifier-Free Diffusion Guidance](https://huggingface.co/papers/2207.12598). `guidance_scale` được định nghĩa là `w` của phương trình 2. trong [Imagen Paper](https://huggingface.co/papers/2205.11487). Thang độ dẫn hướng được kích hoạt bằng cách đặt `guidance_scale > 1`. Thang độ dẫn hướng cao hơn khuyến khích tạo ra các video gắn kết chặt chẽ với `prompt` văn bản, thường phải đánh đổi bằng chất lượng video thấp hơn. | |
| num_videos_per_prompt (`int`, *tuỳ chọn*, mặc định là 1) : Số lượng video cần tạo cho mỗi prompt. | |
| num_frames : (`int`, *optional*, mặc định là 88): Số này kiểm soát các khung hình video được tạo ra. | |
| height (`int`, *tuỳ chọn*, mặc định là self.unet.config.sample_size) : Chiều cao tính bằng pixel của video được tạo ra. | |
| width (`int`, *tuỳ chọn*, mặc định là self.unet.config.sample_size) : Độ rộng tính bằng pixel của video được tạo ra. | |
| eta (`float`, *optional*, mặc định là 0.0) : Tương ứng với tham số eta (η) trong bài báo DDIM: https://huggingface.co/papers/2010.02502. Chỉ áp dụng cho [schedulers.DDIMScheduler](/docs/diffusers/main/vi/api/schedulers/ddim#diffusers.DDIMScheduler), sẽ bị bỏ qua với các trình lập lịch khác. | |
| generator (`torch.Generator` hoặc `list[torch.Generator]`, *tùy chọn*) : Một hoặc một danh sách [torch generator](https://pytorch.org/docs/stable/generated/torch.Generator.html) để đảm bảo quá trình sinh là tất định. | |
| latents (`torch.Tensor`, *optional*) : generation. Có thể được sử dụng để tinh chỉnh cùng một quá trình generation với các prompt khác nhau. Nếu không được cung cấp, một tensor latents Pre-generated noisy latents, được lấy mẫu từ phân phối Gaussian, sẽ được tạo ra bằng cách lấy mẫu bằng cách sử dụng `generator` ngẫu nhiên được cung cấp. | |
| prompt_embeds (`torch.Tensor`, *tùy chọn*) : Các vector nhúng văn bản đã được tạo trước. Có thể được sử dụng để dễ dàng điều chỉnh các đầu vào văn bản, *vd.* trọng số prompt. Nếu không được cung cấp, các vector nhúng văn bản sẽ được tạo từ đối số đầu vào `prompt`. | |
| prompt_attention_mask (`torch.Tensor`, *tùy chọn*) : Mặt nạ chú ý (attention mask) được tạo trước cho các vector nhúng văn bản. | |
| negative_prompt_embeds (`torch.Tensor`, *tùy chọn*) : Các vector nhúng văn bản âm đã được tạo trước. Đối với PixArt-Sigma, prompt âm này nên là "". Nếu không được cung cấp, negative_prompt_embeds sẽ được tạo từ đối số đầu vào `negative_prompt`. | |
| negative_prompt_attention_mask (`torch.Tensor`, *tùy chọn*) : Mặt nạ chú ý (attention mask) được tạo trước cho các vector nhúng văn bản âm. | |
| output_type (`str`, *tùy chọn*, mặc định là `"pil"`) : Định dạng đầu ra của video được tạo. Chọn giữa [PIL](https://pillow.readthedocs.io/en/stable/): `PIL.Image.Image` hoặc `np.array`. | |
| return_dict (`bool`, *tùy chọn*, mặc định là `True`) : Có nên trả về một `~pipelines.stable_diffusion.IFPipelineOutput` thay vì một tuple thông thường hay không. | |
| callback_on_step_end (`Callable`, *tùy chọn*) : Một hàm được gọi vào cuối mỗi bước khử nhiễu trong quá trình suy luận. Hàm này được gọi với các đối số sau: `callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)`. `callback_kwargs` sẽ bao gồm một danh sách tất cả các tensor như được chỉ định bởi `callback_on_step_end_tensor_inputs`. | |
| callback_on_step_end_tensor_inputs (`List`, *tùy chọn*) : Danh sách các đầu vào tensor cho hàm `callback_on_step_end`. Các tensor được chỉ định trong danh sách sẽ được truyền dưới dạng tham số `callback_kwargs`. Bạn chỉ có thể bao gồm các biến được liệt kê trong thuộc tính `._callback_tensor_inputs` của lớp pipeline của bạn. | |
| clean_caption (`bool`, *tùy chọn*, mặc định là `True`) : Có dọn dẹp chú thích trước khi tạo embeddings hay không. Yêu cầu `beautifulsoup4` và `ftfy` phải được cài đặt. Nếu các phụ thuộc này không được cài đặt, embeddings sẽ được tạo từ prompt thô. | |
| max_sequence_length (`int` mặc định là `512`) : Độ dài tối đa của chuỗi để sử dụng với `prompt`. | |
| **Trả về:** [AllegroPipelineOutput](/docs/diffusers/main/vi/api/pipelines/allegro#diffusers.pipelines.allegro.pipeline_output.AllegroPipelineOutput) hoặc `tuple` | |
| Nếu `return_dict` là `True`, [AllegroPipelineOutput](/docs/diffusers/main/vi/api/pipelines/allegro#diffusers.pipelines.allegro.pipeline_output.AllegroPipelineOutput) sẽ được trả về, ngược lại một `tuple` sẽ được trả về trong đó phần tử đầu tiên là một danh sách chứa các video đã tạo. | |
| Hàm được gọi khi gọi pipeline cho việc sinh. | |
| Ví dụ: | |
| ```py | |
| >>> import torch | |
| >>> from diffusers import AutoencoderKLAllegro, AllegroPipeline | |
| >>> from diffusers.utils import export_to_video | |
| >>> vae = AutoencoderKLAllegro.from_pretrained("rhymes-ai/Allegro", subfolder="vae", torch_dtype=torch.float32) | |
| >>> pipe = AllegroPipeline.from_pretrained("rhymes-ai/Allegro", vae=vae, torch_dtype=torch.bfloat16).to("cuda") | |
| >>> pipe.vae.enable_tiling() | |
| >>> prompt = ( | |
| ... "A seaside harbor with bright sunlight and sparkling seawater, with many boats in the water. From an aerial view, " | |
| ... "the boats vary in size and color, some moving and some stationary. Fishing boats in the water suggest that this " | |
| ... "location might be a popular spot for docking fishing boats." | |
| ... ) | |
| >>> video = pipe(prompt, guidance_scale=7.5, max_sequence_length=512).frames[0] | |
| >>> export_to_video(video, "output.mp4", fps=15) | |
| ``` | |
| #### encode_prompt[[diffusers.AllegroPipeline.encode_prompt]] | |
| ```python | |
| encode_prompt(prompt: str | list[str], do_classifier_free_guidance: bool = True, negative_prompt: str = '', num_videos_per_prompt: int = 1, device: typing.Optional[torch.device] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_attention_mask: typing.Optional[torch.Tensor] = None, negative_prompt_attention_mask: typing.Optional[torch.Tensor] = None, clean_caption: bool = False, max_sequence_length: int = 512, **kwargs) | |
| ``` | |
| [Nguồn](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/allegro/pipeline_allegro.py#L215) | |
| **Tham số:** | |
| prompt (`str` hoặc `list[str]`, *tùy chọn*) : prompt cần được mã hóa | |
| negative_prompt (`str` hoặc `list[str]`, *tùy chọn*) : Prompt không dùng để hướng dẫn tạo ảnh. Nếu không được định nghĩa, cần truyền `negative_prompt_embeds` thay thế. Bỏ qua khi không sử dụng guidance (tức là bỏ qua nếu `guidance_scale` nhỏ hơn `1`). Đối với PixArt-Alpha, giá trị này nên là "". | |
| do_classifier_free_guidance (`bool`, *tùy chọn*, mặc định là `True`) : có sử dụng classifier free guidance hay không | |
| num_videos_per_prompt (`int`, *tùy chọn*, mặc định là 1) : số lượng hình ảnh cần được tạo cho mỗi prompt | |
| device : (`torch.device`, *tùy chọn*): thiết bị torch để đặt các embedding kết quả lên | |
| prompt_embeds (`torch.Tensor`, *tùy chọn*) : Các vector nhúng văn bản đã được tạo trước. Có thể được sử dụng để dễ dàng điều chỉnh các đầu vào văn bản, *vd.* trọng số prompt. Nếu không được cung cấp, các vector nhúng văn bản sẽ được tạo từ đối số đầu vào `prompt`. | |
| negative_prompt_embeds (`torch.Tensor`, *tuỳ chọn*) : Các vector nhúng văn bản âm đã được tạo trước. Đối với PixArt-Alpha, đây nên là các vector nhúng của chuỗi "". | |
| clean_caption (`bool`, mặc định là `False`) : Nếu `True`, hàm sẽ tiền xử lý và làm sạch chú thích được cung cấp trước khi mã hóa. | |
| max_sequence_length (`int`, mặc định là 512) : Độ dài tối đa của chuỗi được sử dụng cho prompt. | |
| Mã hóa prompt thành các trạng thái ẩn của text encoder. | |
| ## AllegroPipelineOutput[[diffusers.pipelines.allegro.pipeline_output.AllegroPipelineOutput]] | |
| #### diffusers.pipelines.allegro.pipeline_output.AllegroPipelineOutput[[diffusers.pipelines.allegro.pipeline_output.AllegroPipelineOutput]] | |
| ```python | |
| diffusers.pipelines.allegro.pipeline_output.AllegroPipelineOutput(frames: typing.Union[torch.Tensor, numpy.ndarray, list[list[PIL.Image.Image]]]) | |
| ``` | |
| [Nguồn](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/allegro/pipeline_output.py#L11) | |
| **Tham số:** | |
| frames (`torch.Tensor`, `np.ndarray`, hoặc list[list[PIL.Image.Image]]) : danh sách các đầu ra video - Có thể là một danh sách lồng nhau có độ dài `batch_size,` trong đó mỗi danh sách con chứa các chuỗi hình ảnh PIL đã khử nhiễu có độ dài `num_frames.` Nó cũng có thể là một mảng NumPy hoặc tensor Torch có hình dạng `(batch_size, num_frames, channels, height, width)`. | |
| Lớp đầu ra cho các pipeline Allegro. | |
Xet Storage Details
- Size:
- 18.3 kB
- Xet hash:
- bfc0e7b01b8f54e394c07b2c12366333c14166f4ebbe44eaf03435c2077a845f
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.