Код 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
sorted(range(n), key=lambda i: (-probs[i], i)).
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.