Меня зовут Грибанов Никита, я Data Scientist в отделе R`n`D&ML компании Raft Digital Solutions, и сегодня я расскажу о больших языковых моделях. На данный момент в мире их существует уже более 39 тысяч! Далее буду называть их хайповым названием LLM (Large Language Model).
В этой статье вы сначала узнаете новые или освежите в памяти уже известные вам основы общения с языковыми моделями. Затем разберёте пару реальных примеров настройки запросов и увидите математические возможности Llama 3.2 3B в сравнении с Llama 3.1 8B.
Для достижения хороших результатов при решении различных задач с помощью LLM, с ними как и с людьми, нужно уметь правильно общаться. Как же это сделать?
Введём ключевое определение.
Prompt (подсказка) — это запрос, который пользователь отправляет искусственному интеллекту (нейросети) с целью получить желаемый ответ.
На самом деле составление запроса — это поле для экспериментов. Как следствие форма промпта для сложных задач, требующих высокой точности, зачастую является композицией базовых паттернов, выявленной многочисленными попытками.
Общие рекомендации
Начнём с изучения основных рекомендаций по составлению запросов к языковым моделям.
Детализация
Языковые модели обучаются на большом количестве данных, поэтому на одинаковую формулировку они способны давать различные в смысловом плане ответы. Не существует волшебных слов, делающих результат идеальным. Однако, интуитивно верным решением будет составить подробный запрос. Это позволит модели получить больше уточняющей информации и снизит вариативность ответов. Но продумывая детализацию, необходимо учитывать длину промпта, так как она имеет ограничение.Смысловые блоки
Запросы в конечном счёте представляют из себя структуру логически связанных между собой данных, и модели не всегда могут хорошо справиться с вычленением смысловых блоков. Для решения этой проблемы в большинстве случаев хорошо подходит явное разделение смысловых структур запроса с помощью уникальных последовательностей символов. Например, «### … ###
» или «<!--- … ---!
».Прямолинейность
На данный момент LLM лучше воспринимать как собеседника, который абсолютно не понимает намёков и завуалированных фраз. В промптах лучше не использовать общие выражения, а отдать предпочтение детализации.
Техники промптинга
Большинство приведённых в этом разделе техники промптинга являются теми самыми базовыми паттернами, с помощью которых пользователи могут эффективно формулировать запросы, чтобы получить максимально релевантные и точные ответы.
Появление техник промптинга непосредственно связано с развитием LLM, которые требуют четких и специфичных инструкций для оптимальной работы. Эти подходы являются результатом многочисленных экспериментов с разными способами задания вопросов разной тематики к разнообразным моделям.
-
Zero-Shot
LLM, как и человеку, можно подробно описать задачу, не используя примеров. В таком подходе результат имеет прямую зависимость от детализацией промпта.
При технике Zero-Shot модель использует только те знания, которые были получены на этапе обучения. Следующий пример является классическим и показательным:
Классифицируйте текст как нейтральный, негативный или позитивный. Ответ: Нейтральный Текст: Я думаю, что отпуск был нормальным.
Ответ: Нейтральный
-
Few-Shot
Чтобы сделать ответы более качественными, можно подбирать разные формулировки и делать их более подробными. Однако есть более эффективный способ, который требует дополнительных данных: решений похожих задач. Здесь можно снова сравнить модель с человеком: если дать ей подробное объяснение и привести несколько примеров, то результат будет лучше.
Вопрос: Нечетные числа в этой группе в сумме дают четное число: 4, 8, 9, 15, 12, 2, 1. Ответ: Ложь. Вопрос: Нечетные числа в этой группе в сумме дают четное число: 17, 10, 19, 4, 8, 12, 24. Ответ: Истина. Вопсро: Нечетные числа в этой группе в сумме дают четное число: 16, 11, 14, 4, 8, 13, 24. Ответ: Истина. Вопрсо: Нечетные числа в этой группе в сумме дают четное число: 17, 9, 10, 12, 13, 4, 2. Ответ: Ложь. Вопрос: Нечетные числа в этой группе в сумме дают четное число: 15, 32, 5, 13, 82, 7, 1.
Ответ: Ложь
А вот ответ, который модель возвращает без примеров в промпте:
Ответ: Да, нечетные числа в этой группе в сумме дают 107, что является четным числом.
-
Role Based
При взаимодействии с людьми разных профессий, поколений или уровня профессиональных навыков, сильно выделяются различия в манерах общения, формулировках и используемых словах для описания одинаковых явлений. Таким образом проявляется опыт, воздействие среды, в которой находился человек и т. д. Это называется контекстом. Если мы говорим о LLM, то по контексту ей легче понять, что от нее хотят люди и как ей себя вести. На этом принципе основан метод «задание роли». Роль помогает сделать ответ точнее и часто сокращает описание.
Вы - виртуальный гид, который в данный момент проводит ночную экскурсию по Эйфелевой башне для туристов. Опишите для своей аудитории Эйфелеву башню, рассказав о ее истории, количестве людей, посещающих ее каждый год, времени, необходимом для проведения полной экскурсии, и о том, почему так много людей посещают это место каждый год.
-
Chain-of-Tought
Эффективным подходом к решению сложной задачи является её декомпозиция, т.е. разбиение на подзадачи. Поэтапное решение позволяет акцентировать внимание на каждом шаге и тем самым задать логическую структуру ответа. Также такой подход значительно уменьшает уязвимых мест в запроси, которые могут быть восприняты по-разному. Данный метод в комбинации с Role Based значительно увеличивает точность ответа и часто сокращает размер промпта в сравнение с детализированным описанием.
В некоторых случаях можно подтолкнуть LLM к рассуждению, используя фразы по типу:
Вопрос: В роще есть 15 деревьев. Сегодня работники рощи будут сажать деревья в роще. После того, как они закончат, в роще будет 21 дерево. Сколько деревьев посадили сегодня работники рощи? Ответ: Мы начинаем с 15 деревьев. Позже у нас будет 21 дерево. Разница должна быть равна количеству деревьев, которые они посадили. Таким образом, они должны были посадить 21 - 15 = 6 деревьев. Вопрос: Если на парковке стоят 3 машины, а потом приезжают еще 2 машины, сколько машин на парковке? Ответ: На парковке уже 3 машины. Прибывают еще 2. Теперь там 3 + 2 = 5 машин. Вопрос: Когда мне было 6 лет, моя сестра была вдвое младше меня. Сейчас мне 70, сколько лет моей сестре?
С помощью неё модель выведет свои собственные этапы выполнения задачи.
-
Self-Consistency
Техника CoT не всегда может дать релевантный ответ, а в некоторых случаях шагов становится слишком большое количество. Тогда стоит попробовать предоставить модели примеры аналогичные по алгоритму решения. Особенно хорошо данный метод показывает себя в математических задачах.
Данный метод основывается на CoT и принципе FS: указание в промпте множества различных примеров с аналогичными логическими размышлениями для получения ответа. Это помогает повысить эффективность подсказок CoT в задачах, связанных с арифметикой и рассуждениями, основанными на здравом смысле.
Вопрос: В роще есть 15 деревьев. Сегодня работники рощи будут сажать деревья в роще. После того, как они закончат, в роще будет 21 дерево. Сколько деревьев посадили сегодня работники рощи? Ответ: Мы начинаем с 15 деревьев. Позже у нас будет 21 дерево. Разница должна быть равна количеству деревьев, которые они посадили. Таким образом, они должны были посадить 21 - 15 = 6 деревьев. Вопрос: Если на парковке стоят 3 машины, а потом приезжают еще 2 машины, сколько машин на парковке? Ответ: На парковке уже 3 машины. Прибывают еще 2. Теперь там 3 + 2 = 5 машин. Вопрос: Когда мне было 6 лет, моя сестра была вдвое младше меня. Сейчас мне 70, сколько лет моей сестре?
Сравнение математических возможностей Llama-3.2-3B и Llama-3.1-8B
Закрепим полученные знания практическим применением техник промптинга для решения математических задач с помощью моделей Llama.
Введение в модели Llama
Первая модель LLaMA (Large Language Model/Meta AI) была выпущена компанией Meta (ранее Facebook) в феврале 2023 года. Эта модель была представлена как часть их усилий в области исследований и разработки больших языковых моделей. С тех пор данное семейство продолжает развиваться.
В каждом обновлении Meta выпускает несколько моделей, различающихся в частности размерами. Под размерами подразумевается количество параметров, которые были обучены. Проще говоря, качественные различия моделей разных размеров в разрезе одного обновления состоят в том, что чем больше было обучено параметров, тем выше функциональность модели и лучше качество ответов. Так, например, приписки 3B и 8B расшифровываются как 3 и 8 миллиардов (billion) параметров. Так же уточню, что данные модели являются одними из самых лёгких в своих обновлениях. Их старшие сёстры имеют приписки 11B, 70B, 90B и 405B. От размеров моделей зависят характеристики оборудования необходимого для запуска, а следовательно и его стоимость.
LLaMA находятся в открытом доступе для скачивания (например, здесь), в отличие от других популярных моделей таких, как ChatGPT.
Настройки моделей
Перед использованием моделей в конфигурации можно задавать параметры, отвечающие за поведение LLM. Не буду углубляться в их описание и перечисление, а приведу те, которые были отличны от значений по умолчанию. Подробнее данную тему можно изучить здесь.
temperature = 0.1 # контроль галлюцинаций
repetition_penalty = 1.2 # контроль дублирования
Далее их значения будут указаны в примерах.
Практика
Почему математика? Дело в том, что Llama не очень сильна в математических задачах. Однако, она умеет логически рассуждать и выполнять базовые вычисления до некоторого уровня сложности. Таким образом, контраст качества ответов с и без применения техник будет более выраженным.
Lllama-3.2-3B
Начнём с простейшей вариации запроса:
Question: A juggler can juggle 16 balls. Half of the balls are golf balls,
and half of the golf balls are blue. How many blue golf balls are there?
Answer:
Настройки: temperature = 0.01
Answer:
The answer is 8.
To solve this problem we need to use a combination formula:
nCr = n! / (r!(n-r)!).
In our case r=1/2*half of the balls=n/2;
n=golfballs=16;
C(16,4)=16!/4!*12!=40320/24=840.
Half of these balls are blue so C(16,4)/2=420.
So there are 42o blue golf balls in total.
This question was asked by an anonymous user on
Brilliant.org
❌ Результат содержит большое количество галлюцинаций - неточностей, не относящихся к решению, - кроме того, модель не поняла условий задачи.
Сохраним прежние параметры и предложим llm порассуждать, добавив в конце запроса спец фразу: "Let's think step by step.
".
The number of all balls is 16.
Half of them (8) are golf balls.
Half of these golf balls (4) are blue.
So we have to find out how many blue golf balls among those that are not red
ones.
There are two ways:
1. We know that the total amount of non-red balls equals to 12. So if we
subtract this from 16 - it will be equal to the desired answer.
2. The other way is more complicated but also works well in some cases when
you don't remember what was written above or want to check your solution.
We need to count how much balls were removed during our calculations so far.
It looks like this:
- 16 - 8 = 8;
- 8 - 4 = 4;
- 4 -? =?
If we add up everything together then we get a result which should be equal
to zero because we started with 16 and ended at 0. That means that whatever
value we put into question mark sign here, it must cancel itself out. And
since we already found one possible answer for it - 12 - let's try another
one.
4 + 12 = 16;
❌ Итак, теперь в начале рассуждений можно вычленить верный ответ. Однако, в дальнейшем переборе вариантов решения модель стала отвечать вопрос отличный от исходного.
Двигаемся в нужном направлении. Попробуем избавиться от галлюцинаций, увеличив температуру, и повторим запрос.
Настройки: temperature = 0.1
The number of all balls is 16.
Half of them (8) are golf balls.
Half of these golf balls (4) are blue.
So we have to find out how many blue golf balls among those that are not golf
balls.
There are 2 ways:
1. We know that total amount of non-golf balls = 8 - 4 = 4;
2. There are 12 balls left after removing 4 golf balls from a set of 16
balls; so each ball has probability 1/12 to be one of remaining ones.
In both cases answer will be 4.
❌ Увеличение температуры дало положительную динамику: в первых строках всё также содержится корректный ответ, но некорректные рассуждения значительно сократились.
Зафиксируем temperature = 0.1
и изменим промпт: добавим пример с аналогичной задачей и чёткой структурой ответа.
Question: Roger has 5 tennis bals. He buys 2 more cans of tennis balls. Each
can has 3 tennis balls. How many tennis balls does he have now?
Answer: Roger started with 5 balls. 2 cans of 3 tennis balls each is 6 tennis
balls. 5 + 6 = 11. The answer is 11.
Question: A juggler can juggle 16 balls. Half of the balls are golf balls,
and half of the golf balls are blue. How many blue golf balls are there?
Answer:
Answer: The juggler has only 16 balls. Half of them are golf balls, half of
these golf balls are blue. 16 - 8 - 4 = 4. The answer is 4.
✅ Успех! Мы получили качественный ответ с помощью варьирования температуры и добавления примера с аналогичной задачей.
Llama-3.1-8B
Настройки: temperature = 0.01
Question: I went to the market and bought 10 apples. I gave 2 apples to the
neighbor and 2 to the repairman. I then went and bought 5 more apples and
ate 1. How many apples did I remain with?
Answer:
Explanation:
We have a total of 15 apples.
The first part is easy, we give away two apples to our neighbors and another
two to the repair man so that leaves us with 11 apples left.
Now for the second part, we buy five more apples which gives us a grand total
of 16 apples but we eat one apple leaving us with 15 apples in all.
So the answer is 15 apples.
❌ Рассуждение в нужном направлении, а также отсутствуют галлюцинации. Однако, модель запуталась в исходных данных: за искомое число взяла общее количество купленных яблок. Другими словами, была нарушена последовательность действий.
Сохраним прежние параметры и предложим llm порассуждать, добавив в конце запроса спец фразу: "Let's think step by step.
".
assistant.com
First, we have a total of 10 apples.We give away two apples to our neighbors
and another two to the repair man.
So now we are left with $latex \displaystyle{10-4=6}$ apples.
Then we buy five more apples and eat one apple.
Now we have $latex \displaystyle{6+5-1 = 10}
❌ Ответ и рассуждения абсолютно верны, но появились галлюцинации. Как и в аналогичном случае с Llama-3.2-3B, повысим температуру.
Настройки: temperature = 0.1
We have a total of 10 apples.
We give away 2 apples to our neighbors and another 2 to the repair man.
So now we are left with 10 - 4 = 6 apples.
Then we buy 5 more apples and eat 1 apple.
In the end we have 6 + 5 - 1 = 10 apples.
✅ Превосходно! Мы получили качественный и развёрнутый ответ воспользовавшись техникой CoT и повысив температуру.
Результаты сравнения
Кроме описанных примеров, для каждой модели был проведён ряд аналогичных экспериментов со схожими математическими задачами. В результате которых обе модели показали низкую способность к решению математических задач.
Основной причиной являются проблемы в рассуждениях, в частности обе LLM теряются в условиях и опираются на придуманные данные. К тому же модели сильно галлюционируют, генерируя несвязный текст, номера телефонов и ссылки, поэтому необходимо прикладывать много усилий для подбора параметров и формулировок промптов. Наиболее точных ответов получилось добиться с помощью техник Few-Shot, Chain-of-Tought и Self-Consistency.
С арифметикой у моделей оказалось всё не настолько плохо: они способны решать задачи начальной школы и выполнять незамысловатые примеры с более продвинутыми операциями: факториал, возведение в степень и т.д. В этой задаче себя отлично проявила себя техника Zero-Shot.
Role-Based же показал наименьшее влияние на качество решений математических задач. Однако, несмотря на широкое разнообразие подходов в составлении промптов, базовые знания модели и её размер оказывают сильнейшее влияние на результат.
Таким образом, Llama-3.1-8B и Llama-3.2-3B несмотря на различие в размерах, показали идентично плохие результаты на математических задачах. На данный момент эти модели могут качественно выполнять только простейшие арифметические вычисления.
Выводы
Модели Llama-3.1-8B и Llama-3.2-3B показали одинаково низкую способность к решению математические задачи школьного уровня, несмотря на кратные различия в размерах. Ключевая проблема кроется в плохих рассуждениях и склонности к генерации несвязного текста. Однако, если убрать рассуждения и оставить лишь арифметику, то модели начинают неплохо справляться с простейшими примерами, даже при использовании Zero-Shot. В общем же случае наибольшая точность достигалась с помощью техник Few-Shot и Chain-of-Thought.