Saiga Llama 3 8B على 10 جيجابايت VRAM: كيف حققت Habr دقة 93٪ في حرب وسلام
تم تشغيل Saiga Llama 3 8B بنجاح على RTX 3080 مع 10 جيجابايت VRAM وضغط مجلدي حرب وسلام في ملخص من 18 ألف كلمة. كان التحدي الرئيسي ليس الذاكرة بل الهلوسات: كان ال

На Habr AI вышел практический разбор запуска Saiga Llama 3 8B на домашней RTX 3080 с 10 ГБ видеопамяти для суммаризации первых двух томов «Войны и мира». Эксперимент показал, что главная проблема локальной LLM в такой задаче — не только ограниченная память, но и галлюцинации на уровне фактов, имён и хронологии.
Запуск на 10 ГБ
Автор собрал пайплайн вокруг IlyaGusev/saiga_llama3_8b с 4-битным квантованием и запускал модель на домашней RTX 3080 с 10 ГБ VRAM. Полный текст двух томов в память не помещался, поэтому роман пришлось резать по главам и ограничивать размер каждого фрагмента. После серии прогонов рабочим компромиссом стали примерно 7500 символов на кусок: меньше терялось слишком много контекста, больше рос риск сбоев и переполнения видеопамяти.
В качестве стека использовались transformers и bitsandbytes, а точность пересказов автор сверял через Gemini. По пути всплыли и неожиданные побочные эффекты: Qwen2.5-7B-Instruct однажды вместо саммари выдала длинный кусок Python-кода с советами по библиотекам.
Идею со «скользящим окном», когда модель пересказывает уже готовое краткое содержание, тоже быстро отбросили: качество деградировало по принципу сломанного телефона, а время обработки в итоге становилось только заметно больше.
Откуда взялись галлюцинации
Наивный промпт сначала выглядел рабочим: модель выдавала короткие пересказы по 3–5 предложений, но быстро начинала путать фамилии, родственные связи и хронологию. Пьер Безухов мог внезапно стать сыном Ростовых, а князь Василий Курагин — его отцом. Когда в системный промпт добавили базу персонажей с жёсткими правилами, ошибки не исчезли, а сместились: сеть стала увереннее формулировать фактически неверные выводы по отдельным главам.
Самый показательный сбой случился с Николаем Ростовым. В эпизоде после Шенграбенского сражения модель решила, что герой умер, хотя в тексте он только ранен и позже продолжает сюжет. Автор объясняет это перекосом в вероятностях: Толстой долго описывает боль, кровь и ощущение близкой смерти, а короткое подтверждение того, что Ростов жив, появляется позже и весит для модели меньше.
Проверка логитов показала, что промпт действительно может радикально смещать выбор следующего токена.
«Запрещено убивать героев!
Николай Ростов выживает при Шенграбене».
Что реально помогло В рабочей версии пайплайна правила стали предельно
прямыми: сверять фамилии с базой персонажей, не додумывать романтические линии, помнить, что действие идёт в 1805 году, и честно писать, если отрывок обрывается до развязки. Параллельно автор ужал параметры генерации — температура 0,1, top_p 0,85 и repetition_penalty 1,15. Идея была простой: меньше креатива, меньше соблазна достроить Толстого от себя.
И тем стабильнее ответ. 4-битное квантование вместо полноразмерной загрузки Нарезка текста по главам с лимитом около 7500 символов Жёсткий системный промпт с базой персонажей Низкая температура и ограниченный top_p * Постобработка редких ошибок в фамилиях Такой набор мер не сделал систему безошибочной, но резко сократил число критических галлюцинаций. Финальная оценка через Gemini 3 Flash дала среднюю фактическую точность около 93%, а большая часть глав держалась в диапазоне 90–98%.
Самые яркие промахи остались на уровне токенов и морфем: в одном месте появился «Пьер Бездаровский», гибрид фамилии Безухова и слова «бездарный». Автор считает, что такие редкие сбои проще ловить постобработкой, чем ещё сильнее усложнять промпт.
Что это значит
Этот кейс показывает важную вещь для локальных LLM: даже на потребительской видеокарте можно построить полезный конвейер для длинных текстов, но успех упирается не только в модель и объём VRAM. Часто решают жёсткие инструкции, контроль генерации и постобработка — то есть инженерия вокруг LLM, а не одна магическая кнопка «прочитай книгу за меня».