VoiceKeeper ยท KLUE-BERT ๋ณด์ด์คํผ์ฑ ๋ถ๋ฅ๊ธฐ
klue/bert-base๋ฅผ ๋ณด์ด์คํผ์ฑ/์ ์ ์ด์ง ๋ถ๋ฅ๋ก ํ์ธํ๋ํ๊ณ int8 ONNX(111 MB)๋ก ๋ด๋ณด๋ธ ๋ชจ๋ธ์
๋๋ค.
VoiceKeeper ์๋น์ค์์ LLM ํ์ ๊ณผ ๋๋ํ ์ฐ์ด๋ ๋
๋ฆฝ ์์ง์
๋๋ค (onnxruntime + tokenizers๋ง์ผ๋ก CPU ์ถ๋ก ).
ํ์ต ๋ฐ์ดํฐ
- ์๋ 48๊ฑด: ๊ธ์ต๊ฐ๋ ์ ๋ณด์ด์คํผ์ฑ ์งํด์ด ๊ณต๊ฐ ์ฌ๋ก ์ ํ์ ๋ฐ๋ผ ์์์ ์์ฑ (๊ธฐ๊ด ์ฌ์นญยท์์ ๊ณ์ขยท์๋ ์ฌ์นญยท์ค๋ฏธ์ฑยท๋์ถยทํฌ์ ๋ฑ). ํ์ต์ ์ฌ์ฉํ์ง ์๊ณ ๋ถํฌ ๋ฐ ๊ฒ์ฆ์๋ง ์ฌ์ฉ.
- ํฉ์ฑ 1,302๊ฑด: Gemini๋ก 14๊ฐ ์ฌ๊ธฐ ์ ํ ร 3 ํ์(ํตํ ์ ์ฌยท๋ฌธ์ยท์นดํก)๊ณผ 12๊ฐ ์ ์ ์ ํ์ ์์ฑ. ์ ์ OTP ๋ฌธ์, ์ํ ์ ๊ธ ์๋ฆผ, ํ๋ฐฐ ์๋ด์ฒ๋ผ ์ฌ๊ธฐ ๋จ์ด๊ฐ ๋ฑ์ฅํ๋ ์ด๋ ค์ด ์ ์ ์์ ํฌํจ.
- ํ์ต/๊ฒ์ฆ ๋ถํ ์ ํฉ์ฑ ๋ฐ์ดํฐ ์์์๋ง ์ํํ๊ณ ์์ ํด๋์ค๋ ์ค๋ฒ์ํ๋ง.
์ฑ๋ฅ
| ์ธํธ | n | ์ ํ๋ | ์ ๋ฐ๋ | ์ฌํ์จ | F1 |
|---|---|---|---|---|---|
| ํฉ์ฑ ๊ฒ์ฆ | 162 | 0.988 | 1.000 | 0.977 | 0.988 |
| ์๋(๋ถํฌ ๋ฐ) | 48 | 0.917 | 1.000 | 0.833 | 0.909 |
int8 ์์ํ ์ ํ ํ๋ฅ ํ๊ท ์ฐจ์ด 0.005. ๋์น ์ฌ๋ก๋ ์ ์คํ ๋งํฌ์ ๋์ถยทํ๊ธยท๋ฆฌ๋ฉ๋ฐฉ ์ ํ์ด์ด์ ์๋น์ค์์๋ LLM ํ์ ๊ณผ ์์๋ธํฉ๋๋ค.
์ฌ์ฉ
import numpy as np, onnxruntime as ort
from tokenizers import Tokenizer
tok = Tokenizer.from_file('tokenizer.json'); tok.enable_truncation(192)
sess = ort.InferenceSession('model.onnx', providers=['CPUExecutionProvider'])
e = tok.encode('๊ฒ์ฐฐ์ฒญ์
๋๋ค. ์์ ํ ๊ณ์ข๋ก ๋์ ์ฎ๊ธฐ๊ณ ๊ฐ์กฑ์๊ฒ๋ ๋งํ์ง ๋ง์ธ์.')
logits = sess.run(['logits'], {'input_ids': [e.ids], 'attention_mask': [e.attention_mask], 'token_type_ids': [e.type_ids]})[0][0]
p = np.exp(logits - logits.max()); print('phishing prob', p[1] / p.sum())
์ฐธ๊ณ ์ฉ ์ ์์ด๋ฉฐ ๋ณด์ ๋ ์ฌ๊ธฐ ํ๋ฅ ์ด ์๋๋๋ค. ์ค์ ์ ๊ณ ์๋ฌธ ๋ฐ์ดํฐ๊ฐ ํ๋ณด๋๋ฉด scripts/ml/train_klue.py๋ก ์ฌํ์ตํ ์ ์์ต๋๋ค.
{
"base_model": "klue/bert-base",
"task": "voice-phishing vs benign (binary)",
"max_len": 192,
"epochs": 3,
"batch": 16,
"lr": 3e-05,
"train_rows": 1232,
"train_rows_note": "synthetic only, class-balanced by oversampling",
"val_synthetic": {
"n": 162,
"accuracy": 0.988,
"precision": 1.0,
"recall": 0.977,
"f1": 0.988
},
"seed_holdout_ood": {
"n": 48,
"accuracy": 0.917,
"precision": 1.0,
"recall": 0.833,
"f1": 0.909,
"note": "hand-written FSS-pattern seeds, never used in training"
},
"onnx_int8_mean_abs_diff_vs_fp32": 0.0054,
"onnx_size_mb": 111.4,
"cpu_latency_48_texts_s": 0.92,
"data": {
"seed": 48,
"synthetic": 1302,
"generator": "gemini-3.6-flash / 3.5-flash-lite",
"hard_negatives": "real OTP, bank, parcel, government notices"
},
"trained_at": "2026-09-22 01:25",
"labels": {
"0": "benign",
"1": "phishing"
}
}
- Downloads last month
- 16
Model tree for hyuckpa03/voicekeeper-klue-bert
Base model
klue/bert-base