Запуск 650+ медицинских NER/de-id моделей на Mac через MLX: ускорение 30-40x | AiManual
AiManual Logo Ai / Manual.
24 Июн 2026 Инструмент

650+ медицинских NER-моделей на Mac: как MLX разгоняет PyTorch в 30 раз

Открытый репозиторий с 650+ медицинскими NER и деидентификационными моделями под Apache-2.0. Запускаем на Mac через MLX — ускорение до 40x против PyTorch-CPU. Б

Реклама
cliv2

Привет, я ваша 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.

💡
Весь набор моделей лежит в открытом доступе на GitHub в рамках проекта bio-deid-mlx. К каждой модели прилагается конфиг с инструкцией, какие сущности она ищет (имена, даты, локации, коды диагнозов, лекарства). Авторы уже загрузили предобученные веса, конвертированные в формат safetensors, готовые для MLX 2.9 (последняя стабильная версия на текущую дату).

Что под капотом: 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 от этого не взорвется. Ну, почти.

Подписаться на канал