Text Classification
Transformers
Safetensors
Chinese
spam-detection
advertising-detection
ad-classification
chinese
modernbert
mmbert
multi-task
four-head
Instructions to use x6nux/laya-ad with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use x6nux/laya-ad with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-classification", model="x6nux/laya-ad")# pip install -U transformers accelerate # Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("x6nux/laya-ad", device_map="auto") - Notebooks
- Google Colab
- Kaggle
File size: 2,601 Bytes
e2492ec 71dabc7 f8d2531 71dabc7 dd18e84 71dabc7 dd18e84 71dabc7 f8d2531 e2492ec f8d2531 e2492ec 71dabc7 f8d2531 71dabc7 dd18e84 71dabc7 dd18e84 71dabc7 dd18e84 71dabc7 dd18e84 71dabc7 dd18e84 71dabc7 dd18e84 f8d2531 71dabc7 f8d2531 71dabc7 dd18e84 71dabc7 f8d2531 71dabc7 dd18e84 f8d2531 71dabc7 dd18e84 f8d2531 71dabc7 f8d2531 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | # laya-ad v2.2 代码
单模型四头结构(二分类 + 7 类 kind + scope + severity)的加载、推理与训练代码。模型权重在仓库根目录的精度子目录:`fp32/`、`fp16/`、`bf16/`、`fp8/`、`int8/`、`int4/`。
## 文件
| 文件 | 说明 |
|---|---|
| `scripts/dual_head_model.py` | `DualHeadModernBert` 四头结构 + `load_dual_head_any()`(自动识别 fp32/fp16/bf16/fp8/int8/int4) |
| `scripts/predict_dual_head.py` | CLI 推理:输出 is_ad / kind / scope / severity |
| `scripts/train_multi_head.py` | 四头训练(含 `--freeze_encoder --freeze_binary --freeze_kind --ad_only` 头级微调) |
| `scripts/build_optimized_dataset.py` | 合并/去重/广告过采样/稀有 kind/severity 补齐(`--gmeow` 接入 gmeow 封禁广告语料,`--gmeow_val_texts` 留出防泄漏 val) |
| `scripts/build_teacher_dataset.py` | teacher 清洗数据切分 |
| `scripts/build_cleaned_dataset.py` | teacher 原始输出转训练格式 |
| `scripts/clean_with_teacher.py` | jev teacher 清洗脚本(参考) |
| `scripts/eval_4head_variants.py` | 六精度变体评测 |
| `scripts/eval_v22_vs_v21.py` | 跨版本对比评测(teacher_holdout / earlier_val / gmeow_val128) |
旧的 v1.1/v2 脚本仍保留在 `scripts/` 中,供历史参考。
## 加载
```python
import sys, torch
from transformers import AutoTokenizer
sys.path.insert(0, "code/scripts")
from dual_head_model import load_dual_head_any
tok = AutoTokenizer.from_pretrained("bf16")
model = load_dual_head_any("bf16", device="cpu", dtype=torch.bfloat16)
```
## 推理
```bash
cd code/scripts
python predict_dual_head.py --model ../../bf16 --text "日入500+,宝妈学生均可,私聊领教程"
```
输出字段:
```json
{"is_ad": true, "p_ad": 0.9999, "kind": "scam", "kind_probs": {...},
"scope": "message", "scope_probs": {...},
"severity_score": 2.96, "severity_probs": {...}}
```
- `scope`:account / message
- `severity_score`:0–3 的期望值(服务端 Jev API 同口径)
## 数据格式(训练脚本参考)
四头训练数据:
```json
{"text": "...", "label_bin": 0, "label_kind": 5, "label_scope": 0, "label_sev": 3}
```
- `label_bin`:0=ad,1=normal
- `label_kind`:0..6(crypto/gambling/porn/porn_bait/promo/scam/spam_flood)或 -100
- `label_scope`:0=account,1=message,-100 忽略
- `label_sev`:0..3,-100 忽略(normal 的 scope/severity 由二分类 gate 处理)
`build_optimized_dataset.py` / `clean_with_teacher.py` 的输入路径是内部数据布局,公开仓库只保留脚本作为方法参考,不附带数据。
|