Spre deosebire de Top-K care păstrează un număr fix de candidați (ex: 50), Top-P își adaptează dimensiunea ferestrei: dacă următorul cuvânt este evident (probabilitate 95%), alege dintr-un singur token; dacă contextul este ambiguu, alege din 20 de tokeni.
Exemplu de filtrare în Python
import torch
def top_p_filtering(logits, top_p=0.9):
probs = torch.softmax(logits, dim=-1)
sorted_probs, sorted_indices = torch.sort(probs, descending=True)
cumulative_probs = torch.cumsum(sorted_probs, dim=-1)
# Mascare tokeni dincolo de pragul cumulat
sorted_indices_to_remove = cumulative_probs > top_p
sorted_indices_to_remove[..., 1:] = sorted_indices_to_remove[..., :-1].clone()
sorted_indices_to_remove[..., 0] = 0
indices_to_remove = sorted_indices_to_remove.scatter(dim=-1, index=sorted_indices, src=sorted_indices_to_remove)
logits[indices_to_remove] = float('-inf')
return logits
Elimină complet riscul de selecție a unor cuvinte absurde din coada distribuției.
Întrebări & Discuții: Nucleus Sampling (Top-P): Tăierea Cozii de Distribuție pe Baza Probabilității Cumulate
Ai o întrebare despre Nucleus Sampling (Top-P): Tăierea Cozii de Distribuție pe Baza Probabilității Cumulate sau ai descoperit un truc, prompt sau fragment de cod util? Distribuie-l cu ceilalți membri ai comunității!
Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau resurse pentru această pagină. Dacă ai testat un prompt sau ai un snippet util, adaugă-l mai jos pentru comunitate.