QED-75M — языковая модель (384 hidden, 32 слоя, 75M параметров), оптимизированная для веб-деплоя.
Модель обучена на чат-формате. Для лучших результатов используйте:
1import { AutoTokenizer, AutoModelForCausalLM } from '@xenova/transformers';
2
3// Загрузка модели
4const tokenizer = await AutoTokenizer.from_pretrained('levossadtchi/QED-75M_web');
5const model = await AutoModelForCausalLM.from_pretrained('levossadtchi/QED-75M_web', {
6 quantized: true, // Использовать int8 квантование
7 dtype: 'q8',
8 device: 'webgpu', // или 'wasm' для CPU
9});
10
11// Генерация
12const prompt = '<|user|>What is 2+2?<|assistant|>';
13const inputs = await tokenizer(prompt, { return_tensors: 'pt' });
14
15const outputs = await model.generate({
16 ...inputs,
17 max_new_tokens: 128,
18 temperature: 0.7,
19 top_k: 40,
20 do_sample: true,
21 eos_token_id: tokenizer.eos_token_id,
22 pad_token_id: tokenizer.pad_token_id,
23});
24
25const text = tokenizer.decode(outputs[0], { skip_special_tokens: false });
26console.log(text);
1import * as ort from 'onnxruntime-web';
2
3// Загрузка
4const session = await ort.InferenceSession.create('model.onnx');
5
6// Инференс
7const inputIds = [1, 15826, 15, 638]; // токены
8const tensor = new ort.Tensor('int64', BigInt64Array.from(inputIds.map(BigInt)), [1, inputIds.length]);
9const { logits } = await session.run({ input_ids: tensor });
10
11// Greedy decoding
12const nextToken = logits.data.reduce((maxIdx, val, idx) => val > logits.data[maxIdx] ? idx : maxIdx, 0);
1pip install onnxruntime-tools
2
3python -c "
4from onnxruntime.quantization import quantize_dynamic, QuantType
5quantize_dynamic('model.onnx', 'model_quantized.onnx', weight_type=QuantType.QUInt8)
6"
1# Клонировать репозиторий
2git lfs install
3git clone https://huggingface.co/levossadtchi/QED-75M_web
4
5# Запустить локальный сервер
6cd QED-75M_web
7python -m http.server 8000
8
9# Открыть в браузере
10open http://localhost:8000/index.html