YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
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 |
| `< | user |
| `< | user |
🚀 Использование
Вариант 1: Transformers.js (рекомендуется)
npm install @xenova/transformers
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 (низкоуровневый)
npm install onnxruntime-web
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 квантование:
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 | ⚡ Медленно |
🔧 Локальный запуск
# Клонировать репозиторий
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
- Downloads last month
- 38
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support