Alterna · учебный материал
20.3 Запускаем изученную цепочку
Загрузим совместимые части и получим продолжение при неизменных весах. Исправления обучения сюда не относятся.
Что в этом материале
- Собираем знакомые блоки
- Decoder исполняет явную policy поверх logits
Содержание и основные понятия
На предыдущей странице: проверяем совместимость частей.
Загрузим совместимые части и получим продолжение при неизменных весах. Исправления обучения сюда не относятся.
Совместимость словаря, параметров и runtime проверяется до запуска. Происхождение ответа и запреты действий входят в проект наравне с прямым расчётом. Финал соединяет знакомое.
Собираем знакомые блоки
Общая модель требуетJavaScript; её вычисления, формулы и код разобраны в открытом тексте далее.
Decoder исполняет явную policy поверх logits
Generation связывает неизменяемые weights с tokenizer, prompt template и sampling policy. На каждом шаге runtime получает logits последней позиции, применяет разрешённые преобразования, строит распределение и выбирает следующий token. EOS завершает последовательность раньше лимита, а
max_new_tokens
ставит жёсткую границу, если EOS не выбран. Причина остановки является частью ответа, а не догадкой по длине текста.
Для воспроизводимого fixture используется отдельный экземпляр
random.Random
, поэтому пример не меняет глобальное состояние случайных чисел. Categorical sampling проходит по cumulative probability в фиксированном порядке IDs. Последний кандидат служит защитой от малой ошибки суммы floating-point; production runtime дополнительно проверяет конечность, неотрицательность и нормировку вероятностей.
Продолжение.
Stepper показывает prompt IDs, logits, преобразованное распределение, random draw, выбранный ID и stop reason. Повтор с тем же seed проверяет реализацию policy, но интерфейс отдельно отмечает greedy и stochastic режимы. Streaming публикует только подтверждённые tokens и завершает поток структурированным событием с usage и причиной остановки.
Граница применимости.
Повторяемая выборка не означает правильный или безопасный ответ. Одинаковый seed может дать иной результат после смены kernel, precision, tokenizer или порядка операций. Temperature, top-p и penalties входят в контракт целиком и в определённом порядке; их нельзя сравнивать по одному числу без одинаковых logits и workload.
from random import Random
def generate_20c(seed_20c, maximum_20c=4):
rng_20c = Random(seed_20c)
choices_20c = [('A', 0.5), ('B', 0.3), ('<eos>', 0.2)]
output_20c = []
for _step_20c in range(maximum_20c):
draw_20c, cumulative_20c = rng_20c.random(), 0.0
# Полный исполняемый пример — по ссылке ниже.
Код повторяет только что разобранные операции.
Полный проверяемыйPython-пример главы
доступен отдельным файлом; показанный короткий фрагмент не заменяет его реализацию.
Runtime выполняет read-only forward и bounded generation.
Откуда взято каждое сведение. Как этот вопрос продолжает полученный результат?
Python-примеры главы 20
Академическая база →