Diffusers documentation

Metode peng-cache-an

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Metode peng-cache-an

Metode cache mempercepat diffusion transformers dengan menyimpan dan menggunakan kembali output antara dari lapisan tertentu, seperti lapisan attention dan feedforward, alih-alih menghitungnya ulang pada setiap langkah inferensi.

CacheMixin

kelas diffusers.CacheMixin

< >

( )

Kelas untuk mengaktifkan/menonaktifkan teknik caching pada model difusi.

Teknik penyangga yang didukung:

cache_context

< >

( name: str**kwargs )

Manajer konteks yang menyediakan informasi untuk manajemen cache.

name adalah nama panggilan denoising, biasanya "cond" atau "uncond". Argumen kata kunci menjelaskan di mana loop denoising berada — lihat CacheContext untuk bidang yang diterima, misalnya cache_context("cond", step_index=i, sigma=sigma).

enable_cache

< >

( config )

Parameter

Aktifkan teknik caching pada model.

Contoh:

>>> import torch
>>> from diffusers import CogVideoXPipeline, PyramidAttentionBroadcastConfig

>>> pipe = CogVideoXPipeline.from_pretrained("THUDM/CogVideoX-5b", torch_dtype=torch.bfloat16)
>>> pipe.to("cuda")

>>> config = PyramidAttentionBroadcastConfig(
...     spatial_attention_block_skip_range=2,
...     spatial_attention_timestep_skip_range=(100, 800),
...     current_timestep_callback=lambda: pipe.current_timestep,
... )
>>> pipe.transformer.enable_cache(config)

PyramidAttentionBroadcastConfig

kelas diffusers.PyramidAttentionBroadcastConfig

< >

( spatial_attention_block_skip_range: int | None = Nonetemporal_attention_block_skip_range: int | None = Nonecross_attention_block_skip_range: int | None = Nonespatial_attention_timestep_skip_range: tuple = (100, 800)temporal_attention_timestep_skip_range: tuple = (100, 800)cross_attention_timestep_skip_range: tuple = (100, 800)spatial_attention_block_identifiers: tuple = ('blocks', 'transformer_blocks', 'single_transformer_blocks', 'layers', 'visual_transformer_blocks')temporal_attention_block_identifiers: tuple = ('temporal_transformer_blocks',)cross_attention_block_identifiers: tuple = ('blocks', 'transformer_blocks', 'layers')current_timestep_callback: typing.Callable[[], int] = None )

Parameter

  • spatial_attention_block_skip_range (int, opsional, defaultnya None) — Jumlah kali broadcast spatial attention tertentu dilewati sebelum menghitung state attention yang akan digunakan kembali. Jika ini diatur ke nilai N, komputasi attention akan dilewati N - 1 kali (yaitu, state attention lama akan digunakan kembali) sebelum state attention baru dihitung lagi.
  • temporal_attention_block_skip_range (int, opsional, default None) — Jumlah kali broadcast temporal attention tertentu dilewati sebelum menghitung state attention untuk digunakan kembali. Jika ini diatur ke nilai N, komputasi attention akan dilewati N - 1 kali (yaitu, state attention lama akan digunakan kembali) sebelum state attention baru dihitung lagi.
  • cross_attention_block_skip_range (int, opsional, defaultnya None) — Jumlah kali broadcast cross-attention tertentu dilewati sebelum menghitung state attention yang akan digunakan kembali. Jika ini diatur ke nilai N, komputasi attention akan dilewati N - 1 kali (yaitu, state attention lama akan digunakan kembali) sebelum state attention baru dihitung lagi.
  • spatial_attention_timestep_skip_range (tuple[int, int], defaultnya (100, 800)) — Rentang timestep yang akan dilewati pada lapisan spatial attention. Perhitungan attention akan dilewati secara kondisional jika timestep saat ini berada dalam rentang yang ditentukan.
  • temporal_attention_timestep_skip_range (tuple[int, int], defaultnya (100, 800)) — Rentang timestep yang akan dilewati pada lapisan temporal attention. Perhitungan attention akan dilewati secara kondisional jika timestep saat ini berada dalam rentang yang ditentukan.
  • cross_attention_timestep_skip_range (tuple[int, int], defaultnya (100, 800)) — Rentang timestep yang akan dilewati pada lapisan cross-attention. Perhitungan attention akan dilewati secara kondisional jika timestep saat ini berada dalam rentang yang ditentukan.
  • spatial_attention_block_identifiers (tuple[str, ...]) — Identifikator yang dicocokkan dengan nama layer untuk menentukan apakah layer tersebut merupakan layer spatial attention.
  • temporal_attention_block_identifiers (tuple[str, ...]) — Identifikator yang dicocokkan dengan nama layer untuk menentukan apakah layer tersebut merupakan layer temporal attention.
  • cross_attention_block_identifiers (tuple[str, ...]) — Identifikator yang dicocokkan dengan nama layer untuk menentukan apakah layer tersebut merupakan layer cross-attention.

