paint-brush
PrivateGPT для обобщения книг: тестирование и ранжирование переменных конфигурациик@cognitivetech
3,153 чтения
3,153 чтения

PrivateGPT для обобщения книг: тестирование и ранжирование переменных конфигурации

к CognitiveTech15m2024/01/15
Read on Terminal Reader

Слишком долго; Читать

При реализации больших языковых моделей существует множество переменных. Давайте проверим и усовершенствуем наши процессы обобщения книг с использованием PrivateGPT.
featured image - PrivateGPT для обобщения книг: тестирование и ранжирование переменных конфигурации
CognitiveTech HackerNoon profile picture
0-item
1-item

Я начал вручную суммировать дюжину книг и обнаружил, что на каждое резюме у меня уйдут недели. Затем я вспомнил о произошедшей революции в области искусственного интеллекта и решил, что мне уже давно пора прыгнуть в эти воды.


Когда я начал изучать использование больших языковых моделей (LLM) для резюмирования больших текстов, я не нашел четкого направления, как это сделать .

  • На некоторых страницах приведены примеры подсказок по использованию GPT4 с идеей, что он волшебным образом узнает содержание любой книги, которую вы хотите резюмировать. (НЕТ)
  • Некоторые люди предположили, что мне нужно найти модель с большим контекстом, которая сможет обработать весь мой текст за один раз. (Еще нет)
  • Доступны некоторые инструменты с открытым исходным кодом, которые позволяют загружать документы в базу данных и отвечать на вопросы на основе содержимого этой базы данных. (Подходя ближе)
  • Другие предлагали сначала разделить книгу на разделы и по одному передать их в LLM для обобщения. (Сейчас мы говорим)
  • Помимо принятия этого решения, существует множество переменных, которые необходимо учитывать при реализации данного LLM.
  • Я быстро понял, что, несмотря на любые рекомендации или рейтинги моделей, я получаю результаты, отличные от результатов других. Будь то мой вариант использования, формат модели, квантование, сжатие, стили подсказок или что-то еще? Я не знаю. Все, что я знаю, это составить свой собственный рейтинг моделей в своих собственных условиях работы. Не верьте просто диаграммам, которые вы читаете в Интернете.


В этом руководстве представлены некоторые подробности моего процесса определения и тестирования вышеупомянутых переменных.


Полные данные о рейтинге, пошаговое руководство и итоговые сводки можно найти на GitHub .

Фон

Ключевые термины

Некоторые из этих терминов используются по-разному, в зависимости от контекста (без каламбура).

  • Модель большого языка (LLM) : (модель AKA). Тип искусственного интеллекта, который был обучен на огромных наборах данных понимать и генерировать человеческий язык.

    Пример : GPT3.5 и GPT4 от OpenAI, которые покорили мир. (В нашем случае мы выбираем среди моделей с открытым исходным кодом и/или свободно загружаемых моделей, найденных на Hugging Face .)

  • Поисковая расширенная генерация (RAG) : метод, разработанный Meta AI , для хранения документов в базе данных, в которой LLM выполняет поиск, чтобы найти ответ на заданный пользовательский запрос (Вопросы/ответы по документам).

  • Инструкции пользователя: (подсказка AKA или контекст) — это запрос, предоставленный пользователем.

    Пример: «Обобщите следующий текст: { text } ».

  • Системная подсказка: специальные инструкции, даваемые перед подсказкой пользователя, которые помогают сформировать личность вашего помощника.

    Пример: «Вы полезный ИИ-помощник».

  • Контекст: инструкции пользователя и, возможно, системное приглашение и, возможно, предыдущие раунды пар вопрос/ответ. (Предыдущие пары вопросов и ответов также называются просто контекстом).

  • Стиль подсказки : это специальные комбинации символов, которым обучается LLM, чтобы распознавать разницу между инструкциями пользователя, системными подсказками и контекстом предыдущих вопросов.

    Пример: <s>[INST] {systemPrompt} [INST] [INST] {previousQuestion} [/INST] {answer} </s> [INST] {userInstructions} [/INST]

  • 7B: Указывает количество параметров в данной модели (чем больше, тем лучше). Параметры — это внутренние переменные, которые модель изучает во время обучения и используются для прогнозирования. Для моих целей модели 7B, скорее всего, подойдут к моему графическому процессору с 12 ГБ видеопамяти.

  • GGUF: это особый формат LLM, предназначенный для потребительского оборудования (ЦП/ГП). Какая бы модель вас ни интересовала, для использования в PrivateGPT вам необходимо найти ее версию GGUF (обычно выпускаемую TheBloke ).

  • Q2-Q8 0, K_M или K_S: При просмотре файлов репозитория GGUF вы увидите разные версии одной и той же модели. Большее число означает меньшее сжатие и лучшее качество. Буква M в K_M означает «Средний», а буква S в K_S означает «Маленький».

  • VRAM: это объем памяти вашего графического процессора. Чтобы полностью загрузить его в графический процессор, вам понадобится модель меньшего размера, чем доступная вам видеопамять.

  • Токены: это метрика, по которой LLM оценивает язык. Каждый токен состоит примерно из 4 символов.

