CoolFace
Modelpublic

levossadtchi/QED-75M_web

sourceHugging Facemitupdated 6mo agoView on Hugging Face
0likes11downloads
Model Card

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_tokens128Макс. количество новых токенов
temperature0.7Креативность (0 = greedy, >1 = хаос)
top_k40Сэмплирование из top-k токенов
top_p0.9Nucleus sampling (альтернатива top_k)
repetition_penalty1.1Штраф за повторы

Рекомендации:

  • —Для фактов: temperature=0.5, top_k=30
  • —Для креатива: temperature=0.8, top_k=50
  • —Для кода: temperature=0.2, top_k=20

🏗 Архитектура

ПараметрЗначение
Vocabulary49,152 токенов
Hidden dim384
Layers32
Attention heads6
FFN dim1,024
Max length8,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%)

🌐 Браузерная поддержка

ТехнологияПоддержкаРазмерСкорость
WebGPUChrome 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