Konfigurasi untuk Pyramid Attention Broadcast.

diffusers.apply_pyramid_attention_broadcast

< >

( module: Moduleconfig: PyramidAttentionBroadcastConfig )

Parameter

  • module (torch.nn.Module) — Modul yang akan diterapkan Pyramid Attention Broadcast.
  • config (PyramidAttentionBroadcastConfig | None, optional, defaultnya None) — Konfigurasi yang digunakan untuk Pyramid Attention Broadcast.

Terapkan Pyramid Attention Broadcast pada pipeline tertentu.

PAB adalah metode aproksimasi perhatian yang memanfaatkan kemiripan dalam keadaan perhatian antar langkah waktu untuk mengurangi biaya komputasi dari perhitungan perhatian. Poin utama dari makalah tersebut adalah bahwa kemiripan perhatian pada lapisan cross-attention antar langkah waktu sangat tinggi, diikuti oleh kemiripan yang lebih rendah pada lapisan temporal dan spasial. Hal ini memungkinkan pengabaian perhitungan perhatian pada lapisan cross-attention lebih sering daripada pada lapisan temporal dan spasial. Dengan demikian, penerapan PAB akan mempercepat proses inferensi.

Contoh:

>>> import torch
>>> from diffusers import CogVideoXPipeline, PyramidAttentionBroadcastConfig, apply_pyramid_attention_broadcast
>>> from diffusers.utils import export_to_video

>>> pipe = CogVideoXPipeline.from_pretrained("THUDM/CogVideoX-5b", torch_dtype=torch.bfloat16)
>>> pipe.to("cuda")

>>> config = PyramidAttentionBroadcastConfig(
...     spatial_attention_block_skip_range=2,
...     spatial_attention_timestep_skip_range=(100, 800),
...     current_timestep_callback=lambda: pipe.current_timestep,
... )
>>> apply_pyramid_attention_broadcast(pipe.transformer, config)

FasterCacheConfig

kelas diffusers.FasterCacheConfig

< >

( spatial_attention_block_skip_range: int = 2temporal_attention_block_skip_range: int | None = Nonespatial_attention_timestep_skip_range: tuple = (-1, 681)temporal_attention_timestep_skip_range: tuple = (-1, 681)low_frequency_weight_update_timestep_range: tuple = (99, 901)high_frequency_weight_update_timestep_range: tuple = (-1, 301)alpha_low_frequency: float = 1.1alpha_high_frequency: float = 1.1unconditional_batch_skip_range: int = 5unconditional_batch_timestep_skip_range: tuple = (-1, 641)spatial_attention_block_identifiers: tuple = ('^blocks.*attn', '^transformer_blocks.*attn', '^single_transformer_blocks.*attn')temporal_attention_block_identifiers: tuple = ('^temporal_transformer_blocks.*attn',)attention_weight_callback: typing.Callable[[torch.nn.Module], float] = Nonelow_frequency_weight_callback: typing.Callable[[torch.nn.Module], float] = Nonehigh_frequency_weight_callback: typing.Callable[[torch.nn.Module], float] = Nonetensor_format: str = 'BCFHW'is_guidance_distilled: bool = Falsecurrent_timestep_callback: typing.Callable[[], int] = None_unconditional_conditional_input_kwargs_identifiers: list = ('hidden_states', 'encoder_hidden_states', 'timestep', 'attention_mask', 'encoder_attention_mask') )

