Diffusers documentation

AnyFlow

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

LoRA

AnyFlow

NVIDIA、国立シンガポール大学、マサチューセッツ工科大学の Yuchao Gu、Guian Fang、Yuxin Jiang、Weijia Mao、Song Han、Han Cai、Mike Zheng Shou による AnyFlow: Any-Step Video Diffusion Model with On-Policy Flow Map Distillation

要点: AnyFlowは、フローマップを基盤とする最初の任意ステップ対応の動画拡散フレームワークであり、単一のモデル(双方向または因果)が任意の推論予算に適応できるようにします。

少数ステップの動画生成は、consistency modelによって大きく進展しました。しかし、固定点の定式化により、any-step video diffusion modelでは性能が低下する傾向があります。この制約に対処するため、私たちはフローマップを基盤とする最初のany-step video diffusion蒸留フレームワークであるAnyFlowを提案します。AnyFlowは、z_t → z_0へのマッピングのみを学習するのではなく、任意の時間区間における遷移 z_t → z_r を学習することで、単一のモデルが異なる推論予算に適応できるようにします。事前学習済みのvideo diffusion modelをフローマップモデルにファインチューニングするための改良版のforward flow map学習レシピを設計し、フローマップモデルのon-policy蒸留を可能にするFlow Map Backward Simulationを導入しました。双方向アーキテクチャと因果アーキテクチャの両方において、1.3Bから14Bまでの規模で、text-to-videoおよびimage-to-videoタスクに対する広範な実験により、AnyFlowはconsistencyベースのベースラインを上回り、異なるステップ予算下でも高い忠実性と柔軟なサンプリングを維持することが示されました。

AnyFlow パイプラインは AnyFlow チームによって提供されました。元のコードは GitHub で利用可能であり、プロジェクトページは nvlabs.github.io/AnyFlow にあります。事前学習済みモデルは Hugging Face の nvidia/anyflow コレクションで確認できます。

利用可能なモデル:

チェックポイントバックボーン説明
nvidia/AnyFlow-Wan2.1-T2V-1.3B-DiffusersWan2.1 1.3B双方向 T2V
nvidia/AnyFlow-Wan2.1-T2V-14B-DiffusersWan2.1 14B双方向 T2V
nvidia/AnyFlow-FAR-Wan2.1-1.3B-DiffusersFAR + Wan2.1 1.3BCausal T2V / I2V / V2V
nvidia/AnyFlow-FAR-Wan2.1-14B-DiffusersFAR + Wan2.1 14BCausal T2V / I2V / V2V

AnyFlowPipelineは、テキストから動画への変換(T2V)生成における双方向拡散モデル向けに設計されています。AnyFlowFARPipelineは、チャンク単位の因果拡散モデルであり、テキストから動画への変換(T2V)生成、画像から動画への変換(I2V)生成、および動画の継続(V2V)をサポートします。

AnyFlow(双方向T2V)による生成

import torch
from diffusers import AnyFlowPipeline
from diffusers.utils import export_to_video

pipe = AnyFlowPipeline.from_pretrained(
    "nvidia/AnyFlow-Wan2.1-T2V-1.3B-Diffusers", dtype=torch.bfloat16
).to("cuda")  # or "mps", "xpu", "cpu"

prompt = (
    "An astronaut runs smoothly and appears almost weightless on the lunar surface, "
    "as seen from a low-angle shot that highlights the vast, desolate background of the moon. "
    "The moon's craters and rocky terrain are clearly visible, creating a stark contrast against "
    "the running astronaut who moves with graceful, fluid motions."
)
video = pipe(prompt, num_inference_steps=4, num_frames=81).frames[0]
export_to_video(video, "anyflow_t2v.mp4", fps=16)

AnyFlow (FAR Causal) による生成

causal パイプラインは、video(または video_latents)引数によって T2V / I2V / V2V を選択します。 通常のテキストから動画への生成の場合は両方を省略し、既存のフレームを条件として指定する場合は、T = 4n + 1 を満たす形状 (B, T, C, H, W) の video=<tensor> を [0, 1] の範囲で渡します。I2V には単一の条件付けフレームを、V2V の継続にはより長いクリップを使用します。モデルレイアウトに事前エンコード済みの潜在変数が既にあれば、VAE エンコーディングをスキップするために video_latents=<tensor> として渡します。video と video_latents は排他的です。

