File size: 5,513 Bytes
ca31cf2 49e7958 299677b 49e7958 299677b 49e7958 299677b 49e7958 299677b 49e7958 9deeb46 49e7958 9deeb46 49e7958 299677b 49e7958 299677b 49e7958 299677b 9deeb46 299677b 9deeb46 299677b 9deeb46 299677b 9deeb46 299677b 9deeb46 299677b 49e7958 299677b 49e7958 9deeb46 49e7958 299677b 9deeb46 49e7958 299677b 9deeb46 299677b 49e7958 299677b 49e7958 9deeb46 299677b 9deeb46 299677b 9deeb46 299677b 9deeb46 299677b 49e7958 299677b 49e7958 ca31cf2 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 | ---
license: mit
language:
- en
base_model:
- levossadtchi/QED-75M
---
# QED-75M Web (ONNX)
QED-75M — языковая модель (384 hidden, 32 слоя, 75M параметров), оптимизированная для веб-деплоя.
**Репозиторий:** https://huggingface.co/levossadtchi/QED-75M_web
---
## 📁 Файлы
| Файл | Описание | Размер |
|------|----------|--------|
| `model.onnx` | Веса модели (FP32) | ~365 MB |
| `tokenizer.json` | Словарь токенизатора | ~3 MB |
| `tokenizer_config.json` | Конфиг токенизатора | <1 KB |
| `config.json` | Архитектура модели | <1 KB |
| `generation_config.json` | Параметры генерации | <1 KB |
| `index.html` | Демо-плейграунд | <10 KB |
---
## 💬 Формат промптов
Модель обучена на чат-формате. Для лучших результатов используйте:
```
<|user|>ваш вопрос<|assistant|>
```
**Примеры:**
| Промпт | Ожидаемый ответ |
|--------|-----------------|
| `<|user|>What is 2+2?<|assistant|>` | "The answer is 2 + 2 = 4." |
| `<|user|>Explain gravity in one sentence.<|assistant|>` | "Gravity is a fundamental force..." |
| `<|user|>Write a haiku about cats.<|assistant|>` | Стихотворение про котов |
---
## 🚀 Использование
### Вариант 1: Transformers.js (рекомендуется)
```bash
npm install @xenova/transformers
```
```javascript
import { AutoTokenizer, AutoModelForCausalLM } from '@xenova/transformers';
// Загрузка модели
const tokenizer = await AutoTokenizer.from_pretrained('levossadtchi/QED-75M_web');
const model = await AutoModelForCausalLM.from_pretrained('levossadtchi/QED-75M_web', {
quantized: true, // Использовать int8 квантование
dtype: 'q8',
device: 'webgpu', // или 'wasm' для CPU
});
// Генерация
const prompt = '<|user|>What is 2+2?<|assistant|>';
const inputs = await tokenizer(prompt, { return_tensors: 'pt' });
const outputs = await model.generate({
...inputs,
max_new_tokens: 128,
temperature: 0.7,
top_k: 40,
do_sample: true,
eos_token_id: tokenizer.eos_token_id,
pad_token_id: tokenizer.pad_token_id,
});
const text = tokenizer.decode(outputs[0], { skip_special_tokens: false });
console.log(text);
```
### Вариант 2: ONNX Runtime Web (низкоуровневый)
```bash
npm install onnxruntime-web
```
```javascript
import * as ort from 'onnxruntime-web';
// Загрузка
const session = await ort.InferenceSession.create('model.onnx');
// Инференс
const inputIds = [1, 15826, 15, 638]; // токены
const tensor = new ort.Tensor('int64', BigInt64Array.from(inputIds.map(BigInt)), [1, inputIds.length]);
const { logits } = await session.run({ input_ids: tensor });
// Greedy decoding
const nextToken = logits.data.reduce((maxIdx, val, idx) => val > logits.data[maxIdx] ? idx : maxIdx, 0);
```
### Вариант 3: Готовый HTML
Откройте `index.html` в браузере или задеплойте на Vercel/Netlify.
---
## ⚙️ Параметры генерации
| Параметр | По умолчанию | Описание |
|----------|--------------|----------|
| `max_new_tokens` | 128 | Макс. количество новых токенов |
| `temperature` | 0.7 | Креативность (0 = greedy, >1 = хаос) |
| `top_k` | 40 | Сэмплирование из top-k токенов |
| `top_p` | 0.9 | Nucleus sampling (альтернатива top_k) |
| `repetition_penalty` | 1.1 | Штраф за повторы |
**Рекомендации:**
- Для фактов: `temperature=0.5, top_k=30`
- Для креатива: `temperature=0.8, top_k=50`
- Для кода: `temperature=0.2, top_k=20`
---
## 🏗 Архитектура
| Параметр | Значение |
|----------|----------|
| Vocabulary | 49,152 токенов |
| Hidden dim | 384 |
| Layers | 32 |
| Attention heads | 6 |
| FFN dim | 1,024 |
| Max length | 8,192 токена |
| RoPE θ | 10,000 |
| RMSNorm ε | 1e-5 |
---
## 📦 Квантование
Для уменьшения размера модели используйте int8 квантование:
```bash
pip install onnxruntime-tools
python -c "
from onnxruntime.quantization import quantize_dynamic, QuantType
quantize_dynamic('model.onnx', 'model_quantized.onnx', weight_type=QuantType.QUInt8)
"
```
**Размеры:**
- Оригинал (FP32): ~365 MB
- Квантованная (INT8): ~95 MB (−74%)
---
## 🌐 Браузерная поддержка
| Технология | Поддержка | Размер | Скорость |
|------------|-----------|--------|----------|
| **WebGPU** | Chrome 113+, Edge | ~100 MB | ⚡⚡⚡ Быстро |
| **WASM** | Все браузеры | ~100 MB | ⚡⚡ Средне |
| **CPU** | Резервный режим | ~365 MB | ⚡ Медленно |
---
## 🔧 Локальный запуск
```bash
# Клонировать репозиторий
git lfs install
git clone https://huggingface.co/levossadtchi/QED-75M_web
# Запустить локальный сервер
cd QED-75M_web
python -m http.server 8000
# Открыть в браузере
open http://localhost:8000/index.html
```
---
## 📝 Лицензия
MIT |