Parameter

  • spatial_attention_block_skip_range (int, default 2) — Hitung keadaan perhatian setiap N iterasi. Jika ini diatur ke N, komputasi perhatian akan dilewati N - 1 kali (yaitu, keadaan perhatian yang di-cache akan digunakan kembali) sebelum menghitung keadaan perhatian baru lagi.
  • temporal_attention_block_skip_range (int, opsional, default None) — Hitung keadaan perhatian setiap N iterasi. Jika ini diatur ke N, komputasi perhatian akan dilewati N - 1 kali (yaitu, keadaan perhatian yang di-cache akan digunakan kembali) sebelum menghitung keadaan perhatian baru lagi.
  • spatial_attention_timestep_skip_range (tuple[float, float], defaultnya (-1, 681)) — Rentang timestep di mana komputasi spatial attention dapat dilewati tanpa penurunan kualitas yang signifikan. Nilai ini ditentukan oleh pengguna berdasarkan model yang mendasarinya. Nilai pertama dalam tuple adalah batas bawah dan nilai kedua adalah batas atas. Biasanya, timestep difusi untuk denoising berada dalam rentang terbalik dari 0 hingga 1000 (yaitu, denoising dimulai pada timestep 1000 dan berakhir pada timestep 0). Untuk nilai default, ini berarti pengabaian komputasi spatial attention hanya berlaku setelah timestep denoising 681 tercapai, dan berlanjut hingga akhir proses denoising.
  • temporal_attention_timestep_skip_range (tuple[float, float], opsional, default None) — Rentang timestep di mana komputasi temporal attention dapat dilewati tanpa penurunan kualitas yang signifikan. Nilai ini ditentukan oleh pengguna berdasarkan model yang mendasarinya. Nilai pertama dalam tuple adalah batas bawah dan nilai kedua adalah batas atas. Biasanya, timestep difusi untuk denoising berada dalam rentang terbalik dari 0 hingga 1000 (yaitu, denoising dimulai pada timestep 1000 dan berakhir pada timestep 0).
  • low_frequency_weight_update_timestep_range (tuple[int, int], defaultnya (99, 901)) — Rentang timestep di mana pembaruan penskalaan bobot frekuensi rendah diterapkan. Nilai pertama dalam tuple adalah batas bawah dan nilai kedua adalah batas atas dari rentang timestep. Fungsi callback untuk pembaruan hanya dipanggil di dalam rentang ini.
  • high_frequency_weight_update_timestep_range (tuple[int, int], defaultnya (-1, 301)) — Rentang timestep di mana pembaruan penskalaan bobot frekuensi tinggi diterapkan. Nilai pertama dalam tuple adalah batas bawah dan nilai kedua adalah batas atas dari rentang timestep. Fungsi callback untuk pembaruan hanya dipanggil di dalam rentang ini.
  • alpha_low_frequency (float, defaultnya 1.1) — Bobot untuk menskalakan pembaruan frekuensi rendah. Ini digunakan untuk mengaproksimasi cabang tak bersyarat dari output cabang bersyarat.
  • alpha_high_frequency (float, defaultnya 1.1) — Bobot untuk menskalakan pembaruan frekuensi tinggi. Ini digunakan untuk mengaproksimasi cabang tak bersyarat dari keluaran cabang bersyarat.
  • unconditional_batch_skip_range (int, defaultnya 5) — Proses cabang unconditional setiap N iterasi. Jika ini diatur ke N, komputasi cabang unconditional akan dilewati N - 1 kali (yaitu, keadaan cabang unconditional yang di-cache akan digunakan kembali) sebelum menghitung keadaan cabang unconditional yang baru lagi.
  • unconditional_batch_timestep_skip_range (tuple[float, float], defaultnya (-1, 641)) — Rentang timestep di mana komputasi cabang unconditional dapat dilewati tanpa penurunan kualitas yang signifikan. Hal ini harus ditentukan oleh pengguna berdasarkan model yang mendasarinya. Nilai pertama dalam tuple adalah batas bawah dan nilai kedua adalah batas atas.
  • spatial_attention_block_identifiers (tuple[str, ...], defaultnya ("blocks.*attn1", "transformer_blocks.*attn1", "single_transformer_blocks.*attn1")) — Identifikator untuk mencocokkan blok atensi spasial dalam model. Jika nama blok mengandung salah satu identifikator ini, FasterCache akan diterapkan pada blok tersebut. Ini bisa berupa nama lapisan penuh, nama lapisan parsial, atau pola regex. Pencocokan selalu dilakukan menggunakan pencocokan regex.
  • temporal_attention_block_identifiers (tuple[str, ...], defaultnya ("temporal_transformer_blocks.*attn1",)) — Identifikator untuk mencocokkan blok temporal attention dalam model. Jika nama blok mengandung salah satu identifikator ini, FasterCache akan diterapkan pada blok tersebut. Ini bisa berupa nama layer penuh, nama layer parsial, atau pola regex. Pencocokan selalu dilakukan menggunakan regex match.
  • attention_weight_callback (Callable[[torch.nn.Module], float], defaultnya None) — Fungsi callback untuk menentukan bobot yang akan digunakan untuk menskalakan output attention. Fungsi ini harus menerima modul attention sebagai input dan mengembalikan nilai float. Ini digunakan untuk mengaproksimasi cabang unconditional dari output cabang conditional. Jika tidak disediakan, bobot default adalah 0,5 untuk semua timestep. Biasanya, seperti yang dijelaskan dalam makalah, bobot ini harus meningkat secara bertahap dari 0 ke 1 seiring berjalannya inferensi. Pengguna didorong untuk bereksperimen dan menyediakan jadwal bobot kustom yang mempertimbangkan jumlah langkah inferensi dan perilaku model dasar seiring berjalannya proses denoising.
  • low_frequency_weight_callback (Callable[[torch.nn.Module], float], defaultnya None) — Fungsi callback untuk menentukan bobot yang akan digunakan untuk menskalakan pembaruan frekuensi rendah. Jika tidak disediakan, bobot defaultnya adalah 1.1 untuk timestep dalam rentang yang ditentukan (seperti yang dijelaskan dalam makalah).
  • high_frequency_weight_callback (Callable[[torch.nn.Module], float], defaultnya None) — Fungsi callback untuk menentukan bobot yang akan digunakan untuk menskalakan pembaruan frekuensi tinggi. Jika tidak disediakan, bobot defaultnya adalah 1.1 untuk timestep dalam rentang yang ditentukan (seperti yang dijelaskan dalam makalah).
  • tensor_format (str, defaultnya "BCFHW") — Format dari tensor input. Ini harus salah satu dari "BCFHW", "BFCHW", atau "BCHW". Format ini digunakan untuk memisahkan frame laten individual agar komponen frekuensi rendah dan tinggi dapat dihitung.
  • is_guidance_distilled (bool, defaultnya False) — Apakah model tersebut guidance distilled atau tidak. Jika model tersebut guidance distilled, FasterCache tidak akan diterapkan pada level denoiser untuk melewati komputasi cabang unconditional (karena tidak ada cabang tersebut).
  • _unconditional_conditional_input_kwargs_identifiers (list[str], defaultnya ("hidden_states", "encoder_hidden_states", "timestep", "attention_mask", "encoder_attention_mask")) — Identifikator untuk mencocokkan input kwargs yang berisi input unconditional dan conditional yang dikonekasi secara batchwise. Jika nama input kwargs mengandung salah satu identifikator ini, FasterCache akan memisahkan input menjadi cabang unconditional dan conditional. Ini harus berupa daftar nama input kwargs yang persis berisi input unconditional dan conditional yang dikonekasi secara batchwise.