公開されているチェックポイントは、chunk_partition=[1, 3, 3, 3, 3, 3, 3, 2](合計 21)を transformer の設定に組み込んでおり、これは正規の 81 生のフレーム(VAE の時間方向ストライド 4 における 21 潜在フレーム)に対応しています。num_frames を変更する場合は、(num_frames - 1) // 4 + 1 になるように合計が一致する chunk_partition を渡してください。そうしないと、パイプラインは ValueError を送出します。

t2v
i2v
v2v
import torch
from diffusers import AnyFlowFARPipeline
from diffusers.utils import export_to_video

pipe = AnyFlowFARPipeline.from_pretrained(
    "nvidia/AnyFlow-FAR-Wan2.1-1.3B-Diffusers", dtype=torch.bfloat16
).to("cuda")  # or "mps", "xpu", "cpu"

prompt = (
    "An astronaut runs smoothly and appears almost weightless on the lunar surface, "
    "as seen from a low-angle shot that highlights the vast, desolate background of the moon."
)
video = pipe(prompt, num_inference_steps=4, num_frames=81).frames[0]
export_to_video(video, "anyflow_far_t2v.mp4", fps=16)

注記

  • Classifier-free guidance はリリースされたチェックポイントに融合されているため、推論時に2回目のガイド付きフォワードパスは実行されません。独自のチェックポイントで別の設定が必要な場合を除き、デフォルトの guidance_scale=1.0 を維持してください。
  • FlowMapEulerDiscreteScheduler は汎用的です。from_pretrained(..., scheduler=FlowMapEulerDiscreteScheduler.from_config(...)) を使用して、任意の flow-map-distilled チェックポイントにアタッチできます。
  • AnyFlowPipeline は AnyFlowTransformer3DModel(双方向)を使用します。AnyFlowFARPipeline は AnyFlowFARTransformer3DModel を使用し、これには圧縮フレームの patch embedding と FAR の因果ブロックマスクが追加されています。
  • LoRAの読み込みは、WanLoraLoaderMixinを通じてサポートされています。これは、アップストリームのWanパイプラインでも使用されている同じミックスインです。
  • トレーニングレシピ(フォワードフローマップ学習およびオンポリシー蒸留)については、元のAnyFlowトレーニングフレームワークのNVlabs/AnyFlowを参照してください。トレーニングはdiffusersの範囲外です。

AnyFlowPipeline

class diffusers.AnyFlowPipeline

< >

( tokenizer: AutoTokenizertext_encoder: UMT5EncoderModeltransformer: AnyFlowTransformer3DModelvae: AutoencoderKLWanscheduler: FlowMapEulerDiscreteScheduler )

パラメータ

  • tokenizer ([AutoTokenizer]) — google/umt5-xxl の Tokenizer。
  • text_encoder ([UMT5EncoderModel]) — google/umt5-xxl テキストエンコーダー。
  • transformer ([AnyFlowTransformer3DModel]) — 双方向フローマップ3D Transformer。
  • vae ([AutoencoderKLWan]) — 動画を潜在表現にエンコード/デコードするVAE。
  • scheduler ([FlowMapEulerDiscreteScheduler]) — Flow-map サンプラー。パイプラインは、推論の各ステップで scheduler.step(..., timestep, sample, r_timestep) を呼び出します。

AnyFlowで紹介された、AnyFlowのフローマップ蒸留チェックポイント向けの双方向テキストから動画生成パイプライン。

AnyFlow は任意の間隔の遷移を学習します zt→zrz_t \to z_r 固定の zt→z0z_t \to z_0 マッピングではなく、consistency models の マッピングを学習するため、再学習せずに 1、2、4、8、16… NFE で蒸留済みチェックポイントを評価できます。このパイプラインは、双方向パスで完全な動画テンソル全体を処理します。チャンク単位の自己回帰(因果)生成には AnyFlowFARPipeline.

サンプリングは、平均速度形式のプレーンなオイラー法(z_r = z_t - (t - r) * u)であり、リノイジングは行いません。公開されている NVIDIA のチェックポイントは、classifier-free guidance をモデルの重みに折り込み済みであるため、デフォルトの guidance_scale=1.0 が推奨される設定です。

