Юристы не могут отправлять материалы дел во внешние API, а держать A100 ради одного лишь разбора документов дорого. Мы обучили Qwen2.5-1.5B извлекать сущности из судебных документов на уровне Ministral 3 14B: макро-F1 0.70 против 0.71 на 145 реальных документах. На A5000 она работает в 2.2 раза быстрее, чем Ministral на A100. Рассказываем, почему балансировка классов синтетикой не сработала и что сработало вместо неё.Всем привет! Меня зовут Даниил Шеремет, я AI-инженер в Agentic Lab. В компании делаем Агату — ИИ-ассистента и рабочую среду для юристов.
продолжить чтение
Часть 5. Базовая линия: с чего стартуемВажное предупреждение: Весь код по моей методологии написан нейросетью DeepSeek, сам бы не осилил (я не программист). За мной лишь отладка, исправление неточностей и ошибок.5.1. Что и зачемПрежде чем что-то обучать, нужен "снимок до". Иначе после Phase A мы не поймём: cos 0.92 к учителю — это хорошо или "а должно было быть 0.98"? retrieval 0.98 — это выросло относительно старта или упало?Поэтому в этом разделе — два коротких замера, до всякого обучения:Retrieval на hnp_val
продолжить чтение
Часть 4. Создание ученикаВажное предупреждение: Весь код по моей методологии написан нейросетью DeepSeek, сам бы не осилил (я не программист). За мной лишь отладка, исправление неточностей и ошибок.4.1. Архитектура StudentTinyТри компонента:Input: input_ids , attention_mask
↓
↓ hidden
↓ pooled
↓ projected
|
┌── projected=False → → 312-dim (продакшен)
└── projected=True → → → 768-dim (дистилляция)Ключевая идея — два режима через один метод:
продолжить чтение
Часть 3. Датасет contrastiveВажное предупреждение: Весь код по моей методологии написан нейросетью DeepSeek, сам бы не осилил (я не программист). За мной лишь отладка, исправление неточностей и ошибок.3.1. Выбор датасета для contrastivedeepvk/ru-HNP — русский датасет hard negatives, сгенерированный с помощью ChatGPT (см. карточку deepvk/ru-HNP). Отлично подходит для нашей задачи, потому что даёт готовую разметку без необходимости что-то придумывать самостоятельно.Структура данных для одного запроса:1 query — исходное предложение.
продолжить чтение
Часть 2. Данные: Вики и доменВажное предупреждение: Весь код по моей методологии написан нейросетью DeepSeek, сам бы не осилил (я не программист). За мной лишь отладка, исправление неточностей и ошибок.2.1. Зачем нужен общий корпусДля дистилляции нам нужны два вида данных:Общий корпус — чтобы студент выучил широкий семантический охват. Без него модель переобучится под узкий домен и будет плохо работать на произвольных текстах.Доменный корпус
продолжить чтение
Часть 1. Окружение, разведка моделейВажное предупреждение:Весь код по моей методологии написан нейросетью DeepSeek, сам бы не осилил (я не программист).За мной лишь отладка, исправление неточностей и ошибок.1.1. Создание окружения# путь условный, замените на свой
mkdir -p ~/work/..../rubert-tiny2-distill
cd ~/work/..../rubert-tiny2-distill
python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
# PyTorch CPU
pip install torch --index-url https://download.pytorch.org/whl/cpu
# Основные библиотеки
pip install
transformers
sentence-transformers
datasets
numpy
scikit-learn
tqdm
huggingface_hubПроверка:python -c "import torch, transformers, sentence_transformers; print('OK')"
продолжить чтение
Часть 0. ВведениеВажное предупреждение:Весь код в последующих частях по моей методологии написан нейросетью DeepSeek, сам бы не осилил (я не программист). За мной лишь отладка, исправление неточностей и ошибок.Тексты этих статей собраны из "заметок на полях" во время реализации, потому возможны некоторые шероховатости в аргументации и стилистике.Если вас это устроит, желаю приятного чтения.0.1. Проблема и постановка задачиУчитель — DeepPavlov/rubert-base-cased-sentence
продолжить чтение
Коротко: я дообучил языковую модель на 360 млн параметров работать терминалом. Никакого шелла и файловой системы за ней нет: на вход идёт каждое нажатие клавиши, а модель предсказывает, как изменится экран. Она умеет создавать файлы, запускать vim и tmux, играть в змейку и обычно помнит, что вы написали несколько команд назад. Больше всего дали два приёма: научить модель исправлять собственные ошибки и декодировать строки экрана параллельно. Попробуйте в браузере (208 МБ) и наберите pythoon, чтобы убедиться, что это не настоящий шелл.
продолжить чтение
Хотели бы вы запустить большую языковую модель на видеокарте с небольшим объёмом памяти? Модель с 27 миллиардами параметров, упакованными в 16 бит, занимает около 54 ГБ. Если хранить каждый вес одним битом и один общий масштаб на группу из 128 весов, те же параметры уместятся примерно в 4 ГБ (не считая таблицы словаря).
продолжить чтение