Konfigurasi untuk FasterCache.

diffusers.apply_faster_cache

< >

( module: Moduleconfig: FasterCacheConfig )

Parameter

  • module (torch.nn.Module) — Modul pytorch yang akan diterapkan FasterCache. Biasanya, ini harus berupa arsitektur transformer yang didukung di Diffusers, seperti CogVideoXTransformer3DModel, tetapi implementasi eksternal juga mungkin dapat berfungsi.
  • config (FasterCacheConfig) — Konfigurasi yang digunakan untuk FasterCache.

Menerapkan FasterCache ke pipeline tertentu.

Contoh:

>>> import torch
>>> from diffusers import CogVideoXPipeline, FasterCacheConfig, apply_faster_cache

>>> pipe = CogVideoXPipeline.from_pretrained("THUDM/CogVideoX-5b", torch_dtype=torch.bfloat16)
>>> pipe.to("cuda")

>>> config = FasterCacheConfig(
...     spatial_attention_block_skip_range=2,
...     spatial_attention_timestep_skip_range=(-1, 681),
...     low_frequency_weight_update_timestep_range=(99, 641),
...     high_frequency_weight_update_timestep_range=(-1, 301),
...     spatial_attention_block_identifiers=["transformer_blocks"],
...     attention_weight_callback=lambda _: 0.3,
...     tensor_format="BFCHW",
... )
>>> apply_faster_cache(pipe.transformer, config)