Что такое PrivateGPT?

PrivateGPT (pgpt) — это проект с открытым исходным кодом , который предоставляет пользовательский интерфейс и программируемый API, позволяющий пользователям использовать LLM на собственном оборудовании в домашних условиях. Это позволяет вам загружать документы в вашу собственную локальную базу данных для вопросов и ответов по документам, поддерживаемым RAG.


Документация PrivateGPT — обзор :

PrivateGPT предоставляет API , содержащий все строительные блоки, необходимые для создания частных контекстно-зависимых приложений ИИ . API следует и расширяет стандарт OpenAI API и поддерживает как обычные, так и потоковые ответы. Это означает, что если вы можете использовать API OpenAI в одном из своих инструментов, вы можете вместо этого использовать свой собственный API PrivateGPT без изменений кода и бесплатно , если вы используете PrivateGPT в local режиме.


Для начала мне следовало спросить LLM.

Обзор

  1. Я начал с того, что просто задавал вопросы к главам книги, используя PrivateGPT UI\RAG.

    Потом попробовал предварительно выделить текст для обобщения. Это послужило вдохновением для составления рейтинга в первом раунде, чтобы увидеть, насколько велика разница в моих результатах. (Обобщение предварительно выбранных разделов.)

  2. Затем я хотел выяснить, какие модели лучше всего справятся с этой задачей, что привело к рейтингу во втором раунде, где Mistral-7B-Instruct-v0.2 стал явным победителем.

  3. Затем я хотел получить наилучшие результаты от этой модели, ранжируя стили подсказок и написав код, чтобы получить именно тот ожидаемый стиль подсказки.

  4. После этого, конечно, мне пришлось протестировать различные системные подсказки , чтобы увидеть, какие из них будут работать лучше всего.

  5. Затем я попробовал несколько пользовательских подсказок, чтобы определить, какая из них лучше всего подходит для создания сводок, требующих наименьшей последующей обработки с моей стороны.

  6. В конечном счете, этот тип тестирования должен проводиться для каждого LLM и для определения эффективности любых усовершенствований в наших процессах. По моему мнению, только после того, как каждая модель будет приведена в самые идеальные условия, их можно будет правильно оценить друг против друга.

Рейтинги

Когда я начал тестировать различные варианты LLM, mistral-7b-instruct-v0.1.Q4_K_M.gguf входил в стандартную настройку PrivateGPT (созданную для работы на вашем процессоре). Здесь я предпочел варианты Q8_0.


Хотя я перепробовал более 50 различных LLM для этой же задачи, Mistral-7B-Instruct по-прежнему остается одним из лучших, особенно после выхода версии 0.2, и я не нашел ничего лучше.


TLDR: Mistral-7B-Instruct-v0.2 — мой нынешний лидер по задачам обобщения.

Раунд 1 – вопросы/ответы против подведения итогов

