Diffusers documentation

LLaDA2

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

LLaDA2

LLaDA2, blok bazlı iteratif iyileştirme yoluyla metin üreten ayrık difüzyon dil modelleri ailesidir. Otoregresif token-token üretimine alternatif olarak LLaDA2, tamamen maskelenmiş bir diziden başlar ve birden fazla iyileştirme adımında tokenları güvene göre kademeli olarak maskeden çıkar.

Kullanım

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

from diffusers import BlockRefinementScheduler, LLaDA2Pipeline

model_id = "inclusionAI/LLaDA2.1-mini"
model = AutoModelForCausalLM.from_pretrained(
    model_id, trust_remote_code=True, dtype=torch.bfloat16, device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
scheduler = BlockRefinementScheduler()

pipe = LLaDA2Pipeline(model=model, scheduler=scheduler, tokenizer=tokenizer)
output = pipe(
    prompt="Write a short poem about the ocean.",
    gen_length=256,
    block_length=32,
    num_inference_steps=32,
    threshold=0.7,
    editing_threshold=0.5,
    max_post_steps=16,
    temperature=0.0,
)
print(output.texts[0])

Geri Çağrılar

Callbacks, her iyileştirme adımının ardından çalışır. callback_kwargs içinde hangi tensörlerin yer alacağını seçmek için callback_on_step_end_tensor_inputs parametresini iletin. Mevcut uygulamada block_x (iyileştirilen dizi penceresi) ve transfer_index (maske doldurma onay maskesi) sağlanır; pencereyi değiştirmek için callback'den {"block_x": ...} döndürün.

def on_step_end(pipe, step, timestep, callback_kwargs):
    block_x = callback_kwargs["block_x"]
    # Inspect or modify `block_x` here.
    return {"block_x": block_x}

out = pipe(
    prompt="Write a short poem.",
    callback_on_step_end=on_step_end,
    callback_on_step_end_tensor_inputs=["block_x"],
)

Önerilen parametreler

LLaDA2.1 modelleri iki modu destekler:

Modthresholdediting_thresholdmax_post_steps
Kalite0.70.516
Hız0.5None16

Post-mask düzenlemeyi kapatmak için editing_threshold=None, 0.0 veya negatif bir değer geçirin.

LLaDA2.0 modelleri için düzenlemeyi devre dışı bırakmak için editing_threshold=None veya 0.0 geçirin.

Tüm modeller için: block_length=32, temperature=0.0, num_inference_steps=32.

LLaDA2Pipeline

sınıf diffusers.LLaDA2Pipeline

< >

( model: Anyscheduler: BlockRefinementSchedulertokenizer: Any | None = None )

LLaDA2 tarzı blok bazlı iteratif iyileştirme yoluyla ayrık difüzyon metin üretimi için pipeline.

Bu pipeline, mask_token_id ile doldurulmuş bir şablon dizisini korur ve bloklar halinde inceltir. Her inceltme adımında, aktif blok için aday token'lar örneklenir ve güvene dayalı olarak bir alt küme onaylanır.

Modelin bir dikkat maskesi ve position_ids kabul etmesi ve [batch, seq, vocab_size] biçiminde logitler döndürmesi beklenir.

__call__

< >

( prompt: str | list[str] | None = Nonemessages: list[dict[str, str]] | None = Noneinput_ids: torch.LongTensor | None = Noneattention_mask: torch.LongTensor | None = Noneuse_chat_template: bool = Trueadd_generation_prompt: bool = Truegen_length: int = 2048block_length: int | None = Nonenum_inference_steps: int = 32temperature: float = 0.0top_p: float | None = Nonetop_k: int | None = Nonesampling_method: str = 'multinomial'threshold: float = 0.7editing_threshold: float | None = 0.5max_post_steps: int = 16minimal_topk: int = 1eos_early_stop: bool = Trueeos_token_id: int | None = Nonemask_token_id: int | None = Nonegenerator: torch.Generator | None = Noneoutput_type: str = 'text'return_dict: bool = Truecallback_on_step_end: Callable[[int, int, dict], None] | PipelineCallback | MultiPipelineCallbacks | None = Nonecallback_on_step_end_tensor_inputs: list[str] | None = None ) → LLaDA2PipelineOutput or tuple

Parametreler

  • prompt (str veya List[str], isteğe bağlı) — Prompt metni. use_chat_template True olduğunda (varsayılan) ve bir sohbet şablonuna sahip bir tokenizer mevcut olduğunda, prompt, tokenizasyondan önce bir sohbet mesajı olarak sarılır.
  • messages (List[Dict[str, str]], isteğe bağlı) — Kodlanacak sohbet mesajları (ör. [{"role": "user", "content": "Hello"}]). Verildiğinde prompt parametresine öncelik verir. apply_chat_template içeren bir tokenizer gerektirir.
  • input_ids (torch.LongTensor, isteğe bağlı) — Önceden tokenize edilmiş girdi kimlikleri. prompt ve messages parametrelerine göre önceliklidir.
  • attention_mask (torch.LongTensor, isteğe bağlı) — input_ids biçimiyle eşleşen, token başına maske (geçerli istem tokenları için 1, dolgu için 0). Yalnızca input_ids sağlandığında kullanılır. Atlandığında (ve input_ids verildiğinde), tüm konumlar geçerli olarak kabul edilir. Girdiler prompt / messages üzerinden oluşturulduğunda, tokenizer’ın maskesi otomatik olarak aktarılır.
  • use_chat_template (bool, varsayılan True) — İstemin bir sohbet şablonuyla sarılıp sarılmayacağı.
  • add_generation_prompt (bool, varsayılan True) — Sohbet şablonları kullanılırken üretim istemcinin eklenip eklenmeyeceğini belirtir.
  • gen_length (int) — Üretilecek jeton sayısı.
  • block_length (int, isteğe bağlı) — İnce ayar için blok boyutu. Verilmezse, zamanlayıcının yapılandırılmış block_length değeri kullanılır.
  • num_inference_steps (int) — Her blok için iyileştirme adım sayısı.
  • 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) — Token'ların onaylanması için güven eşiği.
  • editing_threshold (float, isteğe bağlı) — Zaten taahhüt edilmiş (mask olmayan) jetonların düzenlenmesi için güven eşiği. Pozitif olduğunda, bir blokta tüm mask jetonları çözüldükten sonra pipeline ince ayarı sürdürür: model, bu eşiğin üzerindeki bir güvenle farklı bir jeton öngörürse, mevcut jeton değiştirilir. Düzenlemeyi devre dışı bırakmak için None, 0.0 veya negatif bir değer ayarlayın. Varsayılan değer 0.5'tir.
  • max_post_steps (int) — Bir blokta tüm mask jetonları çözüldükten sonra yapılacak ek iyileştirme iterasyonlarının maksimum sayısı. Yalnızca editing_threshold etkinleştirildiğinde kullanılır. Varsayılan değeri 16'dır.
  • minimal_topk (int) — Adım başına taahhüt edilecek minimum token sayısı.
  • eos_early_stop (bool) — Bir blokta EOS taahhüt edildikten sonra durulup durulmayacağı.
  • eos_token_id (int, isteğe bağlı) — Erken durdurma için kullanılacak EOS token kimliği.
  • mask_token_id (int, isteğe bağlı) — Şablon için kullanılacak mask token kimliği.
  • generator (torch.Generator, isteğe bağlı) — Örnekleme için RNG.
  • output_type (str, varsayılan "text") — Çıktı biçimi. "text" dizileri dizelere çözer (bir tokenizer gerektirir). "seq" yalnızca ham token kimliği dizilerini döndürür.
  • return_dict (bool, isteğe bağlı, varsayılan True) — Bir tuple yerine LLaDA2PipelineOutput döndürülüp döndürülmemesi.
  • callback_on_step_end (Callable veya PipelineCallback, isteğe bağlı) — Her iyileştirme adımının ardından, callback_on_step_end(self, step: int, timestep: int, callback_kwargs: Dict) imzasıyla çalıştırılan geri çağırma.
  • callback_on_step_end_tensor_inputs (List[str], isteğe bağlı) — Geri çağrıya iletilecek tensör anahtarları. İzin verilen anahtarlar: block_x, transfer_index, editing_transfer_index, sampled_tokens, sampled_probs, active_block.