FirstBlockCacheConfig

kelas diffusers.FirstBlockCacheConfig

< >

( threshold: float = 0.05 )

Parameter

  • threshold (float, defaultnya 0.05) — Ambang batas untuk menentukan apakah forward pass melalui semua lapisan model diperlukan atau tidak. Ambang batas yang lebih tinggi biasanya menghasilkan forward pass melalui jumlah lapisan yang lebih sedikit dan inferensi yang lebih cepat, namun dapat menyebabkan kualitas generasi yang lebih buruk. Ambang batas yang lebih rendah mungkin tidak menghasilkan percepatan generasi yang signifikan. Ambang batas ini dibandingkan dengan selisih absmean dari residual antara output saat ini dan output yang di-cache dari blok transformer pertama. Jika selisihnya di bawah ambang batas, forward pass dilewati.

Konfigurasi untuk First Block Cache.

diffusers.apply_first_block_cache

< >

( module: Moduleconfig: FirstBlockCacheConfig )

Parameter

  • module (torch.nn.Module) — Modul pytorch yang akan diterapkan FBCache. Biasanya, ini harus berupa arsitektur transformer yang didukung di Diffusers, seperti CogVideoXTransformer3DModel, tetapi implementasi eksternal juga mungkin dapat berfungsi.
  • config (FirstBlockCacheConfig) — Konfigurasi yang digunakan untuk menerapkan metode FBCache.

Menerapkan First Block Cache ke modul tertentu.

First Block Cache dibangun berdasarkan ide dari TeaCache. Implementasinya secara generik jauh lebih sederhana untuk berbagai model dan telah diintegrasikan terlebih dahulu untuk tujuan eksperimental.

Contoh:

>>> import torch
>>> from diffusers import CogView4Pipeline
>>> from diffusers.hooks import apply_first_block_cache, FirstBlockCacheConfig

>>> pipe = CogView4Pipeline.from_pretrained("THUDM/CogView4-6B", torch_dtype=torch.bfloat16)
>>> pipe.to("cuda")

>>> apply_first_block_cache(pipe.transformer, FirstBlockCacheConfig(threshold=0.2))

>>> prompt = "A photo of an astronaut riding a horse on mars"
>>> image = pipe(prompt, generator=torch.Generator().manual_seed(42)).images[0]
>>> image.save("output.png")