このモデルは [DiffusionPipeline] を継承しています。すべてのパイプラインに実装されている汎用的なメソッド(ダウンロード、保存、特定のデバイスでの実行など)については、スーパークラスのドキュメントを参照してください。

__call__

< >

( prompt: typing.Union[str, typing.List[str]] = Nonevideo: typing.Optional[torch.Tensor] = Nonevideo_latents: typing.Optional[torch.Tensor] = Nonenegative_prompt: typing.Union[str, typing.List[str]] = Noneheight: int = 480width: int = 832num_frames: int = 81num_inference_steps: int = 50sigmas: typing.Optional[typing.List[float]] = Nonetimesteps: typing.Optional[typing.List[float]] = Noneguidance_scale: float = 1.0num_videos_per_prompt: typing.Optional[int] = 1generator: typing.Union[torch.Generator, typing.List[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Noneoutput_type: typing.Optional[str] = 'np'return_dict: bool = Trueattention_kwargs: typing.Optional[typing.Dict[str, typing.Any]] = Nonecallback_on_step_end: typing.Union[typing.Callable[[int, int, typing.Dict], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = Nonecallback_on_step_end_tensor_inputs: typing.List[str] = ['latents']max_sequence_length: int = 512use_mean_velocity: bool = True ) → ~AnyFlowPipelineOutput or tuple

パラメータ

  • prompt (str または List[str]、省略可) — 動画生成をガイドするためのプロンプトです。未定義の場合は、代わりに prompt_embeds を渡してください。
  • video (torch.Tensor, 任意) — [0, 1] の範囲で、形状が (B, T, C, H, W) の Pre-VAE 条件フレーム。指定された場合、パイプラインはこれらを VAE でエンコードし、サンプリング中に対応する潜在表現のプレフィックスを固定します。video_latents とは排他的です。
  • video_latents (torch.Tensor, 任意) — AnyFlow レイアウト (B, T_latent, C, H_latent, W_latent) 形式の事前エンコード済み VAE レイテンツです。パイプライン側での VAE エンコードをスキップします。video とは排他的です。
  • negative_prompt (str または List[str]、省略可) — 動画生成時に回避するプロンプトです。guidance を使用していない場合(guidance_scale < 1)は無視されます。
  • height (int、デフォルトは 480) — 生成される動画のピクセル単位の縦幅です。
  • width (int, デフォルトは 832) — 生成される動画の幅(ピクセル単位)。
  • num_frames (int、デフォルトは 81) — 生成される動画のフレーム数です。(num_frames - 1) % vae_scale_factor_temporal == 0 を満たす必要があります。
  • num_inference_steps (int、デフォルト値は50) — デノイジングのステップ数です。Distilled AnyFlow チェックポイントは任意ステップサンプリングに対応しているため、1、2、4、8 といった低い値が一般的です。sigmas または timesteps が指定されている場合は無視されます。
  • sigmas (List[float]、任意) — 任意ステップサンプリング用のカスタム sigma スケジュール。[0, 1] の範囲で、ノイズの多い状態からクリーンな状態の順に並べます。長さが実効的な num_inference_steps を決定し、スケジューラは末尾に 0 の sigma を追加します。
  • timesteps (List[float]、任意) — 任意ステップサンプリング用のカスタムタイムステップスケジュールです。self.scheduler.timesteps と同じ単位(つまり num_train_timesteps でスケーリングされた値)で指定します。sigmas とは排他的です。
  • guidance_scale (float、デフォルト値は 1.0) — Classifier-free guidance のスケールです。公開されている AnyFlow のチェックポイントは、学習時に CFG を重みに融合しています。チェックポイントがそれ以外を想定していることが明確でない限り、1.0 のままにしてください。
  • num_videos_per_prompt (int、任意、デフォルトは1) — 1つのプロンプトに対して生成する動画の数。
  • generator (torch.Generator または List[torch.Generator]、省略可) — 生成を決定論的にするための torch.Generator。
  • latents (torch.Tensor, 任意) — 入力として使用する、事前生成されたノイズ付き latents。指定されない場合、generator からサンプリングされます。
  • prompt_embeds (torch.Tensor, 任意) — 事前に生成されたテキスト埋め込み。テキスト入力の調整(プロンプト重み付けなど)に使用できます。指定されない場合、prompt から埋め込みが生成されます。
  • negative_prompt_embeds (torch.Tensor, 任意) — 事前に生成されたネガティブテキストの埋め込みです。
  • output_type (str、任意、デフォルトは "np") — 出力形式。"pil"、"np"、"pt"、"latent" のいずれかです。
  • return_dict (bool、任意、デフォルトは True) — AnyFlowPipelineOutput を返すか、プレーンなタプルを返すかを指定します。
  • attention_kwargs (dict, 省略可) — 指定された場合、diffusers.models.attention_processor で定義されている self.processor 内の AttentionProcessor に渡される kwargs 辞書です。
  • callback_on_step_end (Callable, 省略可) — 各推論ステップの終了時に呼び出される関数またはPipelineCallback。詳細はcallbacksを参照してください。
  • callback_on_step_end_tensor_inputs (List[str]、省略可、デフォルトは ["latents"]) — コールバックに転送されるテンソル入力です。self._callback_tensor_inputs の部分集合である必要があります。
  • max_sequence_length (int、デフォルトは 512) — テキストエンコーダーのシーケンス長の最大値です。これを超えるプロンプトは切り詰められます。
  • use_mean_velocity (bool、デフォルトは True) — True の場合、フローマップモデルはソースタイムステップ t とターゲットタイムステップ r の両方を条件として平均速度を予測し、学習時の挙動と一致します。無効にすると、生の Euler ステッピング(r = t)を模倣します。

戻り値

~AnyFlowPipelineOutput または tuple

return_dict が True の場合、AnyFlowPipelineOutput が返され、それ以外の場合は、最初の要素が生成された動画である tuple が返されます。

生成用の pipeline への呼び出し関数。

例:

>>> import torch
>>> from diffusers import AnyFlowPipeline
>>> from diffusers.utils import export_to_video

>>> pipe = AnyFlowPipeline.from_pretrained(
...     "nvidia/AnyFlow-Wan2.1-T2V-14B-Diffusers", torch_dtype=torch.bfloat16
... ).to("cuda")

>>> prompt = "A red panda eating bamboo in a forest, cinematic lighting"
>>> video = pipe(prompt, num_inference_steps=4, num_frames=33).frames[0]
>>> export_to_video(video, "anyflow_t2v.mp4", fps=16)

encode_prompt

< >

( prompt: str | list[str]negative_prompt: str | list[str] | None = Nonedo_classifier_free_guidance: bool = Truenum_videos_per_prompt: int = 1prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonemax_sequence_length: int = 226device: typing.Optional[torch.device] = Nonedtype: typing.Optional[torch.dtype] = None )

パラメータ

  • prompt (str または list[str]、省略可能) — エンコードするプロンプト
  • negative_prompt (str または list[str]、省略可) — 画像生成をガイドしないプロンプトです。未定義の場合、代わりに negative_prompt_embeds を渡す必要があります。ガイダンスを使用していない場合は無視されます(guidance_scale が 1 未満の場合は無視されます)。
  • do_classifier_free_guidance (bool、任意、デフォルトは True) — classifier free guidance を使用するかどうかを指定します。
  • num_videos_per_prompt (int、任意、デフォルトは 1) — プロンプトごとに生成する動画の数を指定します。結果の埋め込みを配置する torch デバイス
  • prompt_embeds (torch.Tensor, 任意) — 事前に生成されたテキスト埋め込み。テキスト入力の調整、例えばプロンプトの重み付けなどを容易に行うために使用できます。指定されない場合、prompt 入力引数からテキスト埋め込みが生成されます。
  • negative_prompt_embeds (torch.Tensor, 任意) — 事前に生成されたネガティブなテキスト埋め込みです。テキスト入力の調整、例えばプロンプトの重み付けなどを簡単に実行できます。指定されない場合、negative_prompt 入力引数から negative_prompt_embeds が生成されます。
  • device — (torch.device、任意): torch デバイス
  • dtype — (torch.dtype、省略可): torch の dtype

プロンプトをテキストエンコーダーの隠れ状態にエンコードします。

encode_video

< >

( video: Tensorheight: intwidth: int )

ピクセル空間の動画を AnyFlow の潜在レイアウトにエンコードします。

他の diffusers パイプラインの単一ヘルパー関数の慣例を踏襲しています(WanImageToVideoPipeline.encode_image を参照)。前処理、VAE エンコーディング、潜在変数の正規化を 1 つの呼び出しにまとめます。出力のレイアウトは (B, T_latent, C, H, W) であり、これは AnyFlow トランスフォーマーが条件付けフレームに期待する形式です。

AnyFlowFARPipeline

class diffusers.AnyFlowFARPipeline

< >

( tokenizer: AutoTokenizertext_encoder: UMT5EncoderModeltransformer: AnyFlowFARTransformer3DModelvae: AutoencoderKLWanscheduler: FlowMapEulerDiscreteScheduler )

パラメータ

  • tokenizer ([AutoTokenizer]) — google/umt5-xxl の Tokenizer。
  • text_encoder ([UMT5EncoderModel]) — google/umt5-xxl テキストエンコーダー。
  • transformer ([AnyFlowFARTransformer3DModel]) — FAR causal flow-map 3D Transformer。
  • vae ([AutoencoderKLWan]) — 動画を潜在表現にエンコード/デコードするVAE。
  • scheduler ([FlowMapEulerDiscreteScheduler]) — Flow-map サンプラー。

AnyFlow で紹介された AnyFlow チェックポイント向けの、因果的(FAR ベース)のテキストから動画へ / 画像から動画へ / 動画から動画へのパイプライン。

パイプラインはチャンク単位の自己回帰サンプリングループを駆動します。各チャンクはフローマップステップでデノイズされ、ブロックスパース因果注意機構によって過去のチャンクのみを参照します。また、中間KVキャッシュはチャンク間で再利用されます。

タスクモード(T2V / I2V / V2V)は、__call__にどの条件付け引数が渡されるかによって選択されます:

  • video=None と video_latents=None の両方 — 純粋なテキストから動画への生成。
  • video=<tensor of shape (B, T, C, H, W) in [0, 1] with T = 4n + 1> — VAE によるエンコード前の条件付けフレーム。パイプラインがこれらを VAE でエンコードします。I2V の場合は単一フレームの動画、V2V の場合は複数フレームのクリップを渡します。
  • video_latents=<latent tensor of shape (B, T_latent, C, H_latent, W_latent)> — FARレイアウトで既にエンコード済みの潜変数(VAEのエンコードステップをスキップします)。

FARバックボーンは、FARで導入された因果的なWan2.1バリアントです。 推論は、チャンクごとに平均速度形式のプレーンEuler法を用い、再ノイズ化は行いません。単一の蒸留モデルにより、T2V / I2V / V2Vの統合がサポートされています。

このモデルは [DiffusionPipeline] を継承しています。すべてのパイプラインに実装されている汎用的なメソッド(ダウンロード、保存、特定のデバイスでの実行など)については、スーパークラスのドキュメントを参照してください。

__call__

< >

( prompt: typing.Union[str, typing.List[str]] = Nonevideo: typing.Optional[torch.Tensor] = Nonevideo_latents: typing.Optional[torch.Tensor] = Nonenegative_prompt: typing.Union[str, typing.List[str]] = Noneheight: int = 480width: int = 832num_frames: int = 81num_inference_steps: int = 50sigmas: typing.Optional[typing.List[float]] = Nonetimesteps: typing.Optional[typing.List[float]] = Noneguidance_scale: float = 1.0num_videos_per_prompt: typing.Optional[int] = 1generator: typing.Union[torch.Generator, typing.List[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Noneoutput_type: typing.Optional[str] = 'np'return_dict: bool = Trueattention_kwargs: typing.Optional[typing.Dict[str, typing.Any]] = Nonecallback_on_step_end: typing.Union[typing.Callable[[int, int, typing.Dict], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = Nonecallback_on_step_end_tensor_inputs: typing.List[str] = ['latents']max_sequence_length: int = 512use_mean_velocity: bool = Trueuse_kv_cache: bool = Truechunk_partition: typing.Optional[typing.List[int]] = None ) → ~AnyFlowPipelineOutput or tuple

パラメータ

  • prompt (str または List[str]、省略可) — 動画生成をガイドするためのプロンプトです。未定義の場合は、代わりに prompt_embeds を渡してください。
  • video (torch.Tensor、任意) — [0, 1] の範囲で、形状が (B, T, C, H, W) (T = 4n + 1) の Pre-VAE 条件付けフレーム。指定された場合、パイプラインはこれらを VAE でエンコードし、サンプリング中に対応する潜在変数プレフィックスを固定します。video_latents とは排他的です。
  • video_latents (torch.Tensor, 任意) — FAR レイアウト (B, T_latent, C, H_latent, W_latent) で事前エンコードされた VAE レイテンツです。パイプライン側での VAE エンコードをスキップします。video とは排他です。
  • negative_prompt (str または List[str]、省略可) — 動画生成時に回避するプロンプトです。guidance を使用していない場合(guidance_scale < 1)は無視されます。
  • height (int、デフォルトは 480) — 生成される動画のピクセル単位の縦幅です。
  • width (int, デフォルトは 832) — 生成される動画の幅(ピクセル単位)。
  • num_frames (int、デフォルトは 81) — 生成される動画のフレーム数です。(num_frames - 1) % vae_scale_factor_temporal == 0 を満たす必要があります。
  • num_inference_steps (int、デフォルト値は 50) — チャンクごとのデノイジングステップ数です。Distilled AnyFlow-FAR チェックポイントは、任意のステップ数でのサンプリング(1、2、4、8、…)をサポートします。sigmas または timesteps が指定されている場合は無視されます。
  • sigmas (List[float]、任意) — 任意ステップサンプリング用のカスタム sigma スケジュール。[0, 1] の範囲で、ノイズの多い状態からクリーンな状態の順に並べます。長さが実効的な num_inference_steps を決定し、スケジューラは末尾に 0 の sigma を追加します。
  • timesteps (List[float]、任意) — 任意ステップサンプリング用のカスタムタイムステップスケジュールです。self.scheduler.timesteps と同じ単位(つまり num_train_timesteps でスケーリングされた値)で指定します。sigmas とは排他的です。
  • guidance_scale (float、デフォルト値は 1.0) — Classifier-free guidance のスケールです。公開されている AnyFlow のチェックポイントは、学習中に CFG を重みに融合しています。チェックポイントに別の指定がない限り、1.0 のままにしてください。
  • num_videos_per_prompt (int、任意、デフォルトは1) — 1つのプロンプトに対して生成する動画の数。
  • generator (torch.Generator または List[torch.Generator]、省略可) — サンプリングのシードに使用するジェネレーター。
  • latents (torch.Tensor, 任意) — 事前に生成されたノイズ付き潜在変数。指定されない場合、指定されたgeneratorから潜在変数がサンプリングされます。
  • prompt_embeds (torch.Tensor, 任意) — 事前に生成されたテキスト埋め込み。指定されない場合、prompt から埋め込みが生成されます。
  • negative_prompt_embeds (torch.Tensor, 任意) — 事前に生成されたネガティブテキストの埋め込みです。
  • output_type (str、任意、デフォルトは "np") — 出力形式。"pil"、"np"、"pt"、"latent" のいずれかです。
  • return_dict (bool、任意、デフォルトは True) — AnyFlowPipelineOutput を返すか、プレーンなタプルを返すかを指定します。
  • attention_kwargs (dict, 省略可) — 指定された場合、diffusers.models.attention_processor で定義されている self.processor 内の AttentionProcessor に渡される kwargs 辞書です。
  • callback_on_step_end (Callable、省略可) — 各推論ステップの終了時に呼び出される関数またはPipelineCallback。
  • callback_on_step_end_tensor_inputs (List[str]、任意、デフォルトは ["latents"]) — コールバックに転送されるテンソル入力。self._callback_tensor_inputs の部分集合である必要があります。
  • max_sequence_length (int、デフォルトは512) — テキストエンコーダーのシーケンス長の最大値です。
  • use_mean_velocity (bool、デフォルトは True) — True の場合、ソースタイムステップ t とターゲットタイムステップ r の両方を条件として flow-map モデルに与え、平均速度を予測します。無効にすると、生の Euler ステッピングを模倣します。
  • use_kv_cache (bool、デフォルトは True) — causal チャンク間で FAR attention の KV キャッシュを再利用します。デバッグ目的でのみ無効にしてください。
  • chunk_partition (List[int], 省略可) — チャンクごとのフレーム数。デフォルトは self.transformer.config.chunk_partition です(公開されている 81 フレームのチェックポイントに一致するように設定されています)。 num_frames を変更する場合は、合計が (num_frames - 1) // vae_scale_factor_temporal + 1 になる chunk_partition を指定してください。

戻り値

~AnyFlowPipelineOutput または tuple

return_dict が True の場合、AnyFlowPipelineOutput が返され、それ以外の場合は、最初の要素が生成された動画である tuple が返されます。

生成用の pipeline への呼び出し関数。

例:

>>> import numpy as np
>>> import torch
>>> from diffusers import AnyFlowFARPipeline
>>> from diffusers.utils import export_to_video, load_image

>>> pipe = AnyFlowFARPipeline.from_pretrained(
...     "nvidia/AnyFlow-FAR-Wan2.1-1.3B-Diffusers", torch_dtype=torch.bfloat16
... ).to("cuda")

>>> # Single-frame I2V: wrap the conditioning image as a (1, 1, 3, H, W) tensor in [0, 1].
>>> first_frame = load_image("path/to/first_frame.png").resize((832, 480))
>>> arr = np.asarray(first_frame).astype("float32") / 255.0
>>> context = torch.from_numpy(arr).permute(2, 0, 1).unsqueeze(0).unsqueeze(1).to("cuda")

>>> video = pipe(
...     prompt="a cat walks across a sunlit lawn",
...     video=context,
...     num_inference_steps=4,
...     num_frames=81,
... ).frames[0]
>>> export_to_video(video, "anyflow_far.mp4", fps=16)

encode_prompt

< >

( prompt: str | list[str]negative_prompt: str | list[str] | None = Nonedo_classifier_free_guidance: bool = Truenum_videos_per_prompt: int = 1prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonemax_sequence_length: int = 226device: typing.Optional[torch.device] = Nonedtype: typing.Optional[torch.dtype] = None )

パラメータ

  • prompt (str または list[str]、省略可能) — エンコードするプロンプト
  • negative_prompt (str または list[str]、省略可) — 画像生成をガイドしないプロンプトです。未定義の場合、代わりに negative_prompt_embeds を渡す必要があります。ガイダンスを使用していない場合は無視されます(guidance_scale が 1 未満の場合は無視されます)。
  • do_classifier_free_guidance (bool、任意、デフォルトは True) — classifier free guidance を使用するかどうかを指定します。
  • num_videos_per_prompt (int、任意、デフォルトは 1) — プロンプトごとに生成する動画の数を指定します。結果の埋め込みを配置する torch デバイス
  • prompt_embeds (torch.Tensor, 任意) — 事前に生成されたテキスト埋め込み。テキスト入力の調整、例えばプロンプトの重み付けなどを容易に行うために使用できます。指定されない場合、prompt 入力引数からテキスト埋め込みが生成されます。
  • negative_prompt_embeds (torch.Tensor, 任意) — 事前に生成されたネガティブなテキスト埋め込みです。テキスト入力の調整、例えばプロンプトの重み付けなどを簡単に実行できます。指定されない場合、negative_prompt 入力引数から negative_prompt_embeds が生成されます。
  • device — (torch.device、任意): torch デバイス
  • dtype — (torch.dtype、省略可): torch の dtype

プロンプトをテキストエンコーダーの隠れ状態にエンコードします。

encode_video

< >

( video: Tensorheight: intwidth: int )

ピクセル空間の動画を AnyFlow の潜在レイアウトにエンコードします。

他の diffusers パイプラインの単一ヘルパー関数の慣例を踏襲しています(WanImageToVideoPipeline.encode_image を参照)。前処理、VAE エンコーディング、潜在変数の正規化を 1 つの呼び出しにまとめます。出力のレイアウトは (B, T_latent, C, H, W) であり、これは AnyFlow トランスフォーマーが条件付けフレームに期待する形式です。

AnyFlowPipelineOutput

クラス diffusers.pipelines.anyflow.pipeline_output.AnyFlowPipelineOutput

< >

( frames: Tensor )

パラメータ

  • frames (torch.Tensor, np.ndarray, or list[list[PIL.Image.Image]]) — 動画出力のリストです。batch_size, 長のネストされたリストであり、各サブリストが num_frames. 長のノイズ除去済み PIL 画像シーケンスを含む形式をとることもできます。また、(batch_size, num_frames, channels, height, width) の形状を持つ NumPy 配列や Torch テンソルとしても指定できます。

AnyFlow パイプライン用の出力クラスです。

Update on GitHub