/ Модель

Характеристики

Контекст
262 144 токена
Размер весов
17,5 ГБ
Лицензия
Apache 2.0
Архитектура
qwen3_vl · dense
Базовая модель
Qwen3-VL-8B-Instruct
Опубликована
1 мая 2026

HealthGPT-Pro-8B

Генерация изображенийИзображение, текст → изображение3 профессии

Медицинская мультимодальная модель на базе Qwen3-VL-8B для анализа медицинских текстов и изображений, включая 2D-снимки и 3D-объёмы.

355скачиваний за 30 дней3лайкавеса обновлены31 июл 2026

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Публичные оценки

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

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

HealthGPT-Pro-8B — медицинская мультимодальная модель для понимания и анализа медицинского текста и изображений, разработанная на базе Qwen3-VL-8B-Instruct. Это плотная модель семейства Qwen3-VL с архитектурой Qwen3VLForConditionalGeneration; в README описаны варианты обработки 2D-изображений и 3D-объёмов, подаваемых как последовательность кадров. Модель предназначена для ответов на медицинские вопросы, визуального анализа и задач по медицинским изображениям, включая КТ, МРТ, рентген, УЗИ, офтальмологические снимки, эндоскопию и гистопатологию.

Обучение описано как двухэтапное: выравнивание на 3 млн примеров и дообучение с инструкциями на 10 млн примеров; также сохраняется часть данных общего назначения для следования инструкциям. Карточка приводит результаты на медицинских текстовых и мультимодальных бенчмарках. Поддерживаемые в метаданных языки — английский и китайский; контекстное окно и число параметров этой версии явно не сообщены. Лицензия — Apache-2.0. Модель предназначена для исследований и не заменяет профессиональную клиническую оценку, диагностику или лечение.

Сценарии применения

  • ответы на вопросы по медицинским изображениям
  • анализ КТ и МРТ-снимков
  • интерпретация рентгеновских и ультразвуковых изображений
  • анализ снимков глазного дна и ОКТ
  • разбор эндоскопических и гистопатологических изображений
  • ответы на медицинские вопросы по тексту

Ограничения

Модель предназначена для исследовательского использования и не должна заменять профессиональное клиническое суждение, диагностику или лечение. Качество может различаться между медицинскими модальностями и задачами.

Для каких профессий подходит3

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

🧭 0. Overview

HealthGPT-Pro is a SoTA medical multimodal large language model (Med-MLLM) built on Qwen3-VL. It is designed for medical text, 2D medical image, and 3D medical volumes understanding and analysis, providing strong performance across broad medical text-based and vision-language tasks.

✨ Core features:

  • Multimodal input support: HealthGPT-Pro can process text, 2D images, and 3D volumetric data.
  • Efficient training: HealthGPT-Pro achieves SoTA performance through a two-stage training recipe, using 3M samples for alignment and 10M samples for SFT.
  • Instruction following: Unlike many medical Med-MLLMs tuned only on medical-domain data, HealthGPT-Pro preserves a substantial proportion of general data to maintain instruction-following ability.
  • Comprehensive modality coverage: (1) Computed Tomography (2) Digital Photography (3) Fundus Photography (4) Infrared Reflectance Imaging (5) Magnetic Resonance Imaging (6) Optical Coherence Tomography (7) Dermoscopy (8) Endoscopy (9) Microscopy (10) X-ray Imaging (11) Ultrasound Imaging (12) Histopathology (13) Colposcopy (14) Text.
  • Comprehensive task coverage: HealthGPT-Pro is trained on diverse medical and general tasks, with strong instruction-following behavior.

This model is intended for research use. It should not be used as a substitute for professional clinical judgment, diagnosis, or treatment.

📊 1. Performance Comparison

📝 Medical Text Benchmarks

ModelMMLU-MedMMLU-Pro-MedMMedBenchMedBulletsMedMCQAMedQAMedXpertQA-TextPubMedQASuperGPQA-MedicalAvg.
Qwen3-VL-4B74.350.760.546.456.060.512.675.629.651.8
Qwen3-VL-8B79.857.465.951.361.165.912.876.230.255.6
Lingshu-7B75.853.564.557.856.664.416.976.829.955.1
HealthGPT-14B80.263.463.239.863.466.211.368.025.753.5
HuatuoGPT-V-34B74.751.860.742.754.758.811.454.726.548.4
Hulu-Med-4B78.658.666.759.464.871.916.877.629.558.2
Hulu-Med-7B79.560.672.861.567.673.519.677.431.160.4
HealthGPT-Pro-4B80.458.471.658.064.471.516.278.431.458.9
HealthGPT-Pro-8B83.164.171.460.668.571.318.379.235.461.3
Lingshu-32B85.570.480.870.265.674.322.679.243.865.8
Hulu-Med-32B88.173.083.671.072.380.425.080.645.468.8
HealthGPT-Pro-27B93.273.785.080.774.984.835.080.947.272.8

