Alterna · учебный материал

17.3 Как выбирается один вариант

Оценки уже получены. Теперь температура и ограничения кандидатов задают правило выбора; веса от этого не обучаются.

Что в этом материале

Содержание и основные понятия

На предыдущей странице: следующий запуск использует сохранённое.
Оценки уже получены. Теперь температура и ограничения кандидатов задают правило выбора; веса от этого не обучаются.
Первый запуск обрабатывает префикс. Каждый последующий добавляет одну позицию; K/V прошлых позиций можно сохранять. Выборка и сжатое хранение решают разные задачи.
Для изменения рисунка включитеJavaScript; расчёт и теория доступны далее.
Logits задаёт модель, выбор token задаёт decoder
Greedy decoding выбирает argmax; sampling сначала преобразует logits temperature, затем может ограничить кандидатов top-k или nucleus top-p. При temperature
T>0
используется
softmax(z/T)
: малое T концентрирует distribution, большое делает её более ровной.
T=0
лучше задавать отдельным greedy режимом, а не делить на ноль.
Nucleus выбирает минимальный prefix кандидатов, отсортированных по вероятности, с cumulative mass не меньше
p
, затем перенормирует его. F10.
S
p
=
min
⁡
{
S
:
∑
j
∈
S
p
j
≥
p
}
,
p
~
j
=
p
j
∑
k
∈
S
p
p
k
1
[
j
∈
S
p
]
.
S_p=\min\left\{S:\sum_{j\in S}p_j\ge p\right\},\qquad
\tilde p_j=\frac{p_j}{\sum_{k\in S_p}p_k}\mathbf1[j\in S_p].
S
p
​
=
min
⎩
⎨
⎧
​
S
:
j
∈
S
∑
​
p
j
​
≥
p
⎭
⎬
⎫
​
,
p
~
​
j
​
=
∑
k
∈
S
p
​
​
p
k
​
p
j
​
​
1
[
j
∈
S
p
​
]
.
Что показывает модель.
Inspector обязан показывать исходные logits, temperature distribution, оставшихся кандидатов и renormalized probabilities. Seed относится к pseudo-random draw, а не к model distribution. При одинаковых weights/prefix/policy/seed deterministic runtime должен повторить IDs, но это тест воспроизводимости, не качества.
Граница применимости.
Top-p не проверяет факты и безопасность. Порядок применения repetition penalty, top-k, top-p и constraints влияет на результат и входит в API contract. Floating-point ties требуют стабильного tie-break. Beam search оптимизирует собственный sequence score и также не гарантирует хороший человеческий ответ.
from math import exp
logits_17c=[2.0,1.0,0.0]; temperature_17c=1.0; top_p_17c=0.8
raw_17c=[exp(v/temperature_17c-max(logits_17c)) for v in logits_17c]
probs_17c=[v/sum(raw_17c) for v in raw_17c]; order_17c=sorted(range(3),key=lambda i:(-probs_17c[i],i))
kept_17c=[]; mass_17c=0.0
for i_17c in order_17c:
kept_17c.append(i_17c); mass_17c+=probs_17c[i_17c]
if mass_17c>=top_p_17c: break
assert kept_17c==[0,1] and abs(sum(probs_17c[i] for i in kept_17c)-mass_17c)<1e-12
Код повторяет только что разобранные операции.
Полный проверяемыйPython-пример главы
доступен отдельным файлом; показанный короткий фрагмент не заменяет его реализацию.
Seed управляет воспроизводимой выборкой, а не model forward.
Несколько запросов используют общую вычислительную работу. Как этот вопрос продолжает полученный результат?
Python-примеры главы 17
Академическая база →

Структурная карта учебников