Buckets:
| # BlockRefinementScheduler | |
| Le `BlockRefinementScheduler` gère le raffinement itératif par blocs pour la diffusion de jetons discrets. À chaque étape, il valide les jetons les plus confiants et modifie éventuellement les jetons déjà validés lorsque le modèle prédit un jeton différent avec une forte confiance. | |
| Ce planificateur est utilisé par [LLaDA2Pipeline](/docs/diffusers/main/fr/api/pipelines/llada2#diffusers.LLaDA2Pipeline). | |
| ## BlockRefinementScheduler[[diffusers.BlockRefinementScheduler]] | |
| #### diffusers.BlockRefinementScheduler[[diffusers.BlockRefinementScheduler]] | |
| ```python | |
| diffusers.BlockRefinementScheduler(block_length: int = 32, num_inference_steps: int = 32, threshold: float = 0.95, editing_threshold: float | None = None, minimal_topk: int = 1) | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_block_refinement.py#L54) | |
| Planificateur pour le raffinement itératif par blocs (engagement par confiance). | |
| À chaque étape, le planificateur échantillonne des jetons candidats à partir des logits du modèle et valide ceux qui présentent la plus forte confiance. Le nombre de jetons à valider par étape est déterminé en répartissant uniformément la longueur du bloc sur le nombre d'étapes de raffinement. | |
| Prend en charge la modification en option : une fois tous les jetons de masque résolus, les jetons peuvent être remplacés si le modèle prédit un jeton différent avec une confiance supérieure à un `editing_threshold` positif (`None`, `0.0` ou une valeur négative désactive la modification). | |
| #### add_noise[[diffusers.BlockRefinementScheduler.add_noise]] | |
| ```python | |
| add_noise(original_samples: torch.LongTensor, attention_mask: torch.LongTensor, prompt_length: int, block_length: int, mask_token_id: int, generator: torch.Generator | None = None) | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_block_refinement.py#L456) | |
| **Paramètres :** | |
| original_samples (`torch.LongTensor` de forme `(batch_size, seq_len)`) : ID de jetons propres. | |
| attention_mask (`torch.LongTensor` de forme `(batch_size, seq_len)`) : Masque de bourrage (1 pour les positions valides, 0 pour le bourrage). | |
| prompt_length (`int`) : Nombre de jetons de prompt initiaux à conserver non masqués. | |
| block_length (`int`) : Taille du bloc pour le masquage. | |
| mask_token_id (`int`) : ID de jeton à utiliser pour les positions masquées. | |
| generator (`torch.Generator`, *facultatif*) : générateur de nombres aléatoires pour la reproductibilité. | |
| **Retourne :** `tuple[torch.LongTensor, torch.LongTensor, torch.BoolTensor, torch.BoolTensor]` | |
| `(noisy, noisy_rev, masked, masked_rev)` — les deux séquences bruitées complémentaires et leurs masques booléens correspondants. | |
| Appliquer le processus avant (bruitage) pour le masquage de blocs semi-autorégressifs. | |
| Pour chaque bloc après le prompt, une fraction aléatoire de jetons valides (non de bourrage) est remplacée par `mask_token_id`. Deux vues complémentaires sont renvoyées : `noisy` et `noisy_rev`, où les positions masquées dans l'une correspondent aux positions non masquées dans l'autre. | |
| #### check_block_should_continue[[diffusers.BlockRefinementScheduler.check_block_should_continue]] | |
| ```python | |
| check_block_should_continue(step_idx: int, masks_remaining: bool, editing_enabled: bool, editing_transfer_index: torch.BoolTensor, post_steps: int, max_post_steps: int, finished: torch.BoolTensor) | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_block_refinement.py#L412) | |
| **Paramètres :** | |
| step_idx (`int`) : Index de l'étape de raffinement actuelle au sein de ce bloc. | |
| masks_remaining (`bool`) : Indique s'il reste des jetons de masque dans le bloc. | |
| editing_enabled (`bool`) : Indique si le mode d'édition est actif. | |
| editing_transfer_index (`torch.BoolTensor`) : Les jetons modifiés à cette étape. | |
| post_steps (`int`) : Nombre d'étapes d'édition post-masque effectuées jusqu'à présent. | |
| max_post_steps (`int`) : Nombre maximal de étapes d'édition autorisées après le masquage. | |
| finished (`torch.BoolTensor`) : Indicateurs de fin par lot (issus de la détection de EOS). | |
| **Retourne :** `bool` | |
| `True` si le raffinement doit se poursuivre, `False` pour l’interrompre. | |
| Déterminer si la boucle de raffinement interne doit se poursuivre pour le bloc actuel. | |
| #### check_eos_finished[[diffusers.BlockRefinementScheduler.check_eos_finished]] | |
| ```python | |
| check_eos_finished(cur_x: torch.LongTensor, sampled_tokens: torch.LongTensor, final_transfer: torch.BoolTensor, finished: torch.BoolTensor, eos_token_id: int, mask_token_id: int, prompt_length: int) | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_block_refinement.py#L362) | |
| **Paramètres :** | |
| cur_x (`torch.LongTensor` de forme `(batch_size, seq_len)`) : Séquence complète actuelle incluant tous les blocs jusqu'à la fenêtre courante. | |
| sampled_tokens (`torch.LongTensor` de forme `(batch_size, block_length)`) : Jetons échantillonnés par le planificateur à cette étape. | |
| final_transfer (`torch.BoolTensor` de forme `(batch_size, block_length)`) : Masque combiné des positions validées et modifiées. | |
| finished (`torch.BoolTensor` de forme `(batch_size,)`) : Drapeaux de fin actuels par lot. | |
| eos_token_id (`int`) : ID du jeton EOS. | |
| mask_token_id (`int`) : ID du jeton de masque. | |
| prompt_length (`int`) : Nombre de jetons de l'invite au début de la séquence. | |
| **Retourne :** `torch.BoolTensor` | |
| Mise à jour des indicateurs de fin. | |
| Mettre à jour les indicateurs de fin par lot lorsque les jetons EOS sont validés. | |
| #### get_num_transfer_tokens[[diffusers.BlockRefinementScheduler.get_num_transfer_tokens]] | |
| ```python | |
| get_num_transfer_tokens(block_length: int, num_inference_steps: int) | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_block_refinement.py#L102) | |
| Répartir uniformément les `block_length` jetons sur `num_inference_steps` étapes. | |
| #### étape[[diffusers.BlockRefinementScheduler.step]] | |
| ```python | |
| step(model_output: torch.Tensor, timestep: int | torch.Tensor, sample: torch.LongTensor, mask_token_id: int | None = None, temperature: float = 0.0, top_p: float | None = None, top_k: int | None = None, sampling_method: str = 'auto', threshold: float | None = None, editing_threshold: float | None = None, minimal_topk: int | None = None, prompt_mask: torch.BoolTensor | None = None, generator: torch.Generator | None = None, return_dict: bool = True) | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_block_refinement.py#L181) | |
| **Paramètres :** | |
| model_output (`torch.Tensor` de forme `(batch_size, block_length, vocab_size)`) : Logits bruts du modèle pour le bloc actuel. | |
| timestep (`int` ou `torch.Tensor`) : Index de l'étape actuelle dans le calendrier de raffinement du bloc. | |
| sample (`torch.LongTensor` de forme `(batch_size, block_length)`) : ID des jetons du bloc actuel (contient des jetons de masque pour les positions non confirmées en mode basé sur le masque). | |
| mask_token_id (`int`, *facultatif*) : ID de jeton utilisé pour les positions masquées. Lorsque `None`, le planificateur fonctionne en mode de corruption uniforme : il suit les positions validées en interne (réinitialisées à `timestep == 0`) et ré-ajoute du bruit aux positions non validées avec des jetons aléatoires uniformes, conformément à l'échantillonneur de raffinement par blocs de DiffusionGemma. | |
| temperature (`float`) : Température d'échantillonnage. | |
| top_p (`float`, *facultatif*) : Seuil d'échantillonnage par noyau. | |
| top_k (`int`, *facultatif*) : Seuil d'échantillonnage Top-k. | |
| sampling_method (`str`) : Méthode d'échantillonnage (`auto`, `greedy`, `multinomial`). | |
| threshold (`float`, *facultatif*) : Seuil de confiance pour valider les jetons. Par défaut, la valeur de la configuration est utilisée. | |
| editing_threshold (`float`, *facultatif*) : Seuil de confiance pour l'édition des jetons non masqués ; doit être positif pour activer l'édition. Valeur par défaut : valeur de la configuration. | |
| minimal_topk (`int`, *facultatif*) : Nombre minimal de jetons à valider à chaque étape. Par défaut, la valeur de la configuration est utilisée. | |
| prompt_mask (`torch.BoolTensor`, *facultatif*) : masque booléen de forme `(block_length,)` où `True` marque les positions du prompt (non modifiables). | |
| generator (`torch.Generator`, *facultatif*) : générateur de nombres aléatoires pour l'échantillonnage. | |
| return_dict (`bool`) : Indique s'il faut retourner un `BlockRefinementSchedulerOutput` ou un tuple. | |
| Effectuer une étape unique de raffinement : échantillonner à partir des logits, valider les jetons confiants et, le cas échéant, modifier les jetons existants. | |
| ## BlockRefinementSchedulerOutput[[diffusers.BlockRefinementSchedulerOutput]] | |
| #### diffusers.BlockRefinementSchedulerOutput[[diffusers.BlockRefinementSchedulerOutput]] | |
| ```python | |
| diffusers.BlockRefinementSchedulerOutput(prev_sample: torch.LongTensor, transfer_index: torch.BoolTensor, editing_transfer_index: torch.BoolTensor, sampled_tokens: torch.LongTensor, sampled_probs: torch.Tensor, pred_logits: torch.Tensor) | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_block_refinement.py#L27) | |
| **Paramètres :** | |
| prev_sample (`torch.LongTensor` de forme `(batch_size, block_length)`) : Jetons de bloc mis à jour après l'étape de raffinement actuelle. | |
| transfer_index (`torch.BoolTensor` de forme `(batch_size, block_length)`) : masque booléen indiquant quels jetons ont été validés (remplissage du masque). | |
| editing_transfer_index (`torch.BoolTensor` de forme `(batch_size, block_length)`) : masque booléen indiquant quels jetons ont été modifiés (remplacement non masqué). | |
| sampled_tokens (`torch.LongTensor` de forme `(batch_size, block_length)`) : Identifiants des jetons échantillonnés à partir des logits du modèle. | |
| sampled_probs (`torch.Tensor` de forme `(batch_size, block_length)`) : Probabilités des jetons échantillonnés. | |
| pred_logits (`torch.Tensor` de forme `(batch_size, block_length, vocab_size)`) : Les logits du débruiteur, transmis pour l'auto-conditionnement de l'étape suivante. | |
| Classe de sortie pour la planification du raffinement de blocs. | |
Xet Storage Details
- Size:
- 10.4 kB
- Xet hash:
- 94984c5030b81a0b2e55ba56320b41f5804cdee46800ef39e929f9a01aebf272
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.