🖼️ Medical Multimodal Benchmarks

ModelMMMU-MedVQA-RADSLAKEPathVQAMedXpertQA-MultimodalMedFrameQAOmniMedVQA-MiniPMC-VQAM3D-MCQCT-RATE-MCQAMOS-MM-MCQAvg.
Qwen3-VL-4B44.359.977.053.013.440.674.753.057.258.849.252.8
Qwen3-VL-8B46.563.480.258.318.746.473.055.659.561.651.255.9
Lingshu-7B47.366.781.961.025.552.682.457.264.168.362.760.9
HealthGPT-14B45.562.664.256.024.145.370.256.455.257.346.553.0
HuatuoGPT-V-34B50.160.368.347.721.549.669.756.650.154.948.752.5
Hulu-Med-4B45.872.681.759.724.654.275.153.176.070.169.162.0
Hulu-Med-7B50.577.285.864.228.357.477.757.380.476.270.566.0
HealthGPT-Pro-4B52.076.683.966.720.861.478.260.081.086.271.167.1
HealthGPT-Pro-8B54.778.485.070.725.363.680.261.181.686.072.269.0
Lingshu-32B62.168.989.985.830.460.383.565.264.874.365.968.3
Hulu-Med-32B42.872.991.690.035.760.981.264.379.382.875.070.6
HealthGPT-Pro-27B68.368.992.687.244.162.679.870.084.989.980.375.3

⚙️ 2. Environment Setup

The recommended environment is provided as follows:

# Create and activate a clean Python 3.12 environment
conda create -n healthgpt-pro python=3.12 -y
conda activate healthgpt-pro

# Install PyTorch with CUDA support
# If your CUDA version is lower than 12.8, install a matching PyTorch build instead (e.g., cu121 or cu118).
pip install torch==2.8.0 torchvision==0.23.0 torchaudio==2.8.0 --index-url https://download.pytorch.org/whl/cu128

# Install FlashAttention for faster attention
pip install flash-attn==2.8.3 --no-build-isolation --upgrade

# Install other dependencies
pip install transformers==4.57.1 accelerate==1.11.0 deepspeed==0.16.9 numpy==1.26.4 peft==0.17.1
pip install qwen-vl-utils pillow

🚀 3. Inference

🧩 Load Model and Processor

import numpy as np
import torch
from PIL import Image
from transformers import AutoProcessor, Qwen3VLForConditionalGeneration
from qwen_vl_utils import process_vision_info

model_id = "HealthGPT-Pro-8B"

model = Qwen3VLForConditionalGeneration.from_pretrained(
    model_id,
    dtype=torch.bfloat16,
    attn_implementation="flash_attention_2",
    device_map="auto",
)
processor = AutoProcessor.from_pretrained(model_id)

💬 Text-Only Inference

messages = [
    {
        "role": "user",
        "content": [
            {"type": "text", "text": "Explain the key symptoms and common risk factors of pneumonia."},
        ],
    }
]

inputs = processor.apply_chat_template(
    messages,
    tokenize=True,
    add_generation_prompt=True,
    return_dict=True,
    return_tensors="pt",
).to(model.device)

generated_ids = model.generate(**inputs, max_new_tokens=256)
generated_ids_trimmed = [
    out_ids[len(in_ids):] for in_ids, out_ids in zip(inputs.input_ids, generated_ids)
]
output_text = processor.batch_decode(
    generated_ids_trimmed,
    skip_special_tokens=True,
    clean_up_tokenization_spaces=False,
)
print(output_text[0])

🩻 Single-Image Inference

messages = [
    {
        "role": "user",
        "content": [
            {"type": "image", "image": "examples/chest_xray.png"},
            {"type": "text", "text": "Describe the main radiological findings in this image."},
        ],
    }
]