TaylorSeerCacheConfig

kelas diffusers.TaylorSeerCacheConfig

< >

( cache_interval: int = 5disable_cache_before_step: int = 3disable_cache_after_step: int | None = Nonemax_order: int = 1taylor_factors_dtype: typing.Optional[torch.dtype] = torch.bfloat16skip_predict_identifiers: list[str] | None = Nonecache_identifiers: list[str] | None = Noneuse_lite_mode: bool = False )

Parameter

  • cache_interval (int, defaultnya 5) — Interval antara langkah komputasi penuh. Setelah komputasi penuh, output yang di-cache (diperkirakan) digunakan kembali untuk sejumlah langkah denoising berikutnya sebanyak ini sebelum diperbarui dengan forward pass penuh yang baru.
  • disable_cache_before_step (int, defaultnya 3) — Indeks langkah denoising sebelum mana caching dinonaktifkan, yang berarti komputasi penuh dilakukan untuk langkah-langkah awal (0 sampai disable_cache_before_step - 1) untuk mengumpulkan data untuk aproksimasi deret Taylor. Selama langkah-langkah ini, faktor Taylor diperbarui, tetapi caching/prediksi tidak diterapkan. Caching dimulai pada langkah ini.
  • disable_cache_after_step (int, opsional, default None) — Indeks langkah denoising setelah mana caching dinonaktifkan. Jika diatur, untuk langkah >= nilai ini, semua modul menjalankan komputasi penuh tanpa prediksi atau pembaruan state, memastikan akurasi pada tahap akhir jika diperlukan.
  • max_order (int, defaultnya 1) — Urutan tertinggi dalam ekspansi deret Taylor untuk mengaproksimasi output modul. Urutan yang lebih tinggi memberikan aproksimasi yang lebih baik tetapi meningkatkan penggunaan komputasi dan memori.
  • taylor_factors_dtype (torch.dtype, defaultnya torch.bfloat16) — Tipe data yang digunakan untuk menyimpan dan menghitung faktor deret Taylor. Presisi yang lebih rendah mengurangi memori tetapi dapat memengaruhi stabilitas; presisi yang lebih tinggi meningkatkan akurasi dengan biaya memori yang lebih besar.
  • skip_predict_identifiers (list[str], opsional, default None) — Pola Regex (menggunakan re.fullmatch) untuk nama modul yang akan ditempatkan sebagai “skip” dalam mode “cache”. Dalam mode ini, modul dihitung sepenuhnya selama langkah awal atau refresh, tetapi mengembalikan tensor nol (sesuai bentuk yang direkam) selama langkah prediksi untuk melewati komputasi secara hemat.
  • cache_identifiers (list[str], opsional, default None) — Pola regex (menggunakan re.fullmatch) untuk nama modul yang akan ditempatkan dalam mode penyangga deret Taylor, di mana output didekati dan disimpan dalam cache untuk digunakan kembali.
  • use_lite_mode (bool, opsional, default False) — Mengaktifkan varian TaylorSeer ringan yang meminimalkan penggunaan memori dengan menerapkan pola yang telah ditentukan untuk melompati dan meng-cache (misalnya, melompati blok dan meng-cache proyeksi). Ini menimpa inactive_identifiers atau active_identifiers kustom apa pun.

Konfigurasi untuk cache TaylorSeer. Lihat: https://huggingface.co/papers/2503.06923

Catatan:

  • Pola dicocokkan menggunakan re.fullmatch pada nama modul.
  • Jika skip_predict_identifiers atau cache_identifiers diberikan, hanya modul yang cocok yang akan di-hook.
  • Jika keduanya tidak disediakan, semua modul yang mirip perhatian (attention-like) akan di-hook secara default.

Contoh penggunaan tidak aktif dan aktif:

def forward(x):
    x = self.module1(x)  # inactive module: returns zeros tensor based on shape recorded during full compute
    x = self.module2(x)  # active module: caches output here, avoiding recomputation of prior steps
    return x

