01.08.2027 273 материалов

Маленькая модель обыграла гигантский ИИ в обезличивании медицинских текстов: в 40 раз быстрее, на обычном процессоре

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

Маленькая модель обыграла гигантский ИИ в обезличивании медицинских текстов: в 40 раз быстрее, на обычном процессоре

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

Проблема: куда отправлять данные, которые нельзя показывать?

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

Локальные утилиты, работающие целиком на вашем компьютере, данных не уводят, но, как правило, справляются только с простыми, шаблонными деталями вроде номеров телефонов или почтовых адресов. Сложные, контекстные данные — например, фраза «сестра пациента работает в пекарне на улице Вязов» — для них непреодолимая преграда.

Инженер Вадим Альбаров предложил свой вариант решения — утилиту localscrub. Её принцип — отказаться от этого компромисса. Она работает полностью локально, на вашем оборудовании, и использует каскад из двух этапов. Первый — быстрые правила и простая модель для извлечения структурированных данных. Второй — небольшая языковая модель (LLM), которая анализирует оставшиеся, неоднозначные фрагменты.

Как это работает: каскад вместо одного гиганта

Идея localscrub проста и элегантна. На первом этапе за дело берутся надёжные, быстрые правила (регулярные выражения) и предобученная модель для распознавания именованных сущностей (NER). Это такие «поисковые роботы», которые с высокой точностью находят и вырезают номера телефонов, email, даты, а также имена и географические названия.

То, что осталось необработанным, передаётся на второй этап — в локальную LLM, запущенную через платформу Ollama. Весь запрос происходит внутри машины, в сеть ничего не уходит. Ключевой хитрости конструктора был в том, что он попросил модель не искать символы в тексте (LLM плохо считают), а просто скопировать нужные фрагменты и указать их тип (например, «имя»). Скопированные куски потом находятся в исходном тексте обычным поиском.

Это решило сразу несколько проблем: повторные упоминания обрабатываются автоматически, а если модель «галлюцинирует» и выдаёт несуществующий фрагмент, поиск просто его не находит и ничего не ломает.

Большое испытание: маленький чемпион

После создания системы автор провёл серьёзные бенчмарки. И здесь случилось самое интересное. Для извлечения имён, мест и организаций он попробовал не только общую LLM с 14 миллиардами параметров, но и крошечную, специализированную модельку obi/deid_roberta_i2b2 всего на 125 миллионов параметров. Она была обучена именно на задачах обезличивания текстов.

Результат на синтетических данных был поразительным. Специализированная модель показала качество, сравнимое с гигантской LLM, но работала... в 40 раз быстрее. И для этого ей нужен был только центральный процессор, тогда как 14-миллиардная модель требовала видеокарту.

Автор подчёркивает: сам по себе факт, что узкоспециализированная модель обыгрывает общую, не удивителен. Удивителен масштаб разницы — равная эффективность при сорокакратном выигрыше в скорости и отсутствии необходимости в GPU. Это меняет представление о «стандартном рецепте» для подобных задач, которым часто является «запустить большую LLM».

Настоящие тексты и настоящие результаты

Шаблонные синтетические данные — это слишком просто. Поэтому автор протестировал систему на реальных медицинских транскриптах, искусственно «замешав» в них сконструированные персональные данные.

Здесь картина стала ещё интереснее:

  1. Правила в одиночку (базовый уровень Presidio) справились с ~75% данных, но имели низкую точность — часто «вырезали» полезный контекст.
  2. Правила + NER (маленькая специализированная модель) показали фантастическую полноту — 99.9% вредоносных данных были убраны. При этом система работала на CPU с приемлемой задержкой.
  3. Правила + NER + большая LLM также дали 99.9%, но потребовали GPU и были заметно медленнее.

Выяснилось, что модели дополняют друг друга. Там, где NER могла пропустить часть адреса, LLM подхватывала. Но LLM, в свою очередь, иногда «обрезала» адреса, и тогда NER выручала. Однако использование LLM немного снизило точность (меньше ложных срабатываний).

Главный урок: правильный инструмент для правильной задачи

Этот проект — отличная иллюстрация важного в инженерии принципа: не существует серебряной пули.

  • Если ваш текст хорошо структурирован и богат стандартными идентификаторами (отчёты, формы), то маленькой, специализированной NER-модели на CPU может быть достаточно. Она будет быстрой, дешёвой и точной.
  • Если текст ближе к живой речи, с нестандартными упоминаниями и сложным контекстом, то LLM (большая или дообученная) на втором этапе действительно нужна, чтобы повысить полноту.

Автор также добился успеха в миниатюризации LLM. Он взял модельку на 1.7 миллиарда параметров и за 17 минут на своём ноутбуке дообучил её на синтетических данных. Дообученная моделька, хоть и уступала 14-миллиардной в качестве, смогла уверенно решать поставленную задачу, работая при этом в разы быстрее и полностью локально.

Ограничения и трезвый взгляд

Автор честно указывает на «пятна» своей работы:

  1. Основные тесты проводились на синтетических данных. Реальная проверка на эталонном медицинском корпусе (i2b2) ещё впереди.
  2. Точность на реальных текстах оценивалась нижней границей, так как часть найденных моделью данных могла быть естественной частью текста, а не вредоносной вставкой.
  3. Система не сертифицирована по стандарту HIPAA. Её задача — максимально снизить риск, но окончательное решение и ответственность остаётся за человеком.

Зачем это обычному пользователю?

Хотя утилита написана для медицинских данных, сама философия и подход актуальны для всех нас.

  1. Контроль над данными. Мы привыкли, что для анализа фото, текста или документов нужно отправлять их в облако. localscrub напоминает, что многие полезные задачи можно решить локально, не жертвуя приватностью.
  2. Эффективность. Проект показывает, что не всегда нужно гнаться за самыми гигантскими моделями. Часто компактная, «заточенная» под задачу модель на CPU даст результат не хуже, чем монстр на GPU.
  3. Прозрачность. Автор выложил весь код, опубликовал инструменты для воспроизведения экспериментов и приглашает всех «проверить его математику». Это пример открытой и проверяемой разработки.

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