/ Модель

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

Контекст
4 096 токенов
Параметры
6,6 млрд
Размер весов
27,9 ГБ
Лицензия
Apache 2.0
Архитектура
lamed_llama · dense
Опубликована
27 апр 2024

M3D-LaMed-Llama-2-7B

Генерация текстаТекст → текст3 профессии

Мультимодальная модель семейства M3D-LaMed для генерации медицинских текстов и анализа трёхмерных медицинских изображений.

351скачиваний за 30 дней3лайкавеса обновлены11 июн 2024

Бенчмарки

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

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

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

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

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

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

GoodBaiBai88/M3D-LaMed-Llama-2-7B — мультимодальная модель для анализа трёхмерных медицинских изображений из проекта M3D. Семейство M3D-LaMed использует предварительно обученный визуальный энкодер M3D-CLIP и языковую модель Llama 2; этот вариант содержит 6,6 млрд параметров, поддерживает контекст до 4096 токенов и опубликован в формате safetensors.

Модель предназначена для медицинского анализа 3D-изображений: генерации отчётов, ответов на визуальные вопросы, поиска по парам изображение–текст, позиционирования и сегментации. README сообщает, что в прежней версии были проблемы с сегментацией, которые разработчики планировали исправить в следующем выпуске, поэтому результаты этой задачи могут быть ненадёжны. В метаданных указан pipeline text-generation, тогда как описание проекта подтверждает мультимодальный медицинский сценарий. Модель распространяется по лицензии Apache-2.0.

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

  • генерация отчёта по 3D-медицинскому изображению
  • ответы на вопросы о содержимом медицинского скана
  • поиск соответствий между медицинскими изображениями и текстами
  • позиционирование областей на медицинском изображении
  • сегментация структур на 3D-медицинских изображениях

Ограничения

README сообщает о проблемах прежней версии с задачей сегментации и о планах выпустить исправление; надёжность сегментации этой версии может быть ограничена. Описание не приводит языки обучения или оценки.

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

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

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

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

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

Открыть на Hugging Face

M3D: Advancing 3D Medical Image Analysis with Multi-Modal Large Language Models

Paper | Data | Code

M3D is the pioneering and comprehensive series of work on the multi-modal large language model for 3D medical analysis, including:

  • M3D-Data: the largest-scale open-source 3D medical dataset, consists of 120K image-text pairs and 662K instruction-response pairs;
  • M3D-LaMed: the versatile multi-modal models with M3D-CLIP pretrained vision encoder, which are capable of tasks such as image-text retrieval, report generation, visual question answering, positioning and segmentation;
  • M3D-Bench: the most comprehensive automatic evaluation benchmark covers 8 tasks.

Notifications

  • We found that the previous GoodBaiBai88/M3D-LaMed-Llama-2-7B model had problems in the segmentation task. We have fixed this problem and will re-release the new model in the next few days.

Quickstart

Here, we can easily use our model based on Hugging Face.

import numpy as np
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
import simple_slice_viewer as ssv
import SimpleITK as sikt

device = torch.device('cuda') # 'cpu', 'cuda'
dtype = torch.bfloat16 # or bfloat16, float16, float32

model_name_or_path = 'GoodBaiBai88/M3D-LaMed-Llama-2-7B'
proj_out_num = 256

# Prepare your 3D medical image:
# 1. The image shape needs to be processed as 1*32*256*256, consider resize and other methods.
# 2. The image needs to be normalized to 0-1, consider Min-Max Normalization.
# 3. The image format needs to be converted to .npy 
# 4. Although we did not train on 2D images, in theory, the 2D image can be interpolated to the shape of 1*32*256*256 for input.
image_path = "./Data/data/examples/example_01.npy"

model = AutoModelForCausalLM.from_pretrained(
    model_name_or_path,
    torch_dtype=dtype,
    device_map='auto',
    trust_remote_code=True)
tokenizer = AutoTokenizer.from_pretrained(
    model_name_or_path,
    model_max_length=512,
    padding_side="right",
    use_fast=False,
    trust_remote_code=True
)

model = model.to(device=device)

# question = "Can you provide a caption consists of findings for this medical image?"
question = "What is liver in this image? Please output the segmentation mask."
# question = "What is liver in this image? Please output the box."

image_tokens = "<im_patch>" * proj_out_num
input_txt = image_tokens + question
input_id = tokenizer(input_txt, return_tensors="pt")['input_ids'].to(device=device)

image_np = np.load(image_path)
image_pt = torch.from_numpy(image_np).unsqueeze(0).to(dtype=dtype, device=device)

# generation = model.generate(image_pt, input_id, max_new_tokens=256, do_sample=True, top_p=0.9, temperature=1.0)
generation, seg_logit = model.generate(image_pt, input_id, seg_enable=True, max_new_tokens=256, do_sample=True, top_p=0.9, temperature=1.0)

generated_texts = tokenizer.batch_decode(generation, skip_special_tokens=True)
seg_mask = (torch.sigmoid(seg_logit) > 0.5) * 1.0

print('question', question)
print('generated_texts', generated_texts[0])

image = sikt.GetImageFromArray(image_np)
ssv.display(image)
seg = sikt.GetImageFromArray(seg_mask.cpu().numpy()[0])
ssv.display(seg)

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

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

GPU в ailist

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

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

Модели нужен код из репозитория; автор пока не в списке доверенных организаций.

Класс архитектуры
LamedLlamaForCausalLM
Ревизия весов
87f6f56

0 моделей