Buckets:
| # BlockRefinementScheduler | |
| `BlockRefinementScheduler` управляет блочным итеративным уточнением для дискретной диффузии токенов. На каждом шаге он фиксирует наиболее уверенные токены и при необходимости редактирует уже зафиксированные токены, если модель предсказывает другой токен с высокой степенью уверенности. | |
| Этот планировщик используется в [LLaDA2Pipeline](/docs/diffusers/main/ru/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) | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_block_refinement.py#L54) | |
| Планировщик для блочного итеративного уточнения (коммит по степени уверенности). | |
| На каждом шаге планировщик выбирает кандидаты токены из логитов модели и фиксирует те, у которых уверенность максимальна. Количество токенов, фиксируемых на каждом шаге, определяется равномерным распределением длины блока на количество шагов уточнения. | |
| Необязательно поддерживает редактирование: после разрешения всех маскирующих токенов токены могут быть заменены, если модель предсказывает другой токен с уверенностью выше положительного `editing_threshold` (`None`, `0.0` или отрицательное значение отключает редактирование). | |
| #### 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) | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_block_refinement.py#L456) | |
| **Параметры:** | |
| original_samples (`torch.LongTensor` формы `(batch_size, seq_len)`) : Чистые идентификаторы токенов. | |
| attention_mask (`torch.LongTensor` формы `(batch_size, seq_len)`) : Маска отступов (1 для валидных токенов, 0 для отступов). | |
| prompt_length (`int`) : Количество начальных токенов промпта, которые нужно оставить без маски. | |
| block_length (`int`) : Размер блока для маскирования. | |
| mask_token_id (`int`) : Идентификатор токена, используемый для замаскированных позиций. | |
| generator (`torch.Generator`, *необязательный*) : генератор случайных чисел для воспроизводимости. | |
| **Возвращает:** `tuple[torch.LongTensor, torch.LongTensor, torch.BoolTensor, torch.BoolTensor]` | |
| `(noisy, noisy_rev, masked, masked_rev)` — две взаимодополняющие зашумленные последовательности и соответствующие им булевы маски. | |
| Примените прямой (шумовой) процесс для маскирования блоков в полуавто-регрессивном режиме. | |
| Для каждого блока после промпта случайная доля валидных (не служебных) токенов заменяется на `mask_token_id`. Возвращаются два взаимодополняющих представления: `noisy` и `noisy_rev`, где замаскированные позиции в одном из них являются незамаскированными в другом. | |
| #### 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) | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_block_refinement.py#L412) | |
| **Параметры:** | |
| step_idx (`int`) : Текущий индекс шага уточнения в пределах этого блока. | |
| masks_remaining (`bool`) : Остались ли в блоке какие-либо маскирующие токены. | |
| editing_enabled (`bool`) : Активен ли режим редактирования. | |
| editing_transfer_index (`torch.BoolTensor`) : Какие токены были изменены на этом шаге. | |
| post_steps (`int`) : Количество шагов редактирования после маски, выполненных на данный момент. | |
| max_post_steps (`int`) : Максимально допустимое количество шагов редактирования после маски. | |
| finished (`torch.BoolTensor`) : Флаги завершения для каждой партии (из детектирования EOS). | |
| **Возвращает:** `bool` | |
| `True`, если уточнение должно продолжаться, `False` — для прерывания. | |
| Определите, следует ли продолжать внутренний цикл уточнения для текущего блока. | |
| #### 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) | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_block_refinement.py#L362) | |
| **Параметры:** | |
| cur_x (`torch.LongTensor` формы `(batch_size, seq_len)`) : Текущая полная последовательность, включающая все блоки до текущего окна. | |
| sampled_tokens (`torch.LongTensor` формы `(batch_size, block_length)`) : Токены, выбранные планировщиком на этом шаге. | |
| final_transfer (`torch.BoolTensor` формы `(batch_size, block_length)`) : Соединённая маска зафиксированных и отредактированных позиций. | |
| finished (`torch.BoolTensor` формы `(batch_size,)`) : Текущие флаги завершения для каждой партии. | |
| eos_token_id (`int`) : ID токена EOS. | |
| mask_token_id (`int`) : ID маскирующего токена. | |
| prompt_length (`int`) : Количество токенов промпта в начале последовательности. | |
| **Возвращает:** `torch.BoolTensor` | |
| Обновлены флаги finished. | |
| Обновляйте флаги завершения для каждой партии при фиксации токенов EOS. | |
| #### get_num_transfer_tokens[[diffusers.BlockRefinementScheduler.get_num_transfer_tokens]] | |
| ```python | |
| get_num_transfer_tokens(block_length: int, num_inference_steps: int) | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_block_refinement.py#L102) | |
| Равномерно распределите коммиты токенов `block_length` по `num_inference_steps` шагам. | |
| #### шаг[[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) | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_block_refinement.py#L181) | |
| **Параметры:** | |
| model_output (`torch.Tensor` формы `(batch_size, block_length, vocab_size)`) : Сырые логиты модели для текущего блока. | |
| timestep (`int` или `torch.Tensor`) : Текущий индекс шага в расписании уточнения блока. | |
| sample (`torch.LongTensor` формы `(batch_size, block_length)`) : ID токенов текущего блока (в режиме на основе маски содержит маскирующие токены для неподтверждённых позиций). | |
| mask_token_id (`int`, *optional*) : Идентификатор токена, используемый для замаскированных позиций. Если `None`, планировщик работает в режиме равномерного повреждения: он внутренне отслеживает зафиксированные позиции (сбрасывая их при `timestep == 0`) и добавляет шум к незафиксированным позициям с помощью равномерно случайных токенов, что соответствует блочному сэмплеру уточнения DiffusionGemma. | |
| temperature (`float`) : Температура выборки. | |
| top_p (`float`, *необязательный*) : Порог обрезки для ядерной выборки. | |
| top_k (`int`, *optional*) : Порог выборки Top-k. | |
| sampling_method (`str`) : Метод выборки (`auto`, `greedy`, `multinomial`). | |
| threshold (`float`, *необязательный*) : Порог уверенности для фиксации токенов. По умолчанию используется значение из конфигурации. | |
| editing_threshold (`float`, *optional*) : Порог уверенности для редактирования токенов вне маски; должен быть положительным для включения редактирования. По умолчанию используется значение из конфигурации. | |
| minimal_topk (`int`, *optional*) : Минимальное количество токенов для фиксации на каждом шаге. По умолчанию используется значение из конфигурации. | |
| prompt_mask (`torch.BoolTensor`, *необязательный*) : Булева маска формы `(block_length,)`, где `True` отмечает позиции промпта (не редактируемые). | |
| generator (`torch.Generator`, *необязательный*) : генератор случайных чисел для выборки. | |
| return_dict (`bool`) : Нужно ли возвращать `BlockRefinementSchedulerOutput` или кортеж. | |
| Выполните один шаг уточнения: сгенерируйте токены из логитов, зафиксируйте уверенные токены и при необходимости отредактируйте существующие. | |
| ## 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) | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_block_refinement.py#L27) | |
| **Параметры:** | |
| prev_sample (`torch.LongTensor` формы `(batch_size, block_length)`) : Обновлённые токены блока после текущего шага уточнения. | |
| transfer_index (`torch.BoolTensor` формы `(batch_size, block_length)`) : Булева маска, указывающая, какие токены были зафиксированы (mask-filling). | |
| editing_transfer_index (`torch.BoolTensor` формы `(batch_size, block_length)`) : Булева маска, указывающая, какие токены были отредактированы (замена без маски). | |
| sampled_tokens (`torch.LongTensor` формы `(batch_size, block_length)`) : Сэмплированные идентификаторы токенов из логитов модели. | |
| sampled_probs (`torch.Tensor` формы `(batch_size, block_length)`) : Вероятности сэмплированных токенов. | |
| pred_logits (`torch.Tensor` формы `(batch_size, block_length, vocab_size)`) : Логиты денойзера, передаваемые для самоусловливания следующего шага. | |
| Класс вывода для планирования уточнения блоков. | |
Xet Storage Details
- Size:
- 13.9 kB
- Xet hash:
- ade954ea492731466698eadb9a75787cff9f4dfa005c64ddf042a683412efb97
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.