QED-75M_web / README.md
levossadtchi's picture
Update README.md
ca31cf2 verified
---
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