От 7B к 27B: что изменилось в новой мультимодальной версии
Помните те первые, почти игрушечные версии MedGemma на 2 и 7 миллиардов параметров? Они были как учебник по анатомии для первокурсника – базово, понятно, но до клинической практики далеко. MedGemma 27B Multimodal, анонсированная в конце 2025 года, это уже полноценный цифровой ординатор. Модель не просто выросла в размерах – она научилась смотреть. И понимать то, что видит.
На 12.04.2026 MedGemma 27B Multimodal – самая большая открытая модель в семействе. Она объединяет текстовый движок на 27B параметров с доработанной версией архитектуры MedSigLIP для анализа медицинских изображений. Поддерживает контекст до 128k токенов.
Основная фишка – настоящая мультимодальность. Не просто «загрузи картинку и получи описание», а сложные рассуждения на стыке данных. Модель может, например, прочитать историю болезни, изучить серию рентгеновских снимков и ответить на вопрос: «Согласуются ли рентгенологические находки с предполагаемым диагнозом хронического бронхита?».
Железо, софт и первый запуск
Тут начинается самое интересное (и дорогое). 27 миллиардов параметров – это не шутка. Для полноценной работы в FP16 модели нужно около 54 ГБ VRAM. Реальность такова, что без квантования не обойтись.
1 Подготовка окружения: ставим всё с нуля
Забудьте про старые трансформеры. Для MedGemma 27B нужна последняя версия библиотек, оптимизированная под Flash Attention 3 и новое API Google.
# Создаем чистое окружение (Python 3.11+ обязательно)
python3.11 -m venv medgemma_env
source medgemma_env/bin/activate
# Ставим актуальные на апрель 2026 года пакеты
pip install torch==2.4.0+cu121 --index-url https://download.pytorch.org/whl/cu121
pip install "transformers==5.2.0" "accelerate==0.32.0" "bitsandbytes==0.43.0"
pip install pillow pillow-heif # для работы с DICOM и HEIC2 Загрузка модели с квантованием «на лету»
Тянуть 50+ гигабайт весов – удовольствие сомнительное. Гораздо умнее использовать загрузку с Hugging Face с автоматическим квантованием через bitsandbytes.
from transformers import AutoProcessor, AutoModelForVision2Seq
import torch
model_id = "google/medgemma-27b-multimodal"
# Критически важные настройки для экономии памяти
torch_dtype = torch.bfloat16 if torch.cuda.get_device_properties(0).total_memory >= 24e9 else torch.float16
model = AutoModelForVision2Seq.from_pretrained(
model_id,
torch_dtype=torch_dtype,
device_map="auto",
load_in_4bit=True, # Активируем 4-битное квантование
bnb_4bit_compute_dtype=torch_dtype,
bnb_4bit_use_double_quant=True,
trust_remote_code=True # Требуется для кастомных слоев MedSigLIP
)
processor = AutoProcessor.from_pretrained(model_id, trust_remote_code=True)Если скрипт упал с ошибкой «CUDA out of memory», не паникуйте. Уменьшайте разрешение загружаемых изображений через параметр `size` в процессоре или переходите на более агрессивное квантование (`load_in_4bit=True` меняем на `load_in_8bit=False` и используем `BitsAndBytesConfig` для 3-битного). Да, будет менее точно. Такие компромиссы.
Практика: три реальных кейса из больничной жизни
Кейс 1. Сводный отчет из разрозненных EHR
Ситуация: у вас есть текст выписки из стационара, PDF-файл с лабораторными анализами и сканы ЭКГ за последний год. Задача – одной командой получить структурированную хронологию событий.
# Грузим и обрабатываем мультимодальные данные
medical_text = open("выписка.txt", "r", encoding="utf-8").read()
ecg_image = Image.open("ecg_2026_03.png")
lab_pdf = convert_pdf_to_images("lab_results.pdf")[0] # первая страница PDF
# Формируем промпт для модели
prompt = """Проанализируй предоставленные медицинские данные: историю болезни, результаты лабораторных анализов и электрокардиограмму.
Создай сводную таблицу в формате JSON со следующими полями:
1. Основные диагнозы с датами установки.
2. Критичные отклонения в анализах (значение, норма, интерпретация).
3. Заключение по динамике ЭКГ.
4. Список рекомендованных контрольных обследований.
"""
inputs = processor(
text=prompt,
images=[ecg_image, lab_pdf],
medical_context=medical_text,
return_tensors="pt"
).to(model.device)
# Генерация ответа с медицинской конкретикой
output = model.generate(
**inputs,
max_new_tokens=1024,
temperature=0.1, # Низкая температура для точности фактов
do_sample=False
)
report = processor.decode(output[0], skip_special_tokens=True)
print(report)Модель вернет готовый JSON, который можно сразу загрузить в систему учета. Главное – проверить цифры. MedGemma иногда «додумывает» референсные значения лабораторий, если они нечётко видны на скане.
Кейс 2. Второе мнение по рентгенограмме грудной клетки
Загружаем DICOM-файл. Модель, в отличие от чисто визуальных аналогов, может учитывать текстовые анамнестические данные.
from PIL import Image
import pydicom
ds = pydicom.dcmread("chest_xray.dcm")
xray_image = Image.fromarray(ds.pixel_array)
prompt = """Пациент 68 лет, курит 40 лет. Поступил с жалобами на нарастающую одышку и продуктивный кашель.
Опиши рентгенологическую картину. Обрати особое внимание на признаки, характерные для ХОБЛ и возможной пневмонии.
Сформулируй заключение для лечащего врача."""
inputs = processor(text=prompt, images=xray_image, return_tensors="pt").to(model.device)
with torch.no_grad():
output = model.generate(**inputs, max_new_tokens=512)
finding = processor.decode(output[0], skip_special_tokens=True)
print(finding)Важно! MedGemma 27B Multimodal обучена на аннотированных данных и не является диагностическим устройством. Её заключение – это предположение, основанное на статистических паттернах. Всегда требуется верификация сертифицированным специалистом.
С кем конкурирует 27B-монстр в 2026 году?
| Модель | Размер | Мультимодальность | Главный козырь | Слабое место |
|---|---|---|---|---|
| MedGemma 27B Multimodal | 27B | Текст + изображения (DICOM, рентген) | Глубокие медицинские онтологии, понимание контекста EHR | Требует мощного GPU, медленная инференс |
| Baichuan-M3-235B | 235B | Только текст | Невероятная точность в диагностических цепочках рассуждений | Только для облака или кластера, нет зрения |
| Gemini 3.5 Pro (Medical Tuning) | ~100B+ | Текст, изображения, аудио | API, простота интеграции, высокая скорость | Данные уходят в Google, дорого при больших объемах |
| MRI-GPT (локальный стек) | 7B-13B | Текст + МРТ (узкая специализация) | Работает на среднем железе, открытый код и данные | Только нейровизуализация, нельзя обобщать |
Выбор простой. Если нужна максимальная точность по тексту и есть инфраструктура – Baichuan-M3. Если задача – анализ снимков в условиях строгой конфиденциальности (та самая проблема, с которой началась история MedGemma), то 27B Multimodal вне конкуренции. Gemini и аналоги – для тех, кому важнее скорость и нет ресурсов на локальное развертывание.
Кому затевать это всё в 2026 году?
MedGemma 27B – инструмент не для всех. Он для тех, кто уже пережил боль установки первых версий и хочет большего.
- Исследовательские группы в медицинских вузах. Для анализа анонимизированных наборов данных (EHR, снимки) без отправки в сторонние API. Идеально для подготовки публикаций.
- Разработчики медицинских информационных систем (МИС). Для встраивания функций автоматического составления предварительных заключений и поиска противоречий в историях болезни. Модель работает за фаерволом.
- Врачи-исследователи в частных клиниках. Для аудита качества ведения записей и быстрой предварительной сортировки исследований. Но только как помощник, напоминаю.
Если же вы просто хотите поиграться с медицинским ИИ, начните с малого – с той самой первой MedGemma на 7B. Её и на RTX 4060 запустить можно. А 27B – это уже серьезная работа, требующая или RTX 6000 Ada, или двух карт, или терпения к долгой генерации на CPU с RAM-диском.
Прогноз? К концу 2026 года появятся эффективные 6-битные методы квантования специально для мультимодальных моделей. И тогда MedGemma 27B поселится на серверах районных поликлиник. Пока же это мощный, но требовательный инструмент для пионеров.