Views
No views yet

Update @ 2025.10.19: First release of Spam filter XAI
| Parameter | Value | Description |
|---|---|---|
| Quantization | 4-bit | Load pretrained model in 4-bit |
| Adapter | QLoRA | Low-rank adaptation method |
| LoRA Rank (r) | 16 | Rank of low-rank matrices |
| LoRA Alpha | 32 | Scaling factor for LoRA |
| LoRA Dropout | 0.05 | Dropout rate for LoRA layers |
| Target Modules | attention + MLP | Applied to q,k,v,o,up,down,gate projections |
| Sequence Length | 1500 | Maximum input sequence length |
| Sample Packing | True | Pack multiple samples into one sequence |
| Micro Batch Size | 10 | Batch size per GPU |
| Gradient Accumulation | 15 | Effective batch size: 150 |
| Number of Epochs | 5 | Total training epochs |
| Learning Rate | 2e-5 | Peak learning rate |
| LR Scheduler | Cosine | Cosine annealing schedule |
| Warmup Steps | 10 | Learning rate warmup steps |
| Optimizer | AdamW (8-bit) | 8-bit quantized AdamW |
| Weight Decay | 0.0 | L2 regularization |
| Precision | BF16 | Brain floating point 16 |
| Gradient Checkpointing | True | Save memory by recomputing gradients |
| Flash Attention | True | Optimized attention kernel |
vllm APIpipeline as follows.vllm serve Devocean-06/Spam_Filter-gemma1from openai import OpenAI
2
3client = OpenAI(
4 base_url="model-endpoint",
5 api_key="api-key"
6)
7
8SYSTEM_PROMPT = """당신은 스팸 문자로 판정한 근거를 생성하는 대형 언어 모델입니다.
9아래 기준에 따라 스팸여부 판정의 근거를 간단명료하게 한 문장으로 작성해 주세요. 출력 포맷은 XAI 설명에 적합하도록 일관성 있게 템플릿 형식으로 고정되어야 하며, 스팸 여부 및 그 근거를 명쾌하게 제시해야 합니다.
10
11**1. 판정 근거(한 문장, 템플릿):**
12- **개인 정보 요구:** 신분증, 비밀번호, 카드 번호 등 개인 정보를 요구했기 때문입니다.
13- **기타 특이사항:** 위 항목 외에 스팸으로 의심되는 다른 패턴이 있습니다.
14- **발신자/수신자:** 발신 번호가 일반적이지 않거나 불분명하기 때문입니다.
15- **내용의 목적:** 금융 상품, 대출, 도박, 투자, 불법 복제 등의 홍보나 권유가 포함되어 있기 때문입니다.
16- **심리적 압박:** 긴급성, 공포, 호기심을 유발하여 즉각적인 행동을 유도했기 때문입니다. (예: "기간 한정", "지금 즉시", "클릭하지 않으면 불이익")
17- **링크/URL:** 일반적이지 않은 짧은 URL, 단축 URL 또는 의심스러운 링크가 포함되어 있기 때문입니다.
18
19**2. 필수 조건**
20- 반드시 출력 형식에 따라서 [스팸 판정 이유] 템플릿을 사용해야 합니다.
21- 스팸으로 판정한 이유에 대해서 구체적인 이유로 100자 이상으로 설명해야 합니다.
22- 반드시 위 판정 근거를 먼저 언급한 뒤에 출력 형식에 맞게 스팸 판정 이유를 생성해야 합니다.
23- 스팸 판정 이유 생성 시, 위 스팸 문자는 ~~ 으로 시작해야합니다.
24- 그리고 전제조건은 모두 스팸 문자로 분류된 형식이니 스팸이 아니라고 언급하면 안됩니다.
25
26### 출력 형식 예시
27- 판정 근거 : 개인정보 요구
28- 스팸 판정 이유: 위 스팸 문자는 개인정보를 요구하는 스팸으로 아파트 분양 및 부동산 투자 권유가 포함되어 있으며, 긴급성을 강조하여 즉각적인 행동을 유도하고 있습니다."""
29
30response = client.chat.completions.create(
31 model="Devocean-06/Spam_Filter-gemma",
32 messages=[
33 {"role": "system", "content": SYSTEM_PROMPT},
34 {"role": "user", "content": user_message}
35 ],
36 temperature=0.7,
37 max_tokens=2048
38 )
39print(response.choices[0].message.content)
401- 판정 근거: 내용의 목적
2- 스팸 판정 이유: 위 스팸 문자는 금융 상품과 대출 관련 권유 내용을 포함하고 있으며,
3 ‘지금 바로’, ‘즉시 신청’과 같은 심리적 압박 어구를 사용하여 수신자의 행동을 유도하고 있습니다.1@misc{Devocean-06/Spam_Filter-gemma,
2 author = { {SK Devoceon-06 On device LLM} },
3 title = { Spam filter & XAI },
4 year = 2025,
5 url = { https://huggingface.co/Devocean-06/Spam_Filter-gemma },
6 publisher = { Hugging Face }
7}