Dönüş değeri

LLaDA2PipelineOutput veya tuple

return_dict True ise LLaDA2PipelineOutput döndürülür, aksi halde ilk öğesi üretilen token kimlikleri (torch.LongTensor) olan, ikinci öğesi ise çözümlenmiş metinler (list[str]) olan bir tuple döndürülür; output_type "seq" olduğunda ikinci öğe None olur.

Blok bazlı iyileştirme ile metin üretin.

Örnekler:

>>> import torch
>>> from transformers import AutoModelForCausalLM, AutoTokenizer
>>> from diffusers import BlockRefinementScheduler, LLaDA2Pipeline

>>> model_id = "inclusionAI/LLaDA2.1-mini"
>>> model = AutoModelForCausalLM.from_pretrained(
...     model_id, trust_remote_code=True, dtype=torch.bfloat16, device_map="auto"
... )
>>> tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
>>> scheduler = BlockRefinementScheduler()

>>> pipe = LLaDA2Pipeline(model=model, scheduler=scheduler, tokenizer=tokenizer)
>>> output = pipe(prompt="What is the meaning of life?", gen_length=256)
>>> print(output.texts[0])

LLaDA2PipelineOutput

sınıf diffusers.LLaDA2PipelineOutput

< >

( sequences: torch.LongTensortexts: list[str] | None = None )

Update on GitHub