Anthropic решили следовать примеру OpenAI и сделали свой...
Anthropic решили следовать примеру OpenAI и сделали свой cookbook, в котором собирают примеры работы со своими моделями. И даже текстовый гайд написали, в котором тестируют одно из ключевых отличий от конкурентов — ширину контекстного окна (у Claude это 100'000 токенов).
А как такое тестировать? Ну, например, давать очень длинный кусок текста и задавать вопрос с вариантами ответа, а затем проверять, что модель выбирает правильный. Для этого делается следующее:
1) берётся ежедневно выпускаемый правительственный документ, который содержит стенограммы заседаний множества различных департаментов;
2) весь текст нарезается на маленькие кусочки;
3) к каждому куску Claude генерит вопросы с помощью специального промпта. Он содержит пару примеров (порядка 1500 токенов каждый) того, что ожидается, а затем инструкцию, которая адрессует некоторые из проблем генерации синтетических данных (более детализированный правильный ответ; не очень простые вопросы о мета-данных, вроде даты документа; вопросы, не связанные с контекстом). Все промпты выложены отдельным pdf-файлом;
4) затем куски склеиваются обратно случайным образом в контексты длины 70k и 95k токенов. Для каждого контекста мы знаем, ответы на какие вопросы он содержит
5) испытываем модель! Метрика — доля правильных ответов.
Всего собрали чуть меньше 400 вопросов, почти уверен, что их отсмотрели глазами и пофильтровали.
Замеряется две модели: Claude 2 и Claude Instant 1.2 (мелкая, дешёвая и быстрая). Для того, чтобы облегчить работу, используется два трюка в промпте перед генерацией ответа:
1) Извлечение 2-3 цитат, относящихся к вопросу, перед написанием ответа;
2) Дополнение промпта примерами правильно отвеченных вопросов по другим кускам контекста. Примеров дают 2 или 5.
Выводы следующие:
1) Claude Instant гораздо хуже отвечает на вопросы, ответы для которых содержатся в начале или середине контекстного окна (67%-79% против 87-92% для тех, что содержатся "в хвосте"). Двойка почти не страдает этим;
2) Claude 2 существенно лучше работает, даже без примеров и выписывания цитат показывает метрики выше, чем Instant — со всеми приседаниями;
3) Самый лучший результат 96-97%. Жаль не делается анализ ошибок, но в целом это указывает на то, что даже суперкрутые модели не делают работу на 100%. Нельзя от них ожидать абсолютной надёжности (хотя я уверен, что средний человек на задаче ответа на вопрос по 100+ страницам текста покажет себя хуже, лол!);
4) Выписывание полезных цитат перед ответом улучшает все модели во всех сравнениях. Запоминаем этот приём!
5) Добавление нерелевантных примеров в промпт не даёт улучшения качества;
6) Нет разницы, 2 или 5 примеров добавляется в промпт.
Отдельно отмечу, что поскольку модели лучше работают с тем, что написано в конце, то инструкция "прочитай и ответь на вопрос" вставляется не в начало, а в конец промпта! Вот это, думаю, многие упускают. Более подробно можно прочитать в документации (с примером).
А как такое тестировать? Ну, например, давать очень длинный кусок текста и задавать вопрос с вариантами ответа, а затем проверять, что модель выбирает правильный. Для этого делается следующее:
1) берётся ежедневно выпускаемый правительственный документ, который содержит стенограммы заседаний множества различных департаментов;
2) весь текст нарезается на маленькие кусочки;
3) к каждому куску Claude генерит вопросы с помощью специального промпта. Он содержит пару примеров (порядка 1500 токенов каждый) того, что ожидается, а затем инструкцию, которая адрессует некоторые из проблем генерации синтетических данных (более детализированный правильный ответ; не очень простые вопросы о мета-данных, вроде даты документа; вопросы, не связанные с контекстом). Все промпты выложены отдельным pdf-файлом;
4) затем куски склеиваются обратно случайным образом в контексты длины 70k и 95k токенов. Для каждого контекста мы знаем, ответы на какие вопросы он содержит
5) испытываем модель! Метрика — доля правильных ответов.
Всего собрали чуть меньше 400 вопросов, почти уверен, что их отсмотрели глазами и пофильтровали.
Замеряется две модели: Claude 2 и Claude Instant 1.2 (мелкая, дешёвая и быстрая). Для того, чтобы облегчить работу, используется два трюка в промпте перед генерацией ответа:
1) Извлечение 2-3 цитат, относящихся к вопросу, перед написанием ответа;
2) Дополнение промпта примерами правильно отвеченных вопросов по другим кускам контекста. Примеров дают 2 или 5.
Выводы следующие:
1) Claude Instant гораздо хуже отвечает на вопросы, ответы для которых содержатся в начале или середине контекстного окна (67%-79% против 87-92% для тех, что содержатся "в хвосте"). Двойка почти не страдает этим;
2) Claude 2 существенно лучше работает, даже без примеров и выписывания цитат показывает метрики выше, чем Instant — со всеми приседаниями;
3) Самый лучший результат 96-97%. Жаль не делается анализ ошибок, но в целом это указывает на то, что даже суперкрутые модели не делают работу на 100%. Нельзя от них ожидать абсолютной надёжности (хотя я уверен, что средний человек на задаче ответа на вопрос по 100+ страницам текста покажет себя хуже, лол!);
4) Выписывание полезных цитат перед ответом улучшает все модели во всех сравнениях. Запоминаем этот приём!
5) Добавление нерелевантных примеров в промпт не даёт улучшения качества;
6) Нет разницы, 2 или 5 примеров добавляется в промпт.
Отдельно отмечу, что поскольку модели лучше работают с тем, что написано в конце, то инструкция "прочитай и ответь на вопрос" вставляется не в начало, а в конец промпта! Вот это, думаю, многие упускают. Более подробно можно прочитать в документации (с примером).
Источник: Сиолошная
2023-09-26 06:02:30