Денис Соломатин – Искусственный интеллект от А до Б (страница 39)
В исследованиях ИИ время тестирования обычно используется для обозначения вывода, потому что исследователи в основном делают выводы только для проверки модели. Тем не менее, этот метод может быть применен к моделям в производстве в целом. Это вычисление во время тестирования, так как количество выходных данных, которые можно выбрать, определяется тем, сколько вычислительных ресурсов можно выделить для каждого вызова вывода.
Чтобы выбрать лучший выход, вы можете либо показать пользователям несколько выходных данных и позволить им выбрать тот, который лучше всего подходит для них, либо вы можете разработать метод выбора лучшего. Одним из методов выбора является выбор выходных данных с наибольшей вероятностью. Выходными данными языковой модели является последовательность лексем, и каждая лексема имеет вероятность, вычисленную моделью. Вероятность выхода – это произведение вероятностей всех токенов на выходе.
Рассмотрим последовательность лексем ["Я", "любовь", "еда"]. Если вероятность для "Я" равна 0,2, вероятность для "любовь" при "л" равна 0,1, а вероятность для "еда" при данных "л" и "любовь" равна 0,3, вероятность последовательности равна: 0,2 × 0,1 × 0,3 = 0,006. Математически это можно обозначить следующим образом: p(Я люблю еду) = p(I) × p(I | люблю) × p(еда | Я, любовь)
Помните, что проще работать с вероятностями на логарифмической шкале. Логарифм произведения равен сумме логарифмов, поэтому logprob последовательности лексем является суммой логпроба всех лексем в последовательности: logprob(Я люблю еду) = logprob(Я) + logprob(Я | люблю) + logprob(еда | Я, любовь). При суммировании более длинные последовательности, скорее всего, будут иметь меньший общий logprob (значения logprob обычно отрицательны, потому что log значений от 0 до 1 отрицательны). Чтобы избежать смещения в сторону коротких последовательностей, можно использовать среднее логарифмическое значение, разделив сумму последовательности на ее длину. После выборки нескольких выходных данных вы выбираете тот, у которого самый высокий средний logprob.
Другой метод выбора заключается в использовании модели вознаграждения для оценки каждого результата, как обсуждалось в предыдущем разделе. Вспомните, что и Stitch Fix, и Grab выбирают выходы, получившие высокие баллы по моделям вознаграждений или верификаторам. Компания Nextdoor обнаружила, что использование модели вознаграждения стало ключевым фактором в повышении производительности их приложения (2023 год).
OpenAI также обучила верификаторов, чтобы они помогали своим моделям выбирать лучшие решения математических задач. Они обнаружили, что использование верификатора значительно повысило производительность модели. Фактически, использование верификаторов привело к примерно такому же приросту производительности, как и увеличение размера модели в 3 раза. Это означает, что модель со 100 миллионами параметров, использующая верификатор, может работать наравне с моделью с 3 миллиардами параметров, которая не использует верификатор.
DeepMind также доказывает ценность вычислений во время тестирования, утверждая, что масштабирование вычислений во время тестирования (например, выделение большего количества вычислительных ресурсов для генерации большего количества выходных данных во время вывода) может быть более эффективным, чем масштабирование параметров модели. В той же статье задается интересный вопрос: если LLM разрешено использовать фиксированный, но нетривиальный объем вычислений во время вывода, насколько он может улучшить свою производительность в сложной задаче?
В эксперименте OpenAI выборка большего количества выходов привела к повышению производительности, но только до определенного момента. В этом эксперименте этот показатель составлял 400 выходов. Они предположили, что по мере увеличения числа выборочных выходов вероятность нахождения состязательных выходов, которые могут обмануть верификатора, также увеличивается. Однако эксперимент в Стэнфорде показал другой вывод. Установлено, что количество решенных задач часто увеличивается логарифмически по мере увеличения числа образцов от 1 до 10 000. Хотя интересно подумать о том, можно ли масштабировать вычисления во время тестирования до бесконечности, вряд ли кто-то в производственной среде сэмплирует 400 или 10 000 различных выходов для каждого входа. Стоимость будет астрономической.
Вы также можете использовать эвристики, специфичные для приложения, чтобы выбрать наилучший отклик. Например, если ваше приложение выигрывает от более коротких ответов, вы можете выбрать самого короткого кандидата. Если ваше приложение преобразует естественный язык в SQL-запросы, вы можете заставить модель продолжать генерировать выходные данные до тех пор, пока она не сгенерирует действительный SQL-запрос.
Одним из особенно интересных применений вычислений во время тестирования является преодоление проблемы задержки. Для некоторых запросов, особенно для цепочек мыслей, модели может потребоваться много времени для завершения ответа. Киттипат Кампа, руководитель отдела искусственного интеллекта в TIFIN, рассказал мне, что его команда просит свою модель генерировать несколько ответов параллельно и показывать пользователю первый ответ, который завершен и действителен.
Выбор наиболее распространенных выходных данных из набора выходных данных может быть особенно полезен для задач, в которых ожидаются точные ответы. Например, если дана математическая задача, модель может решить ее несколько раз и выбрать наиболее частый ответ в качестве окончательного решения. Аналогичным образом, для вопроса с несколькими вариантами ответов модель может выбрать наиболее часто встречающийся вариант вывода. Именно так поступил Google, оценивая Gemini по бенчмарку MMLU. Они отобрали 32 результата для каждого вопроса. Это позволило модели получить более высокий балл, чем тот, который был бы достигнут при использовании только одного результата на вопрос.
Модель считается устойчивой, если она не изменяет резко свои выходные данные с небольшими изменениями входных данных. Чем менее надежна модель, тем больше преимуществ дает выборка нескольких выходных данных. В одном проекте мы использовали искусственный интеллект для извлечения определенной информации из изображения продукта. Мы обнаружили, что для одного и того же изображения наша модель может считывать информацию только в половине случаев. Для второй половины модель говорила, что изображение слишком размытое или текст слишком мелкий для чтения. Однако, попробовав три раза с каждым изображением, модель смогла извлечь правильную информацию для большинства изображений.
Часто в продакшене требуются модели для генерации выходных данных в определенных форматах. Структурированные выходные данные имеют решающее значение для следующих двух сценариев:
1. Задачи, требующие структурированных результатов. Наиболее распространенной категорией задач в этом сценарии является семантический парсинг. Семантический синтаксический анализ включает в себя преобразование естественного языка в структурированный, машиночитаемый формат. Text-to-SQL – это пример семантического разбора, где выходными данными должны быть валидные SQL-запросы. Семантический парсинг позволяет пользователям взаимодействовать с API с помощью естественного языка (например, английского). Например, text-to-PostgreSQL позволяет пользователям запрашивать базу данных Postgres с помощью запросов на английском языке, таких как «Каков средний ежемесячный доход за последние 6 месяцев» вместо того, чтобы записывать это в PostgreSQL. Это пример запроса для GPT-4o на преобразование текста в регулярное выражение. Выходы являются фактическими выходами, сгенерированными GPT-4o. Другие категории задач в этом сценарии включают классификацию, в которой выходные данные должны быть допустимыми классами.
Задачи, выходные данные которых используются нижестоящими приложениями. В этом сценарии сама задача не нуждается в структурировании выходных данных, но, поскольку выходные данные используются другими приложениями, они должны быть доступны для анализа этими приложениями. Например, если вы используете модель искусственного интеллекта для написания электронного письма, само письмо не обязательно должно быть структурировано. Однако нижестоящему приложению, использующему этот адрес электронной почты, может потребоваться определенный формат, например документ JSON с определенными ключами.
К структурам, поддерживающим структурированные результаты, относятся руководство, планы, инструктор и llama.cpp. Каждый поставщик моделей также может использовать свои собственные методы для улучшения способности своих моделей генерировать структурированные выходные данные. OpenAI был первым поставщиком моделей, который внедрил режим JSON в свой API для генерации текста. Обратите внимание, что режим JSON API обычно гарантирует только то, что выходные данные являются допустимым JSON, а не содержимым объектов JSON. Допустимые в остальном сгенерированные JSON также могут быть усечены и, таким образом, не поддаются анализу, если генерация останавливается слишком рано, например, когда достигается максимальная длина выходного токена. Однако, если максимальная длина лексемы установлена слишком длинной, ответы модели становятся слишком медленными и дорогостоящими.