inputs = processor.apply_chat_template(
    messages,
    tokenize=True,
    add_generation_prompt=True,
    return_dict=True,
    return_tensors="pt",
).to(model.device)

generated_ids = model.generate(**inputs, max_new_tokens=256)
generated_ids_trimmed = [
    out_ids[len(in_ids):] for in_ids, out_ids in zip(inputs.input_ids, generated_ids)
]
output_text = processor.batch_decode(
    generated_ids_trimmed,
    skip_special_tokens=True,
    clean_up_tokenization_spaces=False,
)
print(output_text[0])

🖼️ Multi-Image Inference

messages = [
    {
        "role": "user",
        "content": [
            {"type": "image", "image": "examples/image_1.png"},
            {"type": "image", "image": "examples/image_2.png"},
            {"type": "text", "text": "Compare these two medical images and summarize the key differences."},
        ],
    }
]

inputs = processor.apply_chat_template(
    messages,
    tokenize=True,
    add_generation_prompt=True,
    return_dict=True,
    return_tensors="pt",
).to(model.device)

generated_ids = model.generate(**inputs, max_new_tokens=256)
generated_ids_trimmed = [
    out_ids[len(in_ids):] for in_ids, out_ids in zip(inputs.input_ids, generated_ids)
]
output_text = processor.batch_decode(
    generated_ids_trimmed,
    skip_special_tokens=True,
    clean_up_tokenization_spaces=False,
)
print(output_text[0])

🧠 3D Volume Inference

The repository inference path converts a 3D .npy volume into a sequence of 2D frames and sends it as a video-style input.

def ct_to_video(ct_path: str):
    ct_pixels = np.load(ct_path)
    ct_u8 = np.clip(ct_pixels * 255, 0, 255).astype(np.uint8)

    frames = []
    idx = np.linspace(1, len(ct_u8) - 2, 10, dtype=int)
    for i in idx:
        rgb = np.stack([ct_u8[i]] * 3, axis=-1)
        frames.append(Image.fromarray(rgb, mode="RGB"))
    return frames

volume_frames = ct_to_video("examples/ct_volume.npy")
messages = [
    {
        "role": "user",
        "content": [
            {"type": "video", "video": volume_frames, "sample_fps": 2.0},
            {"type": "text", "text": "Analyze this CT volume and summarize the main findings."},
        ],
    }
]

text = processor.apply_chat_template(
    messages,
    tokenize=False,
    add_generation_prompt=True,
)
images, videos, video_kwargs = process_vision_info(
    messages,
    image_patch_size=16,
    return_video_kwargs=True,
    return_video_metadata=True,
)
if videos is not None:
    videos, video_metadatas = zip(*videos)
    videos, video_metadatas = list(videos), list(video_metadatas)
else:
    video_metadatas = None

inputs = processor(
    text=text,
    images=images,
    videos=videos,
    video_metadata=video_metadatas,
    return_tensors="pt",
    do_resize=False,
    **video_kwargs,
).to(model.device)

generated_ids = model.generate(**inputs, max_new_tokens=256)
generated_ids_trimmed = [
    out_ids[len(in_ids):] for in_ids, out_ids in zip(inputs.input_ids, generated_ids)
]
output_text = processor.batch_decode(
    generated_ids_trimmed,
    skip_special_tokens=True,
    clean_up_tokenization_spaces=False,
)
print(output_text[0])

📚 4. Citation

If you find this model useful for your research, please cite:

@misc{lin2025healthgptmedicallargevisionlanguage,
      title={HealthGPT: A Medical Large Vision-Language Model for Unifying Comprehension and Generation via Heterogeneous Knowledge Adaptation}, 
      author={Tianwei Lin and Wenqiao Zhang and Sijing Li and Yuqian Yuan and Binhe Yu and Haoyuan Li and Wanggui He and Hao Jiang and Mengze Li and Xiaohui Song and Siliang Tang and Jun Xiao and Hui Lin and Yueting Zhuang and Beng Chin Ooi},
      year={2025},
      eprint={2502.09838},
      archivePrefix={arXiv},
      primaryClass={cs.CV},
      url={https://arxiv.org/abs/2502.09838}, 
}

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм

Нельзя запустить

Задача «image-text-to-image» пока не поддерживается рантаймом.

Класс архитектуры
Qwen3VLForConditionalGeneration
Ревизия весов
3d6a732

0 моделей