Diffusers documentation
PAN 2
PAN 2
PAN2 là một mô hình thế giới nền tảng mô phỏng cách một cảnh tiến triển dưới một kế hoạch hành động và chuyển động camera có cơ sở thời gian. Bộ mô phỏng sinh 29B của nó là một transformer khuếch tán đa phương thức hai luồng, được tích hợp tại đây; còn khung suy luận tạo ra các prompt của nó thì không.
PAN 2 được tích hợp dưới dạng các khối Modular Diffusers duy nhất. PAN2Blocks hỗ trợ hai quy trình làm việc:
| Quy trình làm việc | Đầu vào |
|---|---|
t2v | prompt |
i2v | prompt, image |
import torch
from diffusers import ModularPipeline
from diffusers.utils import export_to_video, load_image
pipe = ModularPipeline.from_pretrained("IFM/PAN2")
pipe.load_components(dtype=torch.bfloat16)
pipe.to("cuda")
prompt = "A red fox trots through fresh snow in a pine forest at dawn."
video = pipe(prompt=prompt, generator=torch.Generator().manual_seed(0), output="videos")[0]
export_to_video(video, "pan2_t2v.mp4", fps=24)
image = load_image("path/to/first_frame.png")
video = pipe(prompt=prompt, image=image, generator=torch.Generator().manual_seed(0), output="videos")[0]
export_to_video(video, "pan2_i2v.mp4", fps=24)Classifier-free guidance được cấu hình trên guider (mặc định là guidance_scale=2.5):
pipe.update_components(guider=pipe.guider.new(guidance_scale=5.0))Mọi lần gọi đều nhận một prompt duy nhất, được mã hóa mà không có padding. Do đó, transformer không bao giờ cần attention mask, và mọi attention backend đều khả dụng:
pipe.transformer.set_attention_backend("flash_hub") # FlashAttention-2Trình kiểm tra an toàn
PAN 2 chạy guardrails trên prompt trước khi tạo và trên mọi video đã tạo sau đó, và một prompt hoặc video bị chặn sẽ gây ra ValueError. Các kiểm tra này được bật theo mặc định, và load_components() sẽ nạp các guardrail, đòi hỏi phải có gói PAN 2 guardrail:
pip install git+https://github.com/ifm-ai/pan2-guardrail
Song song ngữ cảnh
PAN2Transformer3DModel hỗ trợ context parallelism. Số lượng token văn bản và video thường không chia hết cho số thiết bị (số token văn bản phụ thuộc vào prompt), vì vậy hãy dùng ulysses_anything hoặc ring_anything cho suy luận. ulysses_degree / ring_degree thông thường, chẳng hạn cho huấn luyện, yêu cầu cả hai số lượng token đều chia hết cho kích thước context parallel.
# torchrun --nproc_per_node=2 pan2_context_parallel.py
import torch
import torch.distributed as dist
from diffusers import ContextParallelConfig, ModularPipeline
dist.init_process_group("nccl")
rank = dist.get_rank()
torch.cuda.set_device(rank)
pipe = ModularPipeline.from_pretrained("IFM/PAN2")
pipe.load_components(dtype=torch.bfloat16)
pipe.to(f"cuda:{rank}")
pipe.transformer.enable_parallelism(config=ContextParallelConfig(ulysses_degree=2, ulysses_anything=True))
video = pipe(prompt="A red fox trots through fresh snow.", generator=torch.Generator().manual_seed(0), output="videos")[0]
dist.destroy_process_group()PAN2ModularPipeline
lớp diffusers.PAN2ModularPipeline
< source >( blocks: diffusers.modular_pipelines.modular_pipeline.ModularPipelineBlocks | None = Nonepretrained_model_name_or_path: str | os.PathLike | None = Nonecomponents_manager: diffusers.modular_pipelines.components_manager.ComponentsManager | None = Nonecollection: str | None = Noneworkflow: str | None = Nonemodular_config_dict: dict[str, typing.Any] | None = Noneconfig_dict: dict[str, typing.Any] | None = None**kwargs )
Một ModularPipeline cho PAN 2: text-to-video, và image-to-video từ một khung hình đầu tiên.
import torch
from diffusers import ModularPipeline
pipe = ModularPipeline.from_pretrained("IFM/PAN2")
pipe.load_components(dtype=torch.bfloat16)Ném ngoại lệ nếu các kiểm tra đang bật nhưng rào chắn PAN 2 chưa được tải.
Tắt các kiểm tra prompt và video, với rủi ro do bạn tự chịu.
Kiểm tra prompt và các video đã tạo bằng guardrail PAN 2.
PAN2Blocks
Các khối pipeline mô-đun cho việc tạo video từ văn bản và tạo video từ hình ảnh với PAN 2.
Các quy trình làm việc được hỗ trợ:
t2v: yêu cầuprompti2v: yêu cầuprompt,image
Các thành phần:
text_encoder (Qwen3_5TextModel) tokenizer (Qwen2Tokenizer) safety_checker (PAN2SafetyChecker) vae
(AutoencoderKLWan) video_processor (VideoProcessor) scheduler (FlowMatchEulerDiscreteScheduler)
transformer (PAN2Transformer3DModel) guider (ClassifierFreeGuidance)
Configs: enable_safety_checker (mặc định: True)
Đầu vào:
prompt (str):
Prompt để hướng dẫn quá trình tạo, một chuỗi duy nhất.
negative_prompt (str, tùy chọn):
Prompt không dùng để hướng dẫn quá trình tạo, một chuỗi duy nhất. Khi cần hướng dẫn nhưng không có (hoặc rỗng)
prompt nào được truyền vào, prompt âm mặc định của PAN 2 sẽ được sử dụng, với các khoảng thời gian được đặt bằng thời lượng của clip.
max_sequence_length (int, tùy chọn, mặc định là 1536):
Độ dài chuỗi tối đa cho việc mã hóa prompt.
num_frames (int, tùy chọn, mặc định là 313):
Số khung hình video cần tạo, có dạng 4 * n + 1.
fps (float, tùy chọn, mặc định là 24.0):
Tốc độ khung hình của video, dùng để thiết lập thời lượng trong prompt âm mặc định.
image (Image, tùy chọn):
Khung hình đầu tiên, một hình ảnh duy nhất.
height (int, tùy chọn):
Chiều cao tính bằng pixel của video được tạo, mặc định là 704.
width (int, tùy chọn):
Chiều rộng tính bằng pixel của video được tạo, mặc định là 1248.
num_videos_per_prompt (int, tùy chọn, mặc định là 1):
Số video cần tạo cho mỗi prompt.
image_latents (Tensor, tùy chọn):
Các latents của khung hình đầu tiên đã được chuẩn hóa. Có thể được tạo từ bước vae_encoder.
num_inference_steps (int):
Số bước khử nhiễu.
sigmas (list, tùy chọn):
Các sigmas tùy chỉnh cho quá trình khử nhiễu.
latents (Tensor):
Các latents nhiễu đã tạo trước để sử dụng làm đầu vào cho việc tạo video.
generator (Generator, tùy chọn):
Torch generator cho việc tạo có tính xác định.
attention_kwargs (dict, tùy chọn):
Các kwargs bổ sung cho các bộ xử lý attention.
output_type (str, tùy chọn, mặc định là np):
Định dạng đầu ra: ‘pil’, ‘np’, ‘pt’.
Đầu ra:
videos (list):
Các video được tạo.