YandexGPT-5-Lite-Instruct

Версия YandexGPT-5-Lite-Instruct, дообученная с помощью LoRA адаптера специально для генерации медицинских текстовых описаний глазного дна в рамках проекта системы помощи офтальмологам EYAS.

Задавайте вопросы в discussions.

Общее описание

YandexGPT-5-Lite — instruct-версия большой языковой модели на 8B параметров с длиной контекста 32k токенов. Базовая версия модели обучена на оригинальных весах YandexGPT 5 Lite Pretrain, без использования сторонних моделей. Алайнмент модели выполнен с использованием техник SFT и RLHF.

В рамках проекта EYAS была реализована дополнительная настройка модели методом LoRA (Low-Rank Adaptation) с целью улучшения качества генерации медицинских описаний глазного дна, повышения точности передачи параметров и естественности языка.

Конфигурация дообучения LoRA

Модель дообучалась с использованием метода LoRA, который заключается в добавлении адаптеров (небольших низкоранговых матриц) для модификации исходных весов без полного пересчета всех параметров модели.

  • Размерность исходной матрицы весов слоя (d): 4096

  • Ранг матриц адаптера (r): 8

  • Дообучение слоёв — query, value

  • Общее количество обученных параметров: ~4.19 млн (0,05% от всех параметров модели)

  • Обучение происходило на 150 синтетических текстах, созданных с использованием проприетарной модели ChatGPT–4.5.

  • Используемый инструмент: torchtune

  • Аппаратные ресурсы: GPU с 48 Гб видеопамяти на платформе RunPod

Как использовать

Модель можно запустить через HF Transformers:

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig


MODEL_NAME = "mastavtsev/YandexGPT-5-lite-LoRA-OphtReportsGen"

tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)

model = AutoModelForCausalLM.from_pretrained(
    MODEL_NAME,
    torch_dtype=torch.bfloat16,
    device_map="auto"
)
model.eval()

generation_config = GenerationConfig.from_pretrained(MODEL_NAME)
generation_config.max_new_tokens = 1536
generation_config.pad_token_id = 2

content = """
**Задача:**
На основе предоставленного JSON-документа с параметрами глазного дна составь его развёрнутое текстовое описание. Cтремись к естественной, живой и грамотной формулировке текста.

**Формат:**
- Описание должно быть текстовым, структурированным и последовательным.
- Допускается совместное описание артерий и вен, если у них одинаковые параметры. Если параметры разные, их необходимо описывать отдельно.
- У тебя должно получиться {{ n }} абзаца.
- Если в JSON-документе не указаны показатели Э/Д и А/В индекс, то не указывай их в описании.
- Если в JSON-документе не указаны патологии, то не указывай их в описании.
- Не надо раскрывать аббревиатуру ДЗН, всегда пиши просто ДЗН.
- При описании ДЗН в отдельном предложении опиши цвет, монотонность, размер, форму и границы. В отдельном предложении также опиши экскавацию.

**Данные:**
JSON-документ:
{
    "ДЗН": {
        "Цвет": "Бледно-Розовый",
        "Монотонность": "Наблюдается",
        "Размер": "Меньше нормы",
        "Форма": "Не правильная",
        "Границы": "Размытые",
        "Экскавация": {
            "Размер": "Меньше нормы",
            "Сектор": "В центре",
        },
        "Э/Д": 0.4,
        "Сосудистый пучок": "В центре",
        "Патология ДЗН": "К наружи от экскавации темно-серый очаг с четкими границами 0.2 ДД.", 
    },
    "Сосуды": {
        "Артерии": {
            "Ход": "Нормальный",
            "Извитость": "Нормальная",
            "Бифуркация": "Нормальная",
            "Калибр": "Нормальный",
        },
        "Вены": {
            "Ход": "Нормальный",
            "Извитость": "Нормальная",
            "Бифуркация": "Нормальная",
            "Калибр": "Нормальный",
        },
        "А/В индекс": "2:3",
        "Патология Сосудов": "По ходу сосудов единичные шарообразные утолщения стенок сосудов, окружённое очагами красного цвета с четкими границами (кровоизлияния)",
    },
    "Макула": {
        "Макулярный рефлекс": "Нормальный",
        "Фовеальный рефлекс": "Нормальный",
        "Патология Макулы": "Дополнительно присутствуют кольцевидные рефлексы (кистовидный отёк).",
    },
    "Переферия": {
        "Патология Переферии": "По всему глазному дну множественные очаги красного цвета (кровоизлияния).",
    }
}
"""

prompt = tokenizer.apply_chat_template([{
    "role": "user",
    "content": content
}], tokenize=False, add_generation_prompt=True)

data = tokenizer(prompt, return_tensors="pt", add_special_tokens=False)
data = {k: v.to(model.device) for k, v in data.items()}

output_ids = model.generate(**data, generation_config=generation_config)[0]
output_ids = output_ids[len(data["input_ids"][0]):]
output = tokenizer.decode(output_ids, skip_special_tokens=True).strip()

print(output)

# Диск зрительного нерва (ДЗН) имеет бледно-розовый цвет, монотонный, уменьшенного размера, неправильной формы и с размытыми границами. Экскавация уменьшенного размера и расположена в центре. Сосудистый пучок находится в центре ДЗН.
# Выявлена патология ДЗН: кнаружи от экскавации наблюдается тёмно-серый очаг с чёткими границами размером 0,2 ДД.
# Артерии и вены имеют нормальный ход, нормальную извитость и бифуркацию, а также нормальный калибр. Соотношение калибра артерий к венам (А/В индекс) составляет 2:3.
# Обнаружена патология сосудов: по ходу сосудов выявлены единичные шарообразные утолщения стенок сосудов, окружённые очагами красного цвета с чёткими границами (кровоизлияния).
# Макулярный и фовеальный рефлексы в норме. В области макулы дополнительно присутствуют кольцевидные рефлексы (кистовидный отёк).
# На периферии глазного дна выявлены множественные очаги красного цвета (кровоизлияния).
Downloads last month
517
Safetensors
Model size
8.04B params
Tensor type
F16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for mastavtsev/YandexGPT-5-lite-LoRA-OphtReportsGen

Finetuned
(12)
this model