bfloat16

( *args**kwargs )

Nilai mock untuk jalur bertitik (mis. torch.float32): rantai akses atribut, pemanggilan berperilaku sebagai dekorator pass-through, repr adalah jalur bertitik, dan penggunaannya sebagai kelas dasar menggantikan kelas dasar type polos (PEP 560 __mro_entries__), sehingga subkelas asli tetap mempertahankan metakelas normal dan inspect.signature membaca __init__ asli mereka, bukan milik mock.

diffusers.apply_taylorseer_cache

< >

( module: Moduleconfig: TaylorSeerCacheConfig )

Parameter

  • module (torch.nn.Module) — Subpohon model tempat hook diterapkan.
  • config (TaylorSeerCacheConfig) — Konfigurasi untuk cache.

Menerapkan cache TaylorSeer ke pipeline tertentu (biasanya transformer / UNet).

Fungsi ini mengaitkan modul-modul tertentu dalam model untuk memungkinkan peng-cache-an atau pengabaian berdasarkan konfigurasi yang diberikan, sehingga mengurangi komputasi yang redundan dalam loop denoising difusi.

Contoh:

>>> import torch
>>> from diffusers import FluxPipeline, TaylorSeerCacheConfig

>>> pipe = FluxPipeline.from_pretrained(
...     "black-forest-labs/FLUX.1-dev",
...     torch_dtype=torch.bfloat16,
... )
>>> pipe.to("cuda")

>>> config = TaylorSeerCacheConfig(
...     cache_interval=5,
...     max_order=1,
...     disable_cache_before_step=3,
...     taylor_factors_dtype=torch.float32,
... )
>>> pipe.transformer.enable_cache(config)

MagCacheConfig

kelas diffusers.MagCacheConfig

< >

( threshold: float = 0.06max_skip_steps: int = 3retention_ratio: float = 0.2num_inference_steps: int = 28mag_ratios: typing.Union[torch.Tensor, typing.List[float], NoneType] = Nonecalibrate: bool = False )

Parameter

  • threshold (float, defaultnya 0.06) — Ambang batas untuk error yang terakumulasi. Jika error yang terakumulasi berada di bawah ambang batas ini, komputasi blok akan dilewati. Ambang batas yang lebih tinggi memungkinkan pengabaian yang lebih agresif (lebih cepat) tetapi dapat menurunkan kualitas.
  • max_skip_steps (int, defaultnya 3) — Jumlah maksimum langkah berurutan yang dapat dilewati (K dalam makalah).
  • retention_ratio (float, defaultnya 0.2) — Fraksi dari langkah-langkah awal di mana pengabaian dinonaktifkan untuk memastikan stabilitas. Misalnya, jika num_inference_steps adalah 28 dan retention_ratio adalah 0.2, maka 6 langkah pertama tidak akan pernah diabaikan.
  • num_inference_steps (int, defaultnya 28) — Jumlah langkah inferensi yang digunakan dalam pipeline. Ini diperlukan untuk menginterpolasi mag_ratios dengan benar.
  • mag_ratios (torch.Tensor, opsional) — Rasio magnitudo yang telah dihitung sebelumnya untuk model. Nilai ini bergantung pada checkpoint. Jika tidak disediakan, Anda harus mengatur calibrate=True untuk menghitungnya untuk model spesifik Anda. Untuk model Flux, Anda dapat menggunakan diffusers.hooks.mag_cache.FLUX_MAG_RATIOS.
  • calibrate (bool, defaultnya False) — Jika True, mengaktifkan mode kalibrasi. Dalam mode ini, tidak ada blok yang dilewati. Sebaliknya, hook menghitung rasio magnitudo untuk run saat ini dan mencatatnya di akhir. Gunakan ini untuk memperoleh mag_ratios untuk model atau scheduler baru.

Konfigurasi untuk MagCache.

diffusers.apply_mag_cache

