Суммаризация текста с помощью LLaMA-2 13B для новичков
LLM модель типа LLaMA-2, вышедшая в июле 2023 года, умеет многое с помощью правильно составленного текстового запроса (промта) без дополнительного программирования. Одна из очень полезных возможностей это суммаризация текста, c помощью которой можно сделать краткую выдержку по большому тексту даже на русском языке.
Коротко о LLaMA-2
Существуют 3 версии LLaMA-2 по числу параметров 7B, 13B, 70B. Чем больше миллиардов параметров, тем более качественным будет результат, но требуется больше вычислительных ресурсов. Оптимальный, на мой взгляд, это 13B на нем и остановимся далее.
Все версии LLaMA-2 имеют контекст 4 000 токенов, что позволяет подгрузить в запрос около 10 страниц текста. На данный момент на HuggingFace, официальная модель LLaMA-2 доступна по предварительному одобрению, после отправки персональных данных. Однако, есть уже модифицированные модели от других пользователей, которые свободно можно использовать из коробки. Однако не все они полезны.
Какие LLM модели самые качественные?
Есть специальный лидерборд, где по разным тестам можно увидеть рейтинг моделей. Что касается LLaMA по параметрам можно увидеть из этого сравнения, что 13B не сильно хуже по многим тестам, чем 70B.
Llama-2 расширенная на 8K
В данной статье, мы остановимся на "OpenAssistant/llama2-13b-orca-8k-3319", т.к. я неоднократно ее опробовал и она хорошо работает. Помимо этого у нее увеличен контекст до 8 000 токенов, что крайне необходимо в работе с документами.
Мультиязычность модели
Изначально модель обучена работать на разных языках. Основной это английский. Русский также доступен, но его качество не во всех случаях хорошее. В частности, я замечал что 7B заметно хуже 13B.
Системные требования
LLaMA-2 можно запускать на процессоре и на GPU. Чтобы использовать эту модель на процессоре используют квантизацию для снижения требований к ресурсам, иначе непомерно долго работает и требует много памяти. Поскольку квантизация не входит в цель данной статьи - гуглите "Running Llama 2 on CPU Inference".
У меня в распоряжении есть 2 GPU 3909 с суммарным объемом памяти 48 Gb. Этого достаточно для запуска LLaMA-2 13B и более менее быстрого отклика.
Если у вас есть хотя бы только одна видеокарта с 24 Gb, то придется использовать LLaMA-2 7B или квантизацию, либо арендовать GPU в облаке.
Стандартный код для работы с LLaMA-2
Предполагается, что вы уже работает с transformers, поэтому шаг установки это библиотеке опускаю. Ниже приведен стандартный код HugginfFace для запуска LLM модели.
Шаг 1 - Инициализация
device_map="auto" - автоматически распределит нагрузку на имеющиеся ресурсы. Если несколько видеокарт, значит он все их задействует, что очень удобно. Если указать device_map="cpu", то будет использован только процессор.
max_new_tokens=512 - сколько токенов (можно сказать что слов) будет сгенерировано моделью. Чем больше токенов, тем дольше генерация будет.
update от 25 октября, ранее я утверждал:
torch_dtype=torch.bfloat16 - очень важно указать значение bfloat16 (вместо float16), так модель поместится в две видеокарты с памятью по 24Гб, иначе не влазит.
В последующих тестах это утверждение не подтвердилось по каким-то причинам, bfloat больше не стал влиять на размер используемой видеопамяти.
temperature=0 - поскольку мы будем работать с контекстом (документами пользователя) этот параметр необходимо указывать в 0, чтобы свести к минимуму выдумки и несуществующие в исходном тексте формулировки.
Шаг 2 - запрос (промт)
Промт это по сути запрос, в котором прописаны некие подробные инструкции или вопрос к модели, следуя которым модель может более четко отвечать.
Шаг 3 - запуск
Ответ модели был такой:
Joe Biden is a former Vice President of the United States who served under President Barack Obama from 2009 to 2017. He is a member of the Democratic Party and has been a U.S. Senator from Delaware since 1973. Biden is also a presidential candidate in the 2020 election...
Какой промт нужен для суммаризации текста
Чтобы модель отвечала в контексте наших документов, необходимо в промте прямо это попросить: Use the following pieces of context to summary.
Ответ модели: Ученые из Саратовского государственного медицинского университета им. В.И. Разумовского разработали математическую модель, которая позволит снизить в два раза количество ошибок при диагностировании сердечно-сосудистых заболеваний. По словам исследователей, применение полученных данных позволит в два раза снизить количество неверных диагностик.
Промт для получения темы на основе контекста
Если к выше указанному тексту поменять в конце вопрос
Получим ответ: Математическая модель, разработанная учеными СГМУ, позволит снизить в два раза количество ошибок при диагностировании сердечно-сосудистых заболеваний.
Если изменить в начале указание вместо "to summary" поставить "to topic" и в конце вопрос
То получится немного другой ответ: Снижение в два раза количества ошибок при диагностировании сердечно-сосудистых заболеваний с помощью математической модели ученых СГМУ.
Кстати, ответ генерировался за 3.4 секунды.
Как размер контекста влияет на системные требования
Чем больше контекст подсовываешь, тем больше требуется видеопамяти GPU для генерации ответа. Поэтому даже если модель поместилась в память GPU, совсем не означает, что она отработает с максимальной длиной контекста.
На двух 3090 24Гб модель 13B занимает по 14-21 Гб и выше памяти в каждой видеокарте. Остается совсем немного для работы с разной длиной контекста.
Что делать если текст большой?
Вероятно самое просто это разбить документ по предложениям в размере менее 4К токенов и скармливать в промт. Получив все суммаризации по блокам, можно запустить еще одно разбиение на блоки, если финал превышает размер контекста. А если не превышает, то можно запустить финальную суммаризацию. Но я так еще не пробовал )
Также не забываем, что если требуется максимальное качество, можно пробовать версии 70B, а также само собой ChatGPT 4, у которого есть 32K контекст, и Claude 2 у которого есть контекст длинной 100К.
Как уместить модель в одной видеокарте 24 ГБ
Для этого потребуется загрузка в 8-бит. А также torch_dtype=torch.float16
Заключение
В данной статье показан самый простой способ использования LLaMA-2 на примере суммаризации текста. Если есть вопросы - пишите, чем смогу помогу. Замечу, что я лишь энтузиаст-исследователь, а не профессиональный ИИ-программист. Также вы можете подписаться на мой ТГ-канал, где я делюсь своими находками.
После новостей о требовании местных властей предоставить доступ к зашифрованным данным пользователей iCloud по всему миру.
Даже если украденные деньги не вернут.
Инвестиции в недвижимость — это не только способ сохранить и приумножить капитал, но и шанс на стабильный доход в долгосрочной перспективе. Однако для начинающих инвесторов, особенно тех, кто не располагает крупным стартовым капиталом, важно выбрать правильную стратегию и разобраться в ключевых принципах. В 2025 году рынок недвижимости продолжает п…
Производитель компьютерной техники хотел сократить количество обращений.
Раньше продавец оплачивал «последнюю милю» — доставку до ПВЗ, постамата или в руки — только при успешной покупке или возврате.
Рассказываем про обновлённые ТВ-приставку SberBox 2 и телевизор Sber, дизайн которых вдохновлён духом грандиозного футбольного события.
Эксперты отмечают, что дефицит может возникать в некоторых регионах, но проблем с производством электричества в стране нет.