moonshine-tiny-uk-onnx / quantize.py
vasyadeva's picture
Upload folder using huggingface_hub
66d1170 verified
Raw
History Blame Contribute Delete
1.39 kB
import json, os, time, numpy as np, onnx, onnxruntime as ort
from onnxruntime.quantization import quantize_dynamic, QuantType
from transformers import AutoProcessor, AutoConfig
OUT = '/work/out'
for name in ('encoder', 'decoder'):
src, dst = f'{OUT}/{name}.onnx', f'{OUT}/{name}.int8.onnx'
quantize_dynamic(src, dst, weight_type=QuantType.QInt8, extra_options={'MatMulConstBOnly': True})
print(f'{name}: fp32 {os.path.getsize(src) + os.path.getsize(src + ".data" if os.path.exists(src + ".data") else src):,}'
f' -> int8 {os.path.getsize(dst):,} bytes')
# tokens.txt for a Dart-side decoder: id -> piece, one per line, tab separated
proc = AutoProcessor.from_pretrained('moonshine-ai/moonshine-tiny-uk')
tok = proc.tokenizer
vocab = tok.get_vocab()
with open(f'{OUT}/tokens.txt', 'w', encoding='utf-8') as f:
for piece, idx in sorted(vocab.items(), key=lambda kv: kv[1]):
f.write(f'{idx}\t{piece}\n')
print('tokens.txt:', len(vocab), 'entries,', os.path.getsize(f'{OUT}/tokens.txt'), 'bytes')
cfg = AutoConfig.from_pretrained('moonshine-ai/moonshine-tiny-uk')
json.dump({'decoder_start_token_id': cfg.decoder_start_token_id, 'eos_token_id': cfg.eos_token_id,
'bos_token_id': cfg.bos_token_id, 'vocab_size': cfg.vocab_size, 'sampling_rate': 16000},
open(f'{OUT}/decode_config.json', 'w'), indent=2)
print('decode_config.json written')