< >

( module: Moduleconfig: MagCacheConfig )

Parameter

  • module (torch.nn.Module) — Modul yang akan diterapkan MagCache-nya.
  • config (MagCacheConfig) — Konfigurasi untuk MagCache.

Menerapkan MagCache ke modul tertentu (biasanya Transformer).

SeaCacheConfig

kelas diffusers.SeaCacheConfig

< >

( threshold: float = 0.25residual_order: int = 1retention_steps: int = 1cache_end_steps: int = 1max_consecutive_cached: int = 2power_exp: float = 3.0raw_vision_callback: typing.Callable[[torch.nn.Module, tuple[typing.Any, ...], dict[str, typing.Any]], list[torch.Tensor] | None] = None )

Parameter

  • threshold (float, defaultnya 0.25) — Anggaran relative-L1 yang terakumulasi. Nilai yang lebih besar membuat cache lebih sering digunakan kembali.
  • residual_order (int, defaultnya 1) — Urutan yang digunakan untuk memprediksi residual transformer. 0 langsung menggunakan ulang residual terbaru dan 1 melakukan ekstrapolasi linear dari dua eksekusi penuh terbaru.
  • retention_steps (int, defaultnya 1) — Jumlah langkah awal scheduler yang selalu dieksekusi secara penuh.
  • cache_end_steps (int, defaultnya 1) — Jumlah langkah scheduler akhir yang selalu dieksekusi secara penuh.
  • max_consecutive_cached (int, defaultnya 2) — Jumlah maksimum penggunaan ulang residual berurutan per konteks cache sebelum memaksa eksekusi penuh. 0 menonaktifkan batas tersebut.
  • power_exp (float, defaultnya 3.0) — Eksponen dari prior kekuatan sinyal bersih SEA. SeaCache menggunakan 3.0 untuk fitur video.
  • raw_vision_callback (Callable, opsional) — Adapter model lanjutan yang mengembalikan latens visual yang membentuk output yang dihasilkan, masing-masing dengan bentuk (C, T, H, W). Sertakan frame kondisioning bersih di dalam lintasan output, tetapi hilangkan petunjuk visual terpisah yang bukan bagian dari output. Jika diabaikan, adapter bawaan akan digunakan jika tersedia.

Konfigurasi untuk SeaCache.

SeaCache dinonaktifkan secara default dan hanya diaktifkan setelah konfigurasi ini diteruskan ke transformer.enable_cache(config).

SeaCache membandingkan indikator Spectral-Evolution-Aware (SEA) antar langkah scheduler. Jika perubahan relatif terakumulasi mereka tetap di bawah threshold, tumpukan blok transformer yang diulang diganti dengan residual yang di-cache. Adapter spesifik model dapat memperluas batas residual melampaui blok-blok tersebut. Transformer video lainnya dapat menggunakan jalur generik dengan mendaftarkan metadata blok mereka dan menyediakan raw_vision_callback; pipeline mereka harus memasuki cache_context untuk setiap trajektori transformer.

Contoh:

>>> from diffusers import Cosmos3OmniPipeline, SeaCacheConfig

>>> pipe = Cosmos3OmniPipeline.from_pretrained("nvidia/Cosmos3-Nano")
>>> pipe.transformer.enable_cache(SeaCacheConfig())

diffusers.apply_sea_cache

< >

( module: Moduleconfig: SeaCacheConfig )

Parameter

  • module (torch.nn.Module) — Modul Transformer untuk di-cache.
  • config (SeaCacheConfig) — Konfigurasi SeaCache.

Terapkan SeaCache pada transformer yang didukung.

SeaCache menggunakan ulang residual yang di-cache untuk tumpukan blok berulang dari transformer. Adapter model dapat menyesuaikan ekstraksi indikator dan batas residual; jalur generik menggunakan metadata blok yang terdaftar dan raw_vision_callback. Parameter kompatibilitas dan cache harus divalidasi untuk setiap model.

Update on GitHub