--- 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