Buckets:

mishig's picture
|
download
raw
9.96 kB
# LLaDA2
[LLaDA2](https://huggingface.co/collections/inclusionAI/llada21), 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üven düzeyine göre kademeli olarak maskesini kaldırır.
## Kullanım
```py
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.
```py
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:
| Mod | `threshold` | `editing_threshold` | `max_post_steps` |
|------|-------------|---------------------|------------------|
| Kalite | 0.7 | 0.5 | 16 |
| Hız | 0.5 | `None` | 16 |
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[[diffusers.LLaDA2Pipeline]]
#### diffusers.LLaDA2Pipeline[[diffusers.LLaDA2Pipeline]]
```python
diffusers.LLaDA2Pipeline(model: Any, scheduler: BlockRefinementScheduler, tokenizer: Any | None = None)
```
[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/llada2/pipeline_llada2.py#L59)
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 bunu bloklar halinde iyileştirir. Her iyileştirme 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__[[diffusers.LLaDA2Pipeline.__call__]]
```python
__call__(prompt: str | list[str] | None = None, messages: list[dict[str, str]] | None = None, input_ids: torch.LongTensor | None = None, attention_mask: torch.LongTensor | None = None, use_chat_template: bool = True, add_generation_prompt: bool = True, gen_length: int = 2048, block_length: int | None = None, num_inference_steps: int = 32, temperature: float = 0.0, top_p: float | None = None, top_k: int | None = None, sampling_method: str = 'multinomial', threshold: float = 0.7, editing_threshold: float | None = 0.5, max_post_steps: int = 16, minimal_topk: int = 1, eos_early_stop: bool = True, eos_token_id: int | None = None, mask_token_id: int | None = None, generator: torch.Generator | None = None, output_type: str = 'text', return_dict: bool = True, callback_on_step_end: Callable[[int, int, dict], None] | PipelineCallback | MultiPipelineCallbacks | None = None, callback_on_step_end_tensor_inputs: list[str] | None = None)
```
[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/llada2/pipeline_llada2.py#L242)
**Parametreler:**
prompt (`str` veya `List[str]`, *isteğe bağlı*) : İstek metni. `use_chat_template` `True` (varsayılan) olduğunda ve sohbet şablonu olan bir tokenizer mevcut olduğunda, istek, tokenizasyondan önce bir sohbet mesajına 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ı*) : Ön işlenmiş girdi kimlikleri. `prompt` ve `messages` üzerinde önceliğe sahiptir.
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. `prompt` / `messages` kullanılarak girdiler oluşturulduğunda, tokenizer'ın maskesi otomatik olarak aktarılır.
use_chat_template (`bool`, varsayılan `True`) : İsteğin 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`) : Blok başına 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 noktası.
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 üzerinde 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ümlendikten sonra uygulanacak 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 maske belirteç kimliği.
generator (`torch.Generator`, *isteğe bağlı*) : Örnekleme için RNG.
output_type (`str`, varsayılan `"text"`) : Çıktı biçimi. `"text"`, dizileri metinlere çö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](/docs/diffusers/main/tr/api/pipelines/llada2#diffusers.LLaDA2PipelineOutput) döndürülüp döndürülmemesi.
callback_on_step_end (`Callable` veya `PipelineCallback`, *isteğe bağlı*) : İmzası `callback_on_step_end(self, step: int, timestep: int, callback_kwargs: Dict)` olan, her iyileştirme adımından sonra çalıştırılan geri çağrı.
callback_on_step_end_tensor_inputs (`List[str]`, *isteğe bağlı*) : Geri çağrıya iletilecek Tensor anahtarları. İzin verilen anahtarlar: `block_x`, `transfer_index`, `editing_transfer_index`, `sampled_tokens`, `sampled_probs`, `active_block`.
**Dönüş:** [LLaDA2PipelineOutput](/docs/diffusers/main/tr/api/pipelines/llada2#diffusers.LLaDA2PipelineOutput) veya `tuple`
`return_dict` `True` ise [LLaDA2PipelineOutput](/docs/diffusers/main/tr/api/pipelines/llada2#diffusers.LLaDA2PipelineOutput) döndürülür, aksi takdirde ilk öğesi üretilen token kimlikleri (`torch.LongTensor`), ikinci öğesi ise çözümlenmiş metinler (`list[str]`) olan bir `tuple` döndürülür; `output_type` `"seq"` olduğunda ise `None` döndürülür.
Blok bazlı iyileştirme ile metin üretin.
Örnekler:
```python
>>> 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[[diffusers.LLaDA2PipelineOutput]]
#### diffusers.LLaDA2PipelineOutput[[diffusers.LLaDA2PipelineOutput]]
```python
diffusers.LLaDA2PipelineOutput(sequences: torch.LongTensor, texts: list[str] | None = None)
```
[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/llada2/pipeline_llada2.py#L54)

Xet Storage Details

Size:
9.96 kB
·
Xet hash:
1413c4e8358fa6161ced85dea5b52b2662ee093efc0ef757003634134ef27ddb

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.