Привет, я ваша medical records, и я устала ждать
Врачи выписывают направления, лаборатории шлют результаты, страховые копаются в историях болезней. И всё это — тонны текста. Имена, диагнозы, номера полисов, адреса. Кто-то должен это прочитать, найти сущности и, если надо, вырезать личные данные. Обычно эту работу делают специализированные NER-модели (Named Entity Recognition). Но есть проблема: чтобы прогнать больничную выписку через хорошую медицинскую NER-модель, вам нужен GPU. Или терпение. Много терпения.
И вот 24 июня 2026 года вышел репозиторий, который меняет правила игры. Сборка из 650+ медицинских NER и деидентификационных (de-id) моделей, упакованных для MLX — фреймворка Apple для машинного обучения на их кремнии. Все модели под лицензией Apache-2.0. Никакой аренды облака. Никаких сюрпризов с приватностью. Просто скачал и запустил на своём Mac. А главное — скорость: на чипах M3 Max инференс летит в 30–40 раз быстрее, чем на том же процессоре с обычным PyTorch.
Что под капотом: 650+ моделей — это не просто число
Когда я впервые увидел цифру «650», подумал: «Очередное скопление мусора, где 90% — переименованные копии одной модели». Но нет. Авторы реально собрали модели разного размера, архитектуры и специализации:
- Размеры: от крошечных BioBERT-mini (90M параметров) до full-size PubMedBERT-large (340M) и даже гибридных конфигураций на базе DeBERTa-v3.
- Типы сущностей: классический NER (персоны, организации, локации), медицинский NER (диагнозы, процедуры, лекарства, дозировки), деидентификация (PHI: имена, номера соцстраха, даты рождения, адреса).
- Языки: английский (основной), но есть модели для французского, испанского, немецкого и даже русского — на основе RuBERT от DeepPavlov, дообученного на клинических текстах.
- Домены: радиология, патология, клинические заметки, выписки, результаты лабораторий, EMR (Electronic Medical Records).
Но внимание: модели автоматически конвертированы в формат MLX с помощью утилиты mlx-convert. Для некоторых старых чекпоинтов (например, BioBERT, натренированного на PyTorch 1.x) конвертация могла дать небольшой дроп в точности (~1-2%). Авторы обещают выложить оригинальные чекпоинты и скрипты для ручной проверки. Пока что доверяйте, но проверяйте на своих данных.
30–40x ускорения: как это работает и где подвох
Мы привыкли, что Apple Silicon хорош для инференса LLM (я писал об этом в обзоре Unsloth для MLX), но для небольших энкодеров вроде BERT — это вообще rocket fuel. MLX использует Metal Performance Shaders напрямую, минуя прослойки. PyTorch-CPU же вынужден считать матричные умножения на обычных ядрах, без AMX-инструкций (да, в M3 есть AMX, но PyTorch их не трогает). Результат — на M3 Max (16-core GPU, 64 ГБ unified memory) одна модель средней размерности (PubMedBERT-large, 340M) обрабатывает 512 токенов за 3.2 мс. Тот же PyTorch на CPU — 112 мс. Разница в 35 раз.
| Метод | Время на батч 16 (512 токенов) | Пропускная способность |
|---|---|---|
| PyTorch-CPU (M3 Max, 16 ядер) | 1.79 с | ~9 примеров/с |
| MLX (M3 Max, GPU) | 0.051 с | ~313 примеров/с |
| PyTorch-CUDA (A100 80GB) | 0.022 с | ~727 примеров/с |
Цифры говорят сами за себя. Macbook догоняет старый A100? Нет, не догоняет. Но разрыв — всего в 2.3 раза, при том, что вы сидите за ноутбуком, а не арендуете облачную железку. Для медицинской NER (обычно это пакетная обработка сотен документов в день) такого ускорения хватает за глаза.
Ещё один приятный момент: MLX использует единую память, поэтому копирования данных между CPU и GPU нет. Для пайплайнов деидентификации, где нужно прогнать текст через 3–4 модели последовательно (сначала NER, потом классификатор категорий), это даёт дополнительный бонус к задержке.
А что, если я хочу не просто запустить, а дообучить?
Тут есть нюанс. Репозиторий — это прежде всего ready-to-inference. Веса уже сконвертированы, можно брать и использовать. Если же вы хотите дообучить одну из этих моделей на своих данных (например, добавить новые типы сущностей), потребуется перегонять чекпоинт обратно в PyTorch, дообучать, а потом снова конвертировать. Процесс описан в ридми, но он не автоматизирован.
Впрочем, если вы нацелены именно на fine-tuning, стоит присмотреться к пошаговому гайду по обучению LLM на Mac — там как раз детально расписано, как работать с MLX и PyTorch одновременно. А для кастомных слоёв, возможно, пригодится техника Layer Surgery — она изначально тестировалась на энкодерах и отлично подходит для дообучения медицинских BERT-подобных моделей.
Кому это нужно и зачем
Давайте честно: если вы читаете эти строки, скорее всего, вы уже в теме медицинского NLP. Но я всё равно перечислю сценарии, где эта сборка — просто находка:
- Исследователи в области биоинформатики. Можно быстро протестировать десятки моделей на своих корпусах, не заказывая GPU-инстансы. 30-кратное ускорение означает, что вместо трёх дней на CPU вы получите результаты за пару часов на MacBook.
- Разработчики медицинских EMR-систем. Нужно внедрить деидентификацию на стороне клиента? Пожалуйста. Всё работает локально, данные не уходят в облако — это критично для HIPAA/GDPR.
- Стартапы в health-tech. Пока конкуренты возятся с выгрузками на AWS, вы уже вставили готовый пайплайн из трёх моделей в демку за вечер.
- Врачи, которые устали от бюрократии. Да, можно написать простой скрипт, который вытаскивает из выписки код диагноза по МКБ-10 и автоматом заполняет форму. И не нужно ждать администратора.
Как попробовать самому за 5 минут
Предполагаю, у вас уже стоит Python 3.11+ и homebrew. Если нет — поставьте. Дальше:
git clone https://github.com/bio-deid-mlx/biomed-ner-models
cd biomed-ner-models
pip install -r requirements.txt
python run_ner.py --model pubmedbert_base_i2b2_2014 --text "Patient John Smith, born 05/12/1980, diagnosed with diabetes..."
На выходе — JSON с сущностями, их типами и позициями. Если хотите деидентификацию, добавьте флаг --deid: модель заменит PHI на плейсхолдеры. Всё.
Кстати, в репозитории уже есть предварительно сконвертированные модели, которые весят примерно столько же, сколько оригиналы PyTorch (потому что safetensors — тот же бинарник). Для PubMedBERT-base — ~440 МБ. Для всех 650 моделей — около 280 ГБ. Но вы вряд ли будете качать всё сразу. Есть индексный файл, где можно выбрать только нужные.
Подводные камни (спойлер: они есть)
Первое: не все модели идеально портированы. Я наткнулся на несколько, где при конвертации слетели имена слоёв, и пришлось вручную править конфиг. Разработчики обещают поправить, но пока проверяйте на маленьком наборе.
Второе: MLX 2.9 (последний на июнь 2026) всё ещё не поддерживает некоторые редкие операторы (например, F.gumbel_softmax), поэтому модели с Gumbel-вниманием не завелись. Их меньшинство, но имейте в виду.
Третье: ускорение в 30-40x верно для размера батча 16-32. Если вы будете гонять по одному документу — разница будет меньше, около 10-15x, но всё равно впечатляюще.
Сравнение с альтернативами
До этого момента, чтобы запустить 650+ медицинских NER-моделей на Mac, вам пришлось бы:
- Качать каждую модель с Hugging Face (отдельный репозиторий для каждой, разрозненные лицензии).
- Конвертировать в ONNX или CoreML (часто с потерей точности из-за неполной поддержки opset).
- Писать велосипед для загрузки safetensors через
mlx.core.load.
Альтернативы в 2026 году есть:
- spaCy + transformers — работает, но медленно на CPU. На GPU через PyTorch — да, но Mac с GPU не дружит.
- Hugging Face Inference API — облачно, дорого, приватность под вопросом.
- CoreML — официальный конвертер, но он часто падает на сложных моделях (DeBERTa, длинные контексты). И нет готовой подборки медицинских моделей.
Таким образом, эта сборка — первое по-настоящему готовое решение для медицинской NER на Mac. Под лицензией Apache-2.0, что значит можно использовать в коммерческих продуктах без ограничений.
А если посмотреть в будущее?
Лично меня радует не столько скорость (хотя 30x — это мощно), сколько сам факт: open-source сообщество повернулось лицом к медицинскому NLP на потребительском железе. Раньше для работы с клиническими данными ты был привязан к больничному серверу или дорогому дата-центру. Теперь любой врач-энтузиаст может сесть за MacBook Air M4 (который уже точно есть на рынке) и за вечер построить свой прототип.
Следующий логичный шаг — появление LoRA-адаптеров для этих моделей, сконвертированных сразу в MLX. Техника, которую я описывал в материале про Unsloth для MLX, уже работает, и я не удивлюсь, если осенью 2026 выйдет обновление с готовыми адаптерами для био-моделей. Тогда дообучение на своей базе станет делом пяти минут.
А пока — открывайте терминал и пробуйте. Ваша MacBook от этого не взорвется. Ну, почти.