Diffusers documentation
BlockRefinementScheduler
BlockRefinementScheduler
BlockRefinementScheduler, ayrık token difüzyonu için blok bazlı iteratif iyileştirmeyi yönetir. Her adımda en yüksek güvene sahip tokenları sabitler ve model, yüksek güvenle farklı bir token öngördüğünde, isteğe bağlı olarak zaten sabitlenmiş tokenları düzenler.
Bu zamanlayıcı LLaDA2Pipeline tarafından kullanılır.
BlockRefinementScheduler
sınıf diffusers.BlockRefinementScheduler
< source >( block_length: int = 32num_inference_steps: int = 32threshold: float = 0.95editing_threshold: float | None = Noneminimal_topk: int = 1 )
Blok bazlı iteratif iyileştirme için zamanlayıcı (güvene göre commit).
Her adımda, zamanlayıcı model logitlerinden aday token örnekler ve en yüksek güvene sahip olanları onaylar. Adım başına onaylanacak token sayısı, blok uzunluğunun iyileştirme adım sayısına eşit olarak dağıtılmasıyla belirlenir.
İsteğe bağlı olarak düzenlemeyi destekler: tüm maske jetonları çözüldükten sonra, modelin pozitif bir editing_threshold değerinin üzerinde güvenle farklı bir jeton tahmin etmesi durumunda jetonlar değiştirilebilir (None, 0.0 veya negatif değerler düzenlemeyi devre dışı bırakır).
add_noise
< source >( original_samples: torch.LongTensorattention_mask: torch.LongTensorprompt_length: intblock_length: intmask_token_id: intgenerator: torch.Generator | None = None ) → tuple[torch.LongTensor, torch.LongTensor, torch.BoolTensor, torch.BoolTensor]
Parametreler
- original_samples (
torch.LongTensor, şekli(batch_size, seq_len)) — Temiz token kimlikleri. - attention_mask (
torch.LongTensor, şekli(batch_size, seq_len)) — Doldurma maskesi (geçerli için 1, doldurma için 0). - prompt_length (
int) — Maskelemeden muaf tutulacak başlangıçtaki prompt jetonlarının sayısı. - block_length (
int) — Maskleme için blok boyutu. - mask_token_id (
int) — Maskeleme yapılan konumlar için kullanılacak token kimliği. - generator (
torch.Generator, isteğe bağlı) — Tekrarlanabilirlik için RNG.
Dönüş değeri
tuple[torch.LongTensor, torch.LongTensor, torch.BoolTensor, torch.BoolTensor]
(noisy, noisy_rev, masked, masked_rev) — iki tamamlayıcı gürültülü dizi ve bunlara karşılık gelen Boole maskeleri.
Yarı otoregresif blok maskeleme için ileri (gürültüleme) sürecini uygulayın.
İstemden sonraki her blok için, geçerli (doldurma olmayan) tokenların rastgele bir kısmı mask_token_id ile değiştirilir. İki tamamlayıcı görünüm döndürülür: noisy ve noisy_rev; burada birindeki maskelenmiş konumlar, diğerinde maskelenmemiş konumlardır.
check_block_should_continue
< source >( step_idx: intmasks_remaining: boolediting_enabled: boolediting_transfer_index: torch.BoolTensorpost_steps: intmax_post_steps: intfinished: torch.BoolTensor ) → bool
Parametreler
- step_idx (
int) — Bu blok içindeki mevcut iyileştirme adım dizini. - masks_remaining (
bool) — Bloktaki maske jetonlarından herhangi birinin kalıp kalmadığını belirtir. - editing_enabled (
bool) — Düzenleme modunun etkin olup olmadığı. - editing_transfer_index (
torch.BoolTensor) — Bu adımda düzenlenmiş jetonlar. - post_steps (
int) — Şu ana kadar atılan maske sonrası düzenleme adım sayısı. - max_post_steps (
int) — İzin verilen en fazla maske sonrası düzenleme adımı. - finished (
torch.BoolTensor) — Parti başına bitiş bayrakları (EOS algılamasından).
Dönüş değeri
bool
İncelemenin devam etmesi gerekiyorsa True, durdurulması gerekiyorsa False.
İç iyileştirme döngüsünün mevcut blok için devam edip etmemesi gerektiğini belirler.
check_eos_finished
< source >( cur_x: torch.LongTensorsampled_tokens: torch.LongTensorfinal_transfer: torch.BoolTensorfinished: torch.BoolTensoreos_token_id: intmask_token_id: intprompt_length: int ) → torch.BoolTensor
Parametreler
- cur_x (
torch.LongTensor, şekli(batch_size, seq_len)) — Güncel pencereye kadar tüm blokları içeren mevcut tam dizi. - sampled_tokens (
torch.LongTensor, şekli(batch_size, block_length)) — Bu adımda zamanlayıcı tarafından örneklenen jetonlar. - final_transfer (
torch.BoolTensor, şekli(batch_size, block_length)) — Taahhüt edilen ve düzenlenmiş konumların birleşik maskesi. - finished (
torch.BoolTensor, şekli(batch_size,)) — Güncel parti başına bitiş bayrakları. - eos_token_id (
int) — EOS belirteç kimliği. - mask_token_id (
int) — Mask jetonu kimliği. - prompt_length (
int) — Dizinin başındaki istem belirteçlerinin sayısı.
Dönüş değeri
torch.BoolTensor
Bitmiş bayrakları güncellendi.
EOS tokenleri onaylandığında batch başına tamamlanma bayraklarını güncelleyin.
block_length token taahhütlerini num_inference_steps adım arasında eşit olarak dağıtın.
adım
< source >( model_output: torch.Tensortimestep: int | torch.Tensorsample: torch.LongTensormask_token_id: int | None = Nonetemperature: float = 0.0top_p: float | None = Nonetop_k: int | None = Nonesampling_method: str = 'auto'threshold: float | None = Noneediting_threshold: float | None = Noneminimal_topk: int | None = Noneprompt_mask: torch.BoolTensor | None = Nonegenerator: torch.Generator | None = Nonereturn_dict: bool = True )
Parametreler
- model_output (
torch.Tensor, şekli(batch_size, block_length, vocab_size)) — Mevcut blok için modelden gelen ham logitler. - timestep (
intveyatorch.Tensor) — Blokun rafine etme zaman çizelgesindeki mevcut adım indeksi. - sample (
torch.LongTensor, şekli(batch_size, block_length)) — Güncel blok token kimlikleri (mask tabanlı modda taahhüt edilmemiş konumlarda mask token'ları içerir). - mask_token_id (
int, isteğe bağlı) — Maskeleme yapılmış konumlar için kullanılan token kimliği.Noneolduğunda, zamanlayıcı düzgün bozulma modunda çalışır: taahhüt edilen konumları dahili olarak izler (timestep == 0anında sıfırlar) ve taahhüt edilmemiş olanları, DiffusionGemma’nın blok iyileştirme örnekleyicisiyle uyumlu olacak şekilde düzgün rastgele token’larla yeniden gürültüler. - temperature (
float) — Örnekleme sıcaklığı. - top_p (
float, isteğe bağlı) — Nükleer örneklem kesme değeri. - top_k (
int, isteğe bağlı) — Top-k örneklemesi kesme değeri. - sampling_method (
str) — Örnekleme yöntemi (auto,greedy,multinomial). - threshold (
float, isteğe bağlı) — Tokenların onaylanması için güven eşiği. Varsayılan olarak config değeri kullanılır. - editing_threshold (
float, isteğe bağlı) — Maskelenmemiş tokenların düzenlenmesi için güven eşiği; düzenlemeyi etkinleştirmek için pozitif olmalıdır. Varsayılan olarak config değeri kullanılır. - minimal_topk (
int, isteğe bağlı) — Adım başına taahhüt edilecek en az token sayısı. Varsayılan olarak yapılandırma değeri kullanılır. - prompt_mask (
torch.BoolTensor, isteğe bağlı) —(block_length,)biçiminde,True'ün prompt (düzenlenemez) konumlarını işaretlediği Boole maskesi. - generator (
torch.Generator, isteğe bağlı) — Örnekleme için RNG. - return_dict (
bool) —BlockRefinementSchedulerOutputdöndürülüp döndürülmediği veya bir tuple döndürülüp döndürülmediği.
Tek bir iyileştirme adımı gerçekleştirin: logitlerden örnekleyin, güvenilen tokenları sabitleyin ve isteğe bağlı olarak mevcut olanları düzenleyin.
BlockRefinementSchedulerOutput
sınıf diffusers.BlockRefinementSchedulerOutput
< source >( prev_sample: torch.LongTensortransfer_index: torch.BoolTensorediting_transfer_index: torch.BoolTensorsampled_tokens: torch.LongTensorsampled_probs: torch.Tensorpred_logits: torch.Tensor )
Parametreler
- prev_sample (
torch.LongTensor, şekli(batch_size, block_length)) — Güncel rafineleme adımından sonra güncellenmiş blok jetonları. - transfer_index (
torch.BoolTensor, şekli(batch_size, block_length)) — Hangi tokenların taahhüt edildiğini (mask-doldurma) gösteren Boole maskesi. - editing_transfer_index (
torch.BoolTensor, şekli(batch_size, block_length)) — Hangi tokenların düzenlendiğini (maskelenmemiş değiştirme) gösteren Boole maskesi. - sampled_tokens (
torch.LongTensor, şekli(batch_size, block_length)) — Model logit'lerinden örneklenen token kimlikleri. - sampled_probs (
torch.Tensor, şekli(batch_size, block_length)) — Örnekleme yapılan tokenların olasılıkları. - pred_logits (
torch.Tensor, şekli(batch_size, block_length, vocab_size)) — Sonraki adım için kendine koşullandırma (self-conditioning) amacıyla geçirilen gürültü azaltıcı (denoiser) logitleri.
Blok rafineleme zamanlaması için çıktı sınıfı.