Хорошая модель есть, пользоваться ей нельзя
Я строю проект Bank Checkup - он анализирует экономическую деятельность компании для арбитражных управляющих, аудиторов, юристов и банков. Проект главным образом стоит на одном умении: прочитать банковскую выписку.
Тут у нас файлов на любой вкус и цвет. Excel, Word, PDF, плохо пропечатанные сканы, RTF на сотни мегабайт, таблицы, собранные из ASCII-символов. Какой только экзотики я уже не видел в оформлении банковских документов!
Казалось бы, решается за вечер: сильная облачная модель получает документ - возвращает то, что мне нужно. Таких проектов в сети уже много, это обёртки над API ЧатГПТ. Но по условиям проекта (да и так-то по закону) исходные выписки нельзя отправлять через границу. Вообще куда-либо отправлять - по оферте их доверили только нам.
Что остаётся? Два честных пути: вычистить из документов всё живое и всё-таки пойти в облако, либо закрыться дома и считать локально. Я начал с обоих)
Путь первый: анонимизировать. Сервисов-прокладок и опенсорса для этого полно. Но на сканах выписок процент ошибок высокий: пересматривал результаты, а там нет-нет да и настоящий Сергей Петрович или ООО с ИНН. А проверить каждую страницу руками нельзя: выписки бывают на тысячи страниц. Чужими данными так рисковать я не готов.
Путь второй: локальная модель. Мой «сервер» - это старый игровой комп на Linux. Зимой докупил в него NVIDIA RTX 3060 на 12 ГБ. Чтобы и семейный бюджет не растрачивать, и попробовать - поиграться. Плюс была подходящая узкая модель для этого на тест. Да, в 12 ГБ влезает немного: одна ветка и мб пару камешков. Но! Можно выгрузить часть модели в оперативную память, такое легально. Но когда модель одной ногой стоит в видеопамяти, а другой - в оперативке, это очень медленно. Настолько, что я не уверен, что слово "скорость" вообще филологически применимо тут.
Я собрал проверочный корпус. Корпус - это так модно датасатинисты и иже называют данные, над которыми будут изголяться. Описал проверки первых гипотез. Запустил эксперимент на ночь. Через шесть часов узнал, что шесть часов назад она сделала поворот не туда) Раздробил эксперименты - всё равно час-полтора ожидания. А итераций нужно - тьма. Да и качество локальных моделей - пупупу.
В итоге родился третий, гибридный путь. Беру первые две-три страницы выписки и анонимизирую их максимально качественно - страниц мало, так что применить самые жирные и долгие проверки - реально (тем не менее отдельно этой частью еще буду много заниматься и писать о ней, пока это промежуточный вариант). Отправляю их облачной GPT Astra, потому что у неё офигенное зрение. Агент собирает мне сущность, которую я назвал «паспорт выписки»: где какие колонки, кто владелец, как отделить одну транзакцию от другой. А дальше тысячи страниц читает слабенькая локальная модель - строго по паспорту.
Выписки настолько разные, что задача абсолютно недетерминированная. Паспорт сводит её к хоть какой-то конкретике: описание того, что ждёт слабую модель на следующих тысячах страниц.
Лонгсторишорт:
Дорогая модель думает один раз и пишет инструкцию. Дешёвая - читает, пашет и греет комнату. В двух предложениях это звучит просто. А по факту - месяц отладки: выписки очень вариативный зверь. Показать есть что, тем более мой путь не закончен, я еще не релизил сканы.
Что за модели я пробовал, какое железо купил в итоге, чем хороша GPT Astra и как не сойти с ума при работе с большими массивами визуальных данных - разберу по эпизодам, подключиться можно с любого. Канал теперь и про инженерную кухню моих проектов - от Bank Checkup до домашней AI-инфраструктуры и мобильного приложения с криптографией. Что и зачем - в закрепе.
Паттерн перекладывается на любые сферы, где данные нельзя отдавать наружу: медицина, финансы, юрдокументы, внутренние регламенты. Рецепт у вас теперь есть.
Ваш Иван Черняков. Всё ещё инженер.
Post #428
632
- 👍 16
- 🔥 6
- ❤ 4
- ✍ 2
- 💔 2
- 🤝 1