Text Generation
Transformers
Safetensors
Russian
llama
russian
small-language-model
sovereign-ai
instruct
text-generation-inference
Instructions to use longtimedevs/Ru-Small-Instruct with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use longtimedevs/Ru-Small-Instruct with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="longtimedevs/Ru-Small-Instruct")# pip install -U transformers accelerate # Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("longtimedevs/Ru-Small-Instruct") model = AutoModelForCausalLM.from_pretrained("longtimedevs/Ru-Small-Instruct", device_map="auto") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use longtimedevs/Ru-Small-Instruct with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "longtimedevs/Ru-Small-Instruct" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "longtimedevs/Ru-Small-Instruct", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker
docker model run hf.co/longtimedevs/Ru-Small-Instruct
- SGLang
How to use longtimedevs/Ru-Small-Instruct with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "longtimedevs/Ru-Small-Instruct" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "longtimedevs/Ru-Small-Instruct", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "longtimedevs/Ru-Small-Instruct" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "longtimedevs/Ru-Small-Instruct", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }' - Docker Model Runner
How to use longtimedevs/Ru-Small-Instruct with Docker Model Runner:
docker model run hf.co/longtimedevs/Ru-Small-Instruct
Update README.md
Browse files
README.md
CHANGED
|
@@ -1,55 +1,169 @@
|
|
| 1 |
---
|
|
|
|
|
|
|
|
|
|
| 2 |
language:
|
| 3 |
- ru
|
| 4 |
-
license: mit
|
| 5 |
tags:
|
| 6 |
-
- text-generation
|
| 7 |
- llama
|
| 8 |
- russian
|
| 9 |
-
- instruct
|
| 10 |
- small-language-model
|
| 11 |
- sovereign-ai
|
| 12 |
-
-
|
| 13 |
-
|
| 14 |
-
widget:
|
| 15 |
-
- text: "<|юзер|>\nПривет! Кто ты?\n<|юзерзакончил|>\n<|я_начал|>\n"
|
| 16 |
-
example_title: "Приветствие"
|
| 17 |
-
- text: "<|юзер|>\nКто такой слон?\n<|юзерзакончил|>\n<|я_начал|>\n"
|
| 18 |
-
example_title: "Определение"
|
| 19 |
---
|
| 20 |
|
| 21 |
-
#
|
| 22 |
|
| 23 |
-
|
|
|
|
|
|
|
| 24 |
|
| 25 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 26 |
|
| 27 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 28 |
|
| 29 |
-
---
|
|
|
|
|
|
|
|
|
|
| 30 |
|
| 31 |
-
|
|
|
|
| 32 |
|
| 33 |
-
|
| 34 |
-
|
| 35 |
-
|
| 36 |
-
|
| 37 |
-
|
| 38 |
-
* **Тип данных:** `bfloat16` / `float16`
|
| 39 |
-
* **Нативные управляющие теги диалога:**
|
| 40 |
-
* `<|юзер|>` — начало реплики пользователя
|
| 41 |
-
* `<|юзерзакончил|>` — завершение реплики пользователя
|
| 42 |
-
* `<|я_начал|>` — начало ответа модели
|
| 43 |
-
* `<|я_закончил|>` — системный маркер завершения генерации (EOS)
|
| 44 |
|
| 45 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 46 |
|
| 47 |
-
##
|
| 48 |
|
| 49 |
-
Для получения
|
| 50 |
|
| 51 |
```text
|
| 52 |
<|юзер|>
|
| 53 |
-
|
| 54 |
<|юзерзакончил|>
|
| 55 |
<|я_начал|>
|
|
|
|
| 1 |
---
|
| 2 |
+
license: mit
|
| 3 |
+
library_name: transformers
|
| 4 |
+
pipeline_tag: text-generation
|
| 5 |
language:
|
| 6 |
- ru
|
|
|
|
| 7 |
tags:
|
|
|
|
| 8 |
- llama
|
| 9 |
- russian
|
|
|
|
| 10 |
- small-language-model
|
| 11 |
- sovereign-ai
|
| 12 |
+
- text-generation
|
| 13 |
+
- instruct
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 14 |
---
|
| 15 |
|
| 16 |
+
# Ru-Small-Instruct (0.2B): Sovereign Lightweight Language Model
|
| 17 |
|
| 18 |
+
<!-- markdownlint-disable first-line-h1 -->
|
| 19 |
+
<!-- markdownlint-disable html -->
|
| 20 |
+
<!-- markdownlint-disable no-duplicate-header -->
|
| 21 |
|
| 22 |
+
<div align="center">
|
| 23 |
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 900 240" width="85%" style="border-radius: 18px; box-shadow: 0 12px 36px rgba(0,0,0,0.35);">
|
| 24 |
+
<defs>
|
| 25 |
+
<linearGradient id="bgGrad" x1="0%" y1="0%" x2="100%" y2="100%">
|
| 26 |
+
<stop offset="0%" stop-color="#0b0f19" />
|
| 27 |
+
<stop offset="50%" stop-color="#111827" />
|
| 28 |
+
<stop offset="100%" stop-color="#030712" />
|
| 29 |
+
</linearGradient>
|
| 30 |
+
<linearGradient id="accentGrad" x1="0%" y1="0%" x2="100%" y2="0%">
|
| 31 |
+
<stop offset="0%" stop-color="#38bdf8" />
|
| 32 |
+
<stop offset="50%" stop-color="#818cf8" />
|
| 33 |
+
<stop offset="100%" stop-color="#c084fc" />
|
| 34 |
+
</linearGradient>
|
| 35 |
+
<linearGradient id="glowGrad" x1="0%" y1="100%" x2="100%" y2="0%">
|
| 36 |
+
<stop offset="0%" stop-color="#3b82f6" stop-opacity="0.2" />
|
| 37 |
+
<stop offset="100%" stop-color="#8b5cf6" stop-opacity="0.0" />
|
| 38 |
+
</linearGradient>
|
| 39 |
+
</defs>
|
| 40 |
+
|
| 41 |
+
<rect width="900" height="240" fill="url(#bgGrad)" rx="18" />
|
| 42 |
+
<rect width="900" height="240" fill="url(#glowGrad)" rx="18" />
|
| 43 |
+
|
| 44 |
+
<!-- Сетка нейросети -->
|
| 45 |
+
<g opacity="0.12" stroke="#38bdf8" stroke-width="1.2">
|
| 46 |
+
<line x1="120" y1="40" x2="200" y2="100" />
|
| 47 |
+
<line x1="200" y1="100" x2="140" y2="180" />
|
| 48 |
+
<line x1="200" y1="100" x2="280" y2="80" />
|
| 49 |
+
<line x1="280" y1="80" x2="360" y2="150" />
|
| 50 |
+
<line x1="720" y1="50" x2="780" y2="120" />
|
| 51 |
+
<line x1="780" y1="120" x2="840" y2="70" />
|
| 52 |
+
<line x1="780" y1="120" x2="810" y2="190" />
|
| 53 |
+
<circle cx="120" cy="40" r="4" fill="#38bdf8" />
|
| 54 |
+
<circle cx="200" cy="100" r="5" fill="#818cf8" />
|
| 55 |
+
<circle cx="140" cy="180" r="4" fill="#38bdf8" />
|
| 56 |
+
<circle cx="280" cy="80" r="4" fill="#c084fc" />
|
| 57 |
+
<circle cx="780" cy="120" r="5" fill="#38bdf8" />
|
| 58 |
+
</g>
|
| 59 |
|
| 60 |
+
<!-- Заголовок -->
|
| 61 |
+
<text x="450" y="96" text-anchor="middle" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif" font-size="44" font-weight="800" fill="url(#accentGrad)" letter-spacing="1.5">
|
| 62 |
+
Ru-Small-Instruct
|
| 63 |
+
</text>
|
| 64 |
+
|
| 65 |
+
<!-- Подзаголовок -->
|
| 66 |
+
<text x="450" y="142" text-anchor="middle" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif" font-size="18" font-weight="500" fill="#94a3b8" letter-spacing="3">
|
| 67 |
+
0.2B ZERO-FINGERPRINT SOVEREIGN LANGUAGE MODEL
|
| 68 |
+
</text>
|
| 69 |
|
| 70 |
+
<!-- Бейджики внутри баннера -->
|
| 71 |
+
<g transform="translate(290, 172)">
|
| 72 |
+
<rect x="0" y="0" width="90" height="28" rx="6" fill="#1e293b" stroke="#334155" stroke-width="1"/>
|
| 73 |
+
<text x="45" y="18" text-anchor="middle" font-family="sans-serif" font-size="12" font-weight="600" fill="#38bdf8">LLaMA 0.2B</text>
|
| 74 |
|
| 75 |
+
<rect x="104" y="0" width="105" height="28" rx="6" fill="#1e293b" stroke="#334155" stroke-width="1"/>
|
| 76 |
+
<text x="156.5" y="18" text-anchor="middle" font-family="sans-serif" font-size="12" font-weight="600" fill="#818cf8">Context 512</text>
|
| 77 |
|
| 78 |
+
<rect x="223" y="0" width="95" height="28" rx="6" fill="#1e293b" stroke="#334155" stroke-width="1"/>
|
| 79 |
+
<text x="270.5" y="18" text-anchor="middle" font-family="sans-serif" font-size="12" font-weight="600" fill="#34d399">Pure Russian</text>
|
| 80 |
+
</g>
|
| 81 |
+
</svg>
|
| 82 |
+
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 83 |
|
| 84 |
+
<hr>
|
| 85 |
+
|
| 86 |
+
<div align="center" style="line-height: 1;">
|
| 87 |
+
<a href="https://long-time.ru" target="_blank" style="margin: 2px;">
|
| 88 |
+
<img alt="Homepage" src="https://img.shields.io/badge/🌐%20Website-long--time.ru-0284c7?color=0284c7&logoColor=white" style="display: inline-block; vertical-align: middle;"/>
|
| 89 |
+
</a>
|
| 90 |
+
<a href="https://huggingface.co/models?search=Ru-Small-Instruct" target="_blank" style="margin: 2px;">
|
| 91 |
+
<img alt="Hugging Face" src="https://img.shields.io/badge/🤗%20Hugging%20Face-Ru--Small--Instruct-ffc107?color=ffc107&logoColor=white" style="display: inline-block; vertical-align: middle;"/>
|
| 92 |
+
</a>
|
| 93 |
+
<a href="LICENSE" style="margin: 2px;">
|
| 94 |
+
<img alt="License" src="https://img.shields.io/badge/License-MIT-10b981?color=10b981&logoColor=white" style="display: inline-block; vertical-align: middle;"/>
|
| 95 |
+
</a>
|
| 96 |
+
</div>
|
| 97 |
+
|
| 98 |
+
<p align="center">
|
| 99 |
+
<a href="https://long-time.ru"><b>Project Home & Development Details</b> 🚀</a>
|
| 100 |
+
</p>
|
| 101 |
+
|
| 102 |
+
## Introduction
|
| 103 |
+
|
| 104 |
+
**Ru-Small-Instruct** — компактная русскоязычная модель класса **SLM (Small Language Model)** с объемом параметров ~0.2B (~165M). Разработана с упором на суверенность весов (Zero-Fingerprint): модель обучена с нуля без заимствования базовых чекпоинтов у корпоративных моделей (Llama 3, Qwen, Mistral).
|
| 105 |
+
|
| 106 |
+
Модель предназначена для локального исполнения на маломощном оборудовании, CPU, мобильных чипах и в микросервисной архитектуре, где критичны нулевая задержка (Time-To-First-Token) и отсутствие лицензионных ограничений.
|
| 107 |
+
|
| 108 |
+
**Архитектура и характеристики:**
|
| 109 |
+
* **Архитектурный базис:** модифицированная авторегрессионная архитектура LLaMA (`LlamaForCausalLM`).
|
| 110 |
+
* **Параметризация:** 16 слоев внимания, скрытый размер `hidden_size = 896`, промежуточный слой `intermediate_size = 2560`, 14 attention-голов (Grouped Query Attention с 2 KV-головами для экономии VRAM).
|
| 111 |
+
* **Словарь и токенизация:** чистый BPE ByteLevel токенизатор на **28 672 токена**, обученный с нуля на репрезентативном русском корпусе.
|
| 112 |
+
* **Потребление ресурсов:** полный вес модели в `bfloat16` составляет **~330 МБ**, потребление видеопамяти при инференсе — **< 500 МБ VRAM**.
|
| 113 |
+
|
| 114 |
+
## Architecture & Specifications
|
| 115 |
+
|
| 116 |
+
<div align="center">
|
| 117 |
+
|
| 118 |
+
| Спецификация | Значение | Описание |
|
| 119 |
+
| :--- | :---: | :--- |
|
| 120 |
+
| **Backbone Parameters** | ~165M – 200M | ~0.2B по каталогу Hugging Face |
|
| 121 |
+
| **Hidden Dimension ($d_{model}$)** | 896 | Размер латентного пространства |
|
| 122 |
+
| **Intermediate Dimension ($d_{ff}$)** | 2560 | Размерность слоев SwiGLU MLP |
|
| 123 |
+
| **Layers** | 16 | Глубина трансформерных блоков |
|
| 124 |
+
| **Attention Heads (Q / KV)** | 14 / 2 | Grouped-Query Attention (GQA) |
|
| 125 |
+
| **Context Length** | 512 | Окно внимания с поддержкой RoPE |
|
| 126 |
+
| **Vocab Size** | 28 672 | Чистый русский ByteLevel BPE |
|
| 127 |
+
| **Native Precision** | `bfloat16` / `float16` | Базовый формат хранения |
|
| 128 |
+
| **Special Chat Tags** | Custom Cyrillic | Нативная разметка без утечек английских токенов |
|
| 129 |
+
|
| 130 |
+
</div>
|
| 131 |
+
|
| 132 |
+
## Training Recipe
|
| 133 |
+
|
| 134 |
+
### 1. Pre-training (Фундаментальное чтение)
|
| 135 |
+
Модель прошла фундаментальное обучение с нуля на сбалансированном русскоязычном корпусе:
|
| 136 |
+
* **Энциклопедический блок:** срез русской Википедии (животные, естественные науки, география, история, космос).
|
| 137 |
+
* **Связанная речь и аналитика:** очищенные новостные тексты открытого корпуса «Газета».
|
| 138 |
+
* **Упаковка данных:** потоковая конкатенация токенов (Data Packing) с удалением паразитных паддингов.
|
| 139 |
+
|
| 140 |
+
### 2. SFT & Alignment (Инструкционная доводка)
|
| 141 |
+
Для предотвращения галлюцинаций и сохранения фактологии проведена диалоговая огранка (Instruction Tuning) с маскированием пользовательского ввода:
|
| 142 |
+
* **Инвариантность к регистру:** устойчивость к строчным и заглавным запросам (`привет`, `Привет`, `ПРИВЕТ`).
|
| 143 |
+
* **Фактологическое якорение:** очистка от ложных ассоциаций (биологическая классификация, термины информатики).
|
| 144 |
+
* **Нативный диалоговый протокол:** управляющие маркеры `<|юзер|>`, `<|юзерзакончил|>`, `<|я_начал|>`, `<|я_закончил|>`.
|
| 145 |
+
|
| 146 |
+
## Benchmark & Performance
|
| 147 |
+
|
| 148 |
+
Оценка производительности на локальном оборудовании (NVIDIA GeForce RTX, FP16/BF16):
|
| 149 |
+
|
| 150 |
+
<div align="center">
|
| 151 |
+
|
| 152 |
+
| Метрика | Значение |
|
| 153 |
+
| :--- | :---: |
|
| 154 |
+
| **Generation Speed (RTX Laptop / Desktop)** | **180 – 210 t/s** |
|
| 155 |
+
| **Memory Footprint (Inference)** | **~380 – 490 MB** |
|
| 156 |
+
| **Cold Start Time** | **< 0.15 s** |
|
| 157 |
+
| **Supported Hardware** | CUDA, Apple Silicon (MPS), CPU, Edge |
|
| 158 |
+
|
| 159 |
+
</div>
|
| 160 |
|
| 161 |
+
## Prompt Encoding
|
| 162 |
|
| 163 |
+
Для получения точных и связных ответов структурируйте промпт с переносами строк:
|
| 164 |
|
| 165 |
```text
|
| 166 |
<|юзер|>
|
| 167 |
+
Кто такой слон?
|
| 168 |
<|юзерзакончил|>
|
| 169 |
<|я_начал|>
|