При выполнении вопросов и ответов я быстро обнаружил, что получаю гораздо лучшие результаты, загружая в базу данных меньшие порции данных и каждый раз начиная с чистого листа. Поэтому я начал разбивать PDF-файл на главы для вопросов и ответов.


Для моего первого анализа я протестировал 5 различных LLM для следующих задач:

  1. Задавать одни и те же 30 вопросов к 70-страничной главе книги.
  2. Подводя итог той же 70-страничной главе книги, разделенной на 30 частей.

Рейтинг вопросов/ответов

  1. Гермес Трисмегист Мистраль 7b — мой фаворит во время этих тестов, но при редактировании сводки я решил, что это слишком многословно.
  2. SynthIA 7B V2 — стал моим фаворитом из протестированных в этом раунде моделей.
  3. Mistral 7b Instruct v0.1 - Не так хорош, как хотелось бы.
  4. CollectiveCognition v1.1 Mistral 7b Много наполнителя и заняло больше всего времени. По качеству\полезности он набрал немного больше, чем «Мистраль», но из-за количества наполнителя читать его стало менее приятно.
  5. KAI 7b Instruct, ответы были слишком короткими, и это делало его BS немного более заметным. Хорошая модель, но не для подробных аннотаций книг.

Показано для каждой модели

  • Количество секунд, необходимое для генерации ответа
  • Сумма субъективных оценок полезности\качества
  • Сколько персонажей было создано?
  • Сумма фрагментов контекста контекста, найденных в целевом диапазоне.
  • Количество качеств, перечисленных ниже, найденных в сгенерированном тексте:
    • Наполнитель (лишние слова с меньшим значением)
    • Коротко (слишком коротко, недостаточно для работы.)
    • BS (Не из этой книги и бесполезно.)
    • Хорошая BS (не из целевого раздела, но действительна.)

Модель

Рейтинг

Точность поиска

Персонажи

Секунды

БС

Наполнитель

Короткий

Хорошая чушь

Гермес-трисмегист-мистраль-7b

68

56

62141

298

3

4

0

6

Синтия-7b-v2.0

63

59

28087

188

1

7

7

0

мистраль-7b-инструкт-v0.1

51

56

21131

144

3

0

17

1

коллективное познание-v1.1-mistral-7b

56

57

59453

377

3

10

0

0

Кай-7b-инструктировать

44

56

21480

117

5

0

18

0

Сводный рейтинг

В этом первом раунде я разделил содержание главы на разделы с разными

По 900-14000 символов (или 225-3500 токенов).


ПРИМЕЧАНИЕ. Несмотря на то, что на данный момент выпущено множество моделей с большим контекстом, я по-прежнему считаю, что меньший контекст приводит к лучшим резюме. Я не предпочитаю использовать более 2750 токенов (11000 символов) на задачу обобщения.


  1. Гермес Трисмегист Мистраль 7b — по-прежнему лидирует. Это многословно, с некоторым наполнителем. Я могу использовать эти результаты.
  2. SynthIA 7B — Неплохо, но слишком лаконично. Многие ответы были идеальными, но 7 были слишком короткими/неполными для использования.
  3. Mistral 7b Instruct v0.1 - Слишком короткий.
  4. KAI 7b Инструкция – Слишком короткая.
  5. CollectiveCognition v1.1 Mistral 7b - Много мусора. Некоторые из резюме были очень подробными и совершенными, но более половины ответов представляли собой набор вопросов, основанных на тексте, а не резюме.


Неудивительно, что резюме работали намного лучше, чем вопросы/ответы, но они также имели более точный контекст.

Имя

Счет

Созданные персонажи

% разницы с OG

Секунды на создание

Короткий

Мусор

БС

Наполнять

Вопросы

Подробный

Гермес-трисмегист-мистраль-7b

74

45870

-61

274

0

1

1

3

0

0

Синтия-7b-v2.0

60

26849

-77

171

7

1

0

0

0

1

мистраль-7b-инструкт-v0.1

58

25797

-78

174

7

2

0

0

0

0

