Код Middle Инференс и генерация спрашивают часто обновлено

Фильтр top-p (nucleus)

Условие

Напишите top_p_filter(probs, p): верните отсортированный по возрастанию список индексов токенов, которые остаются кандидатами при nucleus sampling. Токены берутся по убыванию вероятности (при равенстве сначала меньший индекс), пока накопленная сумма не станет >= p. Хотя бы один токен остаётся всегда. Сравнивайте сумму с допуском 1e-9, чтобы ошибки округления не добавляли лишний токен.

Примеры

top_p_filter([0.5, 0.3, 0.15, 0.05], 0.8) // [0, 1]
top_p_filter([0.5, 0.3, 0.15, 0.05], 0.81) // [0, 1, 2]
top_p_filter([0.1, 0.6, 0.3], 0.5) // [1]

Как подойти

Подсказки: 1
  1. sorted(range(n), key=lambda i: (-probs[i], i)).

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.

Термины по теме