--- license: other license_name: yandexgpt-5-lite-8b license_link: LICENSE language: - ru - en base_model: - yandex/YandexGPT-5-Lite-8B-instruct --- # YandexGPT-5-Lite-Instruct Версия [YandexGPT-5-Lite-Instruct](https://huggingface.co/yandex/YandexGPT-5-Lite-8B-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: ```python 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. # Обнаружена патология сосудов: по ходу сосудов выявлены единичные шарообразные утолщения стенок сосудов, окружённые очагами красного цвета с чёткими границами (кровоизлияния). # Макулярный и фовеальный рефлексы в норме. В области макулы дополнительно присутствуют кольцевидные рефлексы (кистовидный отёк). # На периферии глазного дна выявлены множественные очаги красного цвета (кровоизлияния).