Кай-7b-инструктировать

59

25057

-79

168

5

1

0

0

0

0

коллективное познание-v1.1-mistral-7b

31

29509

-75

214

0

1

1

2

17

8

Полные данные и рейтинги можно найти в Документах Google или на GitHub: QA Scores , Summary Rankings .

Раунд 2: Подведение итогов – ранжирование модели

Опять же, я предпочитаю версии Q8 моделей 7B.


Обнаружение выхода Mistral 7b Instruct v0.2 стоило нового раунда тестирования.

Я также решил протестировать стиль подсказок. PrivateGPT не поставлялся в комплекте с приглашением Mistral, и хотя приглашение Mistral похоже на приглашение Llama2, оно, похоже, работает лучше с приглашением по умолчанию (llama-index).

  • SynthIA-7B-v2.0-GGUF — Эта модель стала моей любимой, поэтому я использовал ее в качестве эталона.
  • Mistral-7B-Instruct-v0.2 (Llama-index Prompt) Звезда шоу, весьма впечатляющая.
  • Mistral-7B-Instruct-v0.2 (подсказка Llama2) Все еще хорошо, но не так хорошо, как использование подсказки llama-index.
  • Tess-7B-v1.4 — еще один от того же создателя, что и Synthia v2. Хорошо, но не так хорошо.
  • Llama-2-7B-32K-Instruct-GGUF - работало нормально, но медленно, с подсказкой lama-index. Просто плохо с подсказкой llama2. (Необходимо еще раз протестировать со стилем Llama2 «Только обучение»)

Сводный рейтинг

Только резюме, вопросы и ответы менее эффективны для обобщения книги.

Модель

% Разница

Счет

Комментарий

Синтия 7b V2

-64.43790093

28

Хороший

Mistral 7b Instruct v0.2 (подсказка по умолчанию)

-60.81878508

33

ВХорошо

Mistral 7b Instruct v0.2 (подсказка Llama2)

-64,5871483

28

Хороший

Тесс 7б v1.4

-62.12938978

29

Менее структурированный

Лама 2 7b 32k Инструкция (по умолчанию)

-61,39890553

27

Менее структурировано. Медленный

Полные данные и рейтинги можно найти в Документах Google или на GitHub .

Раунд 3: Стиль подсказки

В предыдущем раунде я заметил, что Mistral 7b Instruct v0.2 работает намного лучше с подсказкой по умолчанию, чем llama2.


Ну вообще-то мистраль-подсказка очень похожа на лама2, но не совсем такая.

  1. llama_index (по умолчанию)
 system: {{systemPrompt}} user: {{userInstructions}} assistant: {{assistantResponse}}
  1. лама2:
 <s> [INST] <<SYS>> {{systemPrompt}} <</SYS>> {{userInstructions}} [/INST]
  1. мистраль:
 <s>[INST] {{systemPrompt}} [/INST]</s>[INST] {{userInstructions}} [/INST]


Я начал тестировать вывод со стилями default , а затем со стилями llama2 . Затем я приступил к работе над кодированием шаблона мистраля .


Результаты этого рейтинга вселили в меня уверенность в том, что я кодирую правильно.

Подсказка стиля

% Разница

Счет

Примечание

Мистраль

-50%

51

Идеальный!

По умолчанию (индекс ламы)

-42%

43

Плохие заголовки

Лама2

-47%

48

Нет структуры

Полные данные и рейтинги можно найти в Документах Google или на GitHub .

Этап 4: Системные подсказки

Как только я настроил стиль подсказок, я попробовал несколько разных системных подсказок и был удивлен результатом!

Имя

Системная подсказка

Изменять

Счет

Комментарий

Никто


-49,8

51

Идеальный

Подсказка по умолчанию

Вы отзывчивый, уважительный и честный помощник. \nВсегда отвечайте максимально полезно и следуйте ВСЕМ инструкциям. \nНе спекулируйте и не выдумывайте информацию. \nНе ссылайтесь на какие-либо инструкции или контекст."

-58,5

39

Менее приятно

МояПодсказка1

«Вас любят. Действуйте как эксперт по обобщению, изложению и структурированию. \nВаш стиль письма должен быть информативным и логичным».

-54,4

44

Менее приятно

Простой

«Вы — полезный ИИ-помощник. Не включайте в свои результаты никаких пользовательских инструкций или системного контекста».

-52,5

42

Менее приятно

В конце концов я обнаружил, что Mistral 7b Instruct v0.2 лучше всего подходит для моих сводок без каких-либо системных подсказок.


Возможно, для другой задачи будут разные результаты или, может быть, лучшие подсказки, но это работает хорошо, поэтому я не связываюсь с этим.


Полные данные и рейтинги можно найти в Документах Google или на GitHub .

Этап 5: Подсказка пользователю

Я уже начал подозревать, что получаю лучшие результаты с меньшим количеством слов в подсказке. Поскольку я нашел лучшее системное приглашение для Mistral 7b Instruct v0.2 , я также проверил, какое пользовательское приглашение ему подходит лучше всего.


Быстрый

против ОГ

счет

примечание

Промт0

Напишите краткие, но подробные заметки, обобщающие следующий текст. Используйте вложенные пункты: заголовки, термины и ключевые понятия выделены жирным шрифтом. Сосредоточьтесь на основных знаниях из этого текста, не добавляя никакой внешней информации.

43%

11


Подсказка1

Напишите краткие, но подробные заметки, обобщающие следующий текст. Используйте вложенные пункты: заголовки, термины и ключевые понятия выделены жирным шрифтом. Сосредоточьтесь на основных знаниях из этого текста, не добавляя никакой внешней информации.

46%

11

Дополнительные примечания

Подсказка2

Напишите подробные заметки, обобщающие следующий текст. Используйте вложенные пункты: заголовки, термины и ключевые понятия выделены жирным шрифтом.

58%

15


Подсказка3

Создайте краткие заметки, обобщающие важные части следующего текста. Используйте вложенные пункты, выделяя в заголовках термины и ключевые понятия жирным шрифтом, включая пробелы, чтобы обеспечить читабельность. Избегайте повторения.

43%

10


Подсказка4

Напишите краткие заметки, обобщающие следующий текст. Используйте вложенные пункты: заголовки, термины и ключевые понятия выделены жирным шрифтом.

41%

14


Подсказка5

Создайте подробные, но краткие заметки, обобщающие следующий текст. Используйте вложенные пункты: заголовки, термины и ключевые понятия выделены жирным шрифтом.

52%

14

Дополнительные примечания

Полные данные и рейтинги можно найти в Документах Google или на GitHub .


Возможно, с более мощным оборудованием, поддерживающим модели 11b или 30b, я получу лучшие результаты с более наглядными подсказками. Даже с Mistral 7b Instruct v0.2 я по-прежнему готов попробовать некоторые творческие инструкции, но сейчас я просто рад усовершенствовать существующий процесс.

Подсказка 2: Победа!

Напишите подробные заметки, обобщающие следующий текст. Используйте вложенные пункты: заголовки, термины и ключевые понятия выделены жирным шрифтом.


В этом случае «всеобъемлющий» работает лучше, чем «краткий» или даже «всеобъемлющий, но краткий».


Однако я предупреждаю, что это будет зависеть от вашего варианта использования. Мне нужны очень сжатые и читаемые заметки, охватывающие важные знания.


По сути, даже если я не читал оригинал, я все равно должен знать, какую информацию он передает, если не каждую конкретную деталь. Даже если бы я прочитал оригинал, я не буду вспоминать большую часть позже. Эти примечания представляют собой краткий справочник по основным темам.

Результат

Используя знания, полученные в результате этих тестов, я обобщил свою первую полную книгу, 539 страниц, за 5-6 часов!!! Невероятный!

Вместо того, чтобы тратить недели на составление резюме, я завершил свои первые 9 описаний книг всего за 10 дней.

Плагиат

Ниже вы можете увидеть результаты CopyLeaks для каждого из опубликованных текстов здесь.

Особенно учитывая, что это делается не ради прибыли, а в образовательных целях, я считаю эти цифры приемлемыми.

Книга

Модели

Разница в характере

Идентичный

Небольшие изменения

Перефразированный

Всего совпадений

Восточное тело, западный разум

Синтия 7Bv2

-75%

3,5%

1,1%

0,8%

5,4%

Целебная сила блуждающего нерва

Мистраль-7Б-Инструкт-v0.2; СинтиА-7Б-v2.0

-81%

1,2%

0,8%

2,5%

4,5%

Аюрведа и разум

Мистраль-7Б-Инструкт-v0.2; СинтиА-7Б-v2.0

-77%

0,5%

0,3%

1,2%

2%

Исцеление фрагментированной личности людей, переживших травму

Мистраль-7Б-Инструкт-v0.2

-75%




2%

Безопасная база

Мистраль-7Б-Инструкт-v0.2

-84%

0,3%

0,1%

0,3%

0,7%

Тело ведет счет

Мистраль-7Б-Инструкт-v0.2

-74%

0,1%

0,2%

0,3%

0,5%

Полная книга чакр

Мистраль-7Б-Инструкт-v0.2

-70%

0,3%

0,3%

0,4%

1,1%

50 лет теории привязанности

Мистраль-7Б-Инструкт-v0.2

-70%

1,1%

0,4%

2,1%

3,7%

Нарушения привязанности у взрослых

Мистраль-7Б-Инструкт-v0.2

-62%

1,1%

1,2%

0,7%

3,1%

Соратник по специальности психология

Мистраль-7Б-Инструкт-v0.2

-62%

1,3%

1,2%

0,4%

2,9%

Психология в вашей жизни

Мистраль-7Б-Инструкт-v0.2

-74%

0,6%

0,4%

0,5%

1,6%

Завершенные обзоры книг

Вместо того, чтобы тратить недели на составление резюме, я завершил свои первые 9 описаний книг всего за 10 дней. В скобках указано количество страниц оригинала.

  1. Восточное тело, западный разум, Анодея Джудит (436 страниц)
  2. Целебная сила блуждающего нерва Стэнли Розенберг (335 страниц)
  3. Аюрведа и разум, доктор Дэвид Фроули (181 страница)
  4. Исцеление фрагментированной личности людей, переживших травму, Янина Фишер (367 страниц)
  5. Надежная база Джон Боулби (133 страницы)
  6. Тело держит счет Бессель ван дер Колк (454 страницы)
  7. Йога и поливагальная теория, от Polyvagal Safety Стивена Порджеса (37 страниц)
  8. Полная книга чакр Ллевеллина Синтия Дейл (999 страниц)
  9. Пятьдесят лет теории привязанности: лекция памяти Дональда Винникотта (54 страницы)
  10. Нарушения привязанности у взрослых (477 страниц)
  11. Напарник по специальности психология Дана С. Данн, Джейн С. Халонен (308 страниц)
  12. Миф об искупительном насилии Уолтер Уинк (5 страниц)
  13. Психология в вашей жизни Сара Гисон и Майкл С. Газзанига (1072 страницы)

Прохождение

Если вам интересно следовать моим шагам более внимательно, ознакомьтесь с пошаговым руководством на GitHub, содержащим сценарии и примеры.

Заключение

Теперь, когда мои процессы усовершенствованы и я чувствую себя уверенно, работая с форматами подсказок, я проведу дальнейшие тесты. На самом деле, я уже проводил дальнейшие тесты и рейтинги (опубликую их позже), но, конечно, проведу еще больше тестов и продолжу обучение!


Я по-прежнему считаю, что если вы хотите получить наилучшие результаты для любой задачи, которую вы выполняете с помощью ИИ, вам следует провести собственные эксперименты и посмотреть, что работает лучше всего. Не полагайтесь исключительно на рейтинги популярных моделей, а используйте их для проведения собственных исследований.

Дополнительные ресурсы


Также появляется здесь .