tgoop.com/plush_python/111
Last Update:
Дополнение про min-p
Как известно, семплеры (температура, top-p, top-k, позже Mirostat, min-p, DRY, XTC и другие) изначально были придуманы, чтобы компенсировать недостатки обучения GPT-подобных языковых моделей.
Такие модели на этапе претрейна и SFT учатся решать задачу _классификации_ (наиболее правдоподобного следующего токена). Inductive bias здесь в предположении, что на каждом шаге порождения текста может быть только один правильный следующий токен. В природе это не так ("Они решили назвать свою дочь <?>" - какой здесь единственный правильный следущий токен?). В обучающих данных это требование тоже не обязано соблюдаться - например, в SFT у вас могут быть разные эталонные ответы на один и тот же промпт.
Могут ли модели научиться в таком режиме генерировать связный текст, не содержащий внутренних противоречий? Да. Но как сделать так, чтобы ответы модели были ещё и разнообразными? Если на каждом шаге генерации брать самый вероятный токен - у вас всегда будут получаться одинаковые ответы на один и тот же запрос. Есть ситуации, когда важно разнообразие и возможность получить несколько неодинаковых ответов. Например, при решении творческих задач: брейншторминг, рерайтинг, ролплей и т.п. Тут на помощь и приходит семплирование. Сильно упрощая, оно позволяет нам не всегда брать самый вероятный токен, что делает ответы более живыми и разнообразными. Однако важно семплировать аккуратно, чтобы не сбиться с мысли и не начать порождать бред.
Классические семплеры, такие как температура и top-p, чувствительны к выбору модели и к решаемой задаче. Например, насыщенные модели, которые обучались на очень большом количестве токенов, требуют более высокой температуры, если нужно разнообразие генераций. Магия же min-p как раз в том, что мы можем использовать одни и те же параметры семплирования практически на любой модели и задаче, и при этом стабильно получать связные и разнообразные ответы.
Интересно, что этот семплер появился уже довольно давно в сообществе LLM-ролплееров, использующих локальные модели. Вот один из ключевых постов его автора, наглядно разъясняющий его преимущества и недостатки традиционных семплеров. Пост был опубликован в r/LocalLLaMA ещё в ноябре 2023 года!
Я регулярно пользуюсь min-p в личных проектах и экспериментах с локальными моделями уже около года. Это единственный семплер, который у меня включен по дефолту - я не использую top-k, top-p и т.д. Он отлично подходит для всего, кроме, пожалуй, замера бенчмарков, но это особый случай. Если ещё не пробовали в своих задачах - попробуйте!