FractalGPT/SbertDistilV2
031
1---2license: apache-2.03language:4- ru5base_model:6- FractalGPT/SbertDistil7- intfloat/multilingual-e5-large-instruct8library_name: sentence-transformers9tags:10- sentence-transformers11- sentence-similarity12- feature-extraction13- embeddings14- distillation15- nli16- masl17- task-specification18- agent19pipeline_tag: sentence-similarity20---21 22# SbertDistilV223 24**Автор:** Потанин М. В.25 26## Описание модели27 28SbertDistilV2 — компактная модель эмбеддингов, специализированная для работы с задачами NLI (Natural Language Interface) и преобразования команд в формат MASL (Multi-agent system language). Модель получена путём двухэтапного обучения с применением дистилляции знаний и дообучения на специализированном датасете.29 30### Ключевые характеристики31 32- **Базовая модель**: `FractalGPT/SbertDistil`33- **Модель-учитель**: `intfloat/multilingual-e5-large-instruct`34- **Размерность эмбеддингов**: 384 (против 1024 у учителя)35- **Язык**: Русский36- **Специализация**: NLI задачи, MASL спецификации37 38## Архитектура обучения39 40Обучение проводилось в **два этапа**:41 42### Этап 1: Дистилляция знаний43 44Передача знаний от большой модели-учителя (`multilingual-e5-large-instruct`, 1024 dim) к компактной модели-ученику (`SbertDistil`, 384 dim).45 46**Метод согласования размерностей:**47- SVD-проекция для сжатия 1024-мерных эмбеддингов учителя в 384-мерное пространство ученика с минимальными потерями информации48 49**Комбинированная функция потерь:**50 51$$\mathcal{L}_{\text{total}} = \alpha \cdot \mathcal{L}_{\text{MSE}} + \beta \cdot \mathcal{L}_{\text{cosine}} + \gamma \cdot \mathcal{L}_{\text{InfoNCE}}$$52 53Где:54 55$$\mathcal{L}_{\text{MSE}}$$ — среднеквадратичная ошибка для прямого согласования эмбеддингов (вес: **1.0**)56 57$$\mathcal{L}_{\text{cosine}}$$ — косинусное сходство для сохранения направлений векторов (вес: **0.5**)58 59$$\mathcal{L}_{\text{InfoNCE}}$$ — контрастное обучение для улучшения различимости представлений (вес: **0.3**)60 61**Датасет:** Запросы на естественном языке62 63### Этап 2: Дообучение на MASL64 65Специализация модели на задачах преобразования NL-команд в MASL спецификации.66 67**Датасет:** Пары "запрос на естественном языке / MASL структура" (9 999 примеров)68 69## Датасет70 71Модель дообучена на синтетическом датасете NLI Task Specification Dataset (MASL):72- **Размер**: 9 999 примеров73- **Структура**: пары "команда → JSON структура"74- **Формат**: Входные и выходные коннекторы с типами данных, семантическими категориями и областями знаний75 76Подробнее о датасете см. документацию к [NLI Dataset](https://huggingface.co/datasets/Ponimash/nli_dataset).77 78## Использование79 80### Установка81 82```bash83pip install sentence-transformers84```85 86### Базовое использование87 88```python89from sentence_transformers import SentenceTransformer90 91# Загрузка модели92model = SentenceTransformer("FractalGPT/SbertDistilV2")93 94# Пример команд95commands = [96 "Преобразуй эту аудиозапись в текстовый формат",97 "Создай презентацию с анализом медицинских данных",98 "Ответь на вопрос о квантовой физике голосом"99]100 101# Получение эмбеддингов102embeddings = model.encode(commands)103 104print(f"Размерность эмбеддингов: {embeddings.shape[1]}") 105print(f"Количество векторов: {embeddings.shape[0]}") 106```107 108### Поиск похожих команд109 110```python111from sentence_transformers import SentenceTransformer, util112import torch113 114model = SentenceTransformer("FractalGPT/SbertDistilV2")115 116# База команд117commands_db = [118 "Преобразуй речь в текст",119 "Создай презентацию по физике",120 "Сделай аудио ответ на вопрос",121 "Проанализируй медицинский документ",122 "Переведи аудио в текстовый файл"123]124 125# Запрос пользователя126query = "Транскрибируй голосовое сообщение в txt"127 128# Получение эмбеддингов129query_embedding = model.encode(query, convert_to_tensor=True)130db_embeddings = model.encode(commands_db, convert_to_tensor=True)131 132# Вычисление косинусного сходства133cosine_scores = util.cos_sim(query_embedding, db_embeddings)[0]134 135# Сортировка результатов136results = torch.argsort(cosine_scores, descending=True)137 138print(f"Запрос: {query}\n")139print("Наиболее похожие команды:")140for idx in results[:3]:141 print(f" {commands_db[idx]} (Score: {cosine_scores[idx]:.4f})")142```143 144### Кластеризация команд145 146```python147from sentence_transformers import SentenceTransformer148from sklearn.cluster import KMeans149import numpy as np150 151model = SentenceTransformer("FractalGPT/SbertDistilV2")152 153commands = [154 "Преобразуй аудио в текст",155 "Транскрибируй голос в txt",156 "Создай презентацию по биологии",157 "Сделай pptx с анализом данных",158 "Ответь голосом на вопрос",159 "Озвучь ответ на запрос"160]161 162# Получение эмбеддингов163embeddings = model.encode(commands)164 165# Кластеризация (3 кластера: транскрипция, презентации, голосовые ответы)166kmeans = KMeans(n_clusters=3, random_state=42)167clusters = kmeans.fit_predict(embeddings)168 169# Группировка по кластерам170for i in range(3):171 cluster_commands = [cmd for cmd, cluster in zip(commands, clusters) if cluster == i]172 print(f"\nКластер {i+1}:")173 for cmd in cluster_commands:174 print(f" - {cmd}")175```176 177## Применение178 179Модель оптимизирована для следующих задач:180 181### 1. Семантический поиск команд182Поиск похожих команд в базе знаний мультиагентной системы для переиспользования существующих решений.183 184### 2. Кластеризация задач185Группировка схожих запросов для оптимизации маршрутизации в агентных системах.186 187### 3. Классификация намерений188Определение типа задачи (транскрипция, генерация отчётов, голосовые ответы и т.д.) по векторному представлению.189 190### 4. Ранжирование инструментов191Поиск наиболее подходящих инструментов для выполнения пользовательской команды на основе семантического сходства.192 193### 5. Дедупликация запросов194Выявление дублирующихся или очень похожих запросов для оптимизации обработки.195 196## Технические детали197 198### Оптимизации обучения199 200- **Mixed Precision Training**: использование bfloat16/float16 для ускорения обучения201- **Gradient Accumulation**: накопление градиентов для эффективной работы с большими батчами202- **SVD Projection**: оптимальное сжатие размерности с сохранением максимальной дисперсии203 204### Математическое обоснование205 206**MSE Loss** (прямое согласование):207 208$$\mathcal{L}_{\text{MSE}} = \frac{1}{N} \sum_{i=1}^{N} \|\text{SVD}(\mathbf{h}_{\text{teacher}}^{(i)}) - \mathbf{h}_{\text{student}}^{(i)}\|^2$$209 210**Cosine Similarity Loss** (сохранение направлений):211 212$$\mathcal{L}_{\text{cosine}} = 1 - \frac{1}{N} \sum_{i=1}^{N} \frac{\mathbf{h}_{\text{teacher}}^{(i)} \cdot \mathbf{h}_{\text{student}}^{(i)}}{\|\mathbf{h}_{\text{teacher}}^{(i)}\| \|\mathbf{h}_{\text{student}}^{(i)}\|}$$213 214**InfoNCE Loss** (контрастное обучение):215 216$$\mathcal{L}_{\text{InfoNCE}} = -\log \frac{\exp(\text{sim}(\mathbf{h}_i, \mathbf{h}_i^+) / \tau)}{\sum_{j=1}^{N} \exp(\text{sim}(\mathbf{h}_i, \mathbf{h}_j) / \tau)}$$217 218Где $\tau$ — температурный параметр контрастного обучения.219 220## Ограничения221 222- Модель оптимизирована для **русского языка**223- Специализирована на задачах NLI и MASL, может показывать сниженное качество на общих задачах эмбеддингов224- Размерность 384 может быть недостаточной для очень сложных семантических различий225 226## Связанные модели227 228- [Qwen2.5-NLI-7B](https://huggingface.co/Ponimash/Qwen2.5-nli-7b) — генеративная модель для создания MASL спецификаций229- [FractalGPT/SbertDistil](https://huggingface.co/FractalGPT/SbertDistil) — базовая модель230- [multilingual-e5-large-instruct](https://huggingface.co/intfloat/multilingual-e5-large-instruct) — модель-учитель231 232## Примеры результатов233 234### Пример 1: Транскрипция235 236```python237query = "Преобразуй голосовое сообщение в текст"238similar = [239 "Транскрибируй аудио в txt", 240 "Переведи речь в текстовый формат", 241 "Распознай речь и сохрани в файл" 242]243```244 245### Пример 2: Генерация отчётов246 247```python248query = "Создай презентацию с анализом данных"249similar = [250 "Сделай pptx с результатами исследования", 251 "Подготовь слайды с выводами", 252 "Оформи отчёт в виде презентации" 253]254```255 256## Цитирование257 258```bibtex259@misc{sbertdistilv2-nli-masl,260 author = {Потанин, М. В.},261 title = {SbertDistilV2-NLI-MASL: Compact Embeddings for Natural Language Interface Tasks},262 year = {2024},263 publisher = {HuggingFace},264 howpublished = {\url{https://huggingface.co/FractalGPT/SbertDistilV2}}265}266```267 268## Лицензия269 270Модель распространяется под лицензией Apache 2.0.