Я начал вручную суммировать дюжину книг и обнаружил, что на каждое резюме у меня уйдут недели. Затем я вспомнил о произошедшей революции в области искусственного интеллекта и решил, что мне уже давно пора прыгнуть в эти воды.
Когда я начал изучать использование больших языковых моделей (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 (pgpt) — это проект с открытым исходным кодом , который предоставляет пользовательский интерфейс и программируемый API, позволяющий пользователям использовать LLM на собственном оборудовании в домашних условиях. Это позволяет вам загружать документы в вашу собственную локальную базу данных для вопросов и ответов по документам, поддерживаемым RAG.
Документация PrivateGPT — обзор :
PrivateGPT предоставляет API , содержащий все строительные блоки, необходимые для создания частных контекстно-зависимых приложений ИИ . API следует и расширяет стандарт OpenAI API и поддерживает как обычные, так и потоковые ответы. Это означает, что если вы можете использовать API OpenAI в одном из своих инструментов, вы можете вместо этого использовать свой собственный API PrivateGPT без изменений кода и бесплатно , если вы используете PrivateGPT в
local
режиме.
Я начал с того, что просто задавал вопросы к главам книги, используя PrivateGPT UI\RAG.
Потом попробовал предварительно выделить текст для обобщения. Это послужило вдохновением для составления рейтинга в первом раунде, чтобы увидеть, насколько велика разница в моих результатах. (Обобщение предварительно выбранных разделов.)
Затем я хотел выяснить, какие модели лучше всего справятся с этой задачей, что привело к рейтингу во втором раунде, где Mistral-7B-Instruct-v0.2 стал явным победителем.
Затем я хотел получить наилучшие результаты от этой модели, ранжируя стили подсказок и написав код, чтобы получить именно тот ожидаемый стиль подсказки.
После этого, конечно, мне пришлось протестировать различные системные подсказки , чтобы увидеть, какие из них будут работать лучше всего.
Затем я попробовал несколько пользовательских подсказок, чтобы определить, какая из них лучше всего подходит для создания сводок, требующих наименьшей последующей обработки с моей стороны.
В конечном счете, этот тип тестирования должен проводиться для каждого 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 — мой нынешний лидер по задачам обобщения.
При выполнении вопросов и ответов я быстро обнаружил, что получаю гораздо лучшие результаты, загружая в базу данных меньшие порции данных и каждый раз начиная с чистого листа. Поэтому я начал разбивать PDF-файл на главы для вопросов и ответов.
Для моего первого анализа я протестировал 5 различных LLM для следующих задач:
Модель | Рейтинг | Точность поиска | Персонажи | Секунды | БС | Наполнитель | Короткий | Хорошая чушь |
---|---|---|---|---|---|---|---|---|
Гермес-трисмегист-мистраль-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 символов) на задачу обобщения.
Неудивительно, что резюме работали намного лучше, чем вопросы/ответы, но они также имели более точный контекст.
Имя | Счет | Созданные персонажи | % разницы с 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 .
Опять же, я предпочитаю версии Q8 моделей 7B.
Обнаружение выхода Mistral 7b Instruct v0.2 стоило нового раунда тестирования.
Я также решил протестировать стиль подсказок. PrivateGPT не поставлялся в комплекте с приглашением Mistral, и хотя приглашение Mistral похоже на приглашение Llama2, оно, похоже, работает лучше с приглашением по умолчанию (llama-index).
Только резюме, вопросы и ответы менее эффективны для обобщения книги.
Модель | % Разница | Счет | Комментарий |
---|---|---|---|
Синтия 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 .
В предыдущем раунде я заметил, что Mistral 7b Instruct v0.2 работает намного лучше с подсказкой по умолчанию, чем llama2.
Ну вообще-то мистраль-подсказка очень похожа на лама2, но не совсем такая.
system: {{systemPrompt}} user: {{userInstructions}} assistant: {{assistantResponse}}
<s> [INST] <<SYS>> {{systemPrompt}} <</SYS>> {{userInstructions}} [/INST]
<s>[INST] {{systemPrompt}} [/INST]</s>[INST] {{userInstructions}} [/INST]
Я начал тестировать вывод со стилями default
, а затем со стилями llama2
. Затем я приступил к работе над кодированием шаблона мистраля .
Результаты этого рейтинга вселили в меня уверенность в том, что я кодирую правильно.
Подсказка стиля | % Разница | Счет | Примечание |
---|---|---|---|
Мистраль | -50% | 51 | Идеальный! |
По умолчанию (индекс ламы) | -42% | 43 | Плохие заголовки |
Лама2 | -47% | 48 | Нет структуры |
Полные данные и рейтинги можно найти в Документах Google или на GitHub .
Как только я настроил стиль подсказок, я попробовал несколько разных системных подсказок и был удивлен результатом!
Имя | Системная подсказка | Изменять | Счет | Комментарий |
---|---|---|---|---|
Никто | | -49,8 | 51 | Идеальный |
Подсказка по умолчанию | Вы отзывчивый, уважительный и честный помощник. \nВсегда отвечайте максимально полезно и следуйте ВСЕМ инструкциям. \nНе спекулируйте и не выдумывайте информацию. \nНе ссылайтесь на какие-либо инструкции или контекст." | -58,5 | 39 | Менее приятно |
МояПодсказка1 | «Вас любят. Действуйте как эксперт по обобщению, изложению и структурированию. \nВаш стиль письма должен быть информативным и логичным». | -54,4 | 44 | Менее приятно |
Простой | «Вы — полезный ИИ-помощник. Не включайте в свои результаты никаких пользовательских инструкций или системного контекста». | -52,5 | 42 | Менее приятно |
В конце концов я обнаружил, что Mistral 7b Instruct v0.2 лучше всего подходит для моих сводок без каких-либо системных подсказок.
Возможно, для другой задачи будут разные результаты или, может быть, лучшие подсказки, но это работает хорошо, поэтому я не связываюсь с этим.
Полные данные и рейтинги можно найти в Документах Google или на GitHub .
Я уже начал подозревать, что получаю лучшие результаты с меньшим количеством слов в подсказке. Поскольку я нашел лучшее системное приглашение для 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 я по-прежнему готов попробовать некоторые творческие инструкции, но сейчас я просто рад усовершенствовать существующий процесс.
Напишите подробные заметки, обобщающие следующий текст. Используйте вложенные пункты: заголовки, термины и ключевые понятия выделены жирным шрифтом.
В этом случае «всеобъемлющий» работает лучше, чем «краткий» или даже «всеобъемлющий, но краткий».
Однако я предупреждаю, что это будет зависеть от вашего варианта использования. Мне нужны очень сжатые и читаемые заметки, охватывающие важные знания.
По сути, даже если я не читал оригинал, я все равно должен знать, какую информацию он передает, если не каждую конкретную деталь. Даже если бы я прочитал оригинал, я не буду вспоминать большую часть позже. Эти примечания представляют собой краткий справочник по основным темам.
Используя знания, полученные в результате этих тестов, я обобщил свою первую полную книгу, 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 дней. В скобках указано количество страниц оригинала.
Если вам интересно следовать моим шагам более внимательно, ознакомьтесь с пошаговым руководством на GitHub, содержащим сценарии и примеры.
Теперь, когда мои процессы усовершенствованы и я чувствую себя уверенно, работая с форматами подсказок, я проведу дальнейшие тесты. На самом деле, я уже проводил дальнейшие тесты и рейтинги (опубликую их позже), но, конечно, проведу еще больше тестов и продолжу обучение!
Я по-прежнему считаю, что если вы хотите получить наилучшие результаты для любой задачи, которую вы выполняете с помощью ИИ, вам следует провести собственные эксперименты и посмотреть, что работает лучше всего. Не полагайтесь исключительно на рейтинги популярных моделей, а используйте их для проведения собственных исследований.
Также появляется здесь .