soumikbhatta/rekt-finetune
GitHub: soumikbhatta/rekt-finetune
从 rekt.news 抓取 DeFi 漏洞利用报告并构建结构化数据集,用于在 Apple Silicon 上微调 Qwen 模型以获得链上安全分析能力。
Stars: 0 | Forks: 0
# rekt-finetune
从 [rekt.news](https://rekt.news) 抓取每一篇 DeFi 漏洞利用事后分析,并通过 MLX-LM LoRA 在 Apple Silicon 上对 Qwen3.5-2B 进行微调。
## 功能说明
1. **抓取** rekt.news 上约 200-300 篇漏洞利用事后分析(仅限 `-rekt` slug 文章)
2. **提取** 元数据:标题、日期、标签、ETH 地址、交易哈希、损失金额
3. **准备** 用于补全式微调的 JSONL 数据集
4. **微调** Qwen3.5-2B(或 4B),在 Apple Silicon 上通过 MLX-LM 使用 LoRA
**Mac 安全提示:** MLX 运行在 Apple Silicon 的统一内存上 — 这与运行浏览器或 Xcode 一样。没有过热风险。Ctrl+C 可以随时停止训练。
## 环境要求
- macOS on Apple Silicon (M1/M2/M3/M4)
- Python 3.10+
## 设置(一次性)
```
git clone
cd rekt-finetune
bash setup.sh
```
这将创建一个 `.venv/` — 不会影响你的全局 Python 环境。
## 第一步 — 抓取数据
```
source .venv/bin/activate
python scraper/scrape_rekt.py
```
进度输出:
```
Phase 1 — Collecting exploit article links from 40 pages...
Page 00/39 — 11 new exploit links (11 total)
...
Phase 2 — Scraping articles...
[ 1/241] Scraped poly-network-rekt (8,432 chars, 2 addresses found)
[ 2/241] Scraped ronin-rekt (12,104 chars, 5 addresses found)
...
Done. 238/241 articles scraped successfully.
```
输出文件:
- `data/raw/YYYY-MM-DD_slug.txt` — 每篇文章一个文件
- `data/all_addresses.csv`
- `data/all_tx_hashes.csv`
- `data/rekt_exploits_dataset.zip`
## 第二步 — 准备训练数据
```
python prepare/convert_to_jsonl.py
```
输出文件:
- `data/finetune/train.jsonl` (90%)
- `data/finetune/valid.jsonl` (10%)
## 第三步 — 微调
```
bash finetune/train.sh
```
默认配置:`Qwen3.5-2B-4bit`,1000 次迭代,batch size 为 4,LoRA rank 应用于 16 层。
若要改用 4B 模型,请编辑 `finetune/lora_config.yaml`:
```
model: mlx-community/Qwen3.5-4B-4bit
```
## 第四步 — 测试推理
```
mlx_lm.generate \
--model mlx-community/Qwen3.5-2B-4bit \
--adapter-path adapters/ \
--prompt "Title: Euler Finance Rekt
"
```
## 目录结构
```
rekt-finetune/
├── setup.sh # one-time setup
├── requirements.txt
├── scraper/
│ └── scrape_rekt.py # Playwright scraper
├── data/
│ ├── raw/ # .txt files (gitignored)
│ ├── finetune/ # JSONL (gitignored)
│ ├── all_addresses.csv # gitignored
│ └── all_tx_hashes.csv # gitignored
├── prepare/
│ └── convert_to_jsonl.py
└── finetune/
├── lora_config.yaml # tweak model/iters here
└── train.sh
```
## 调优建议
| 需求 | 修改方式 |
|------|--------|
| 更快迭代 | 将 `iters` 降至 200-500 |
| 更高质量 | 使用 `Qwen3.5-4B-4bit` |
| 更强表现力 | 将 `lora_layers` 增加到 32 |
| 恢复训练 | 在 train.sh 中添加 `--resume-adapter-file adapters/adapters.npz` |
标签:AI安全, Apple Silicon, Chat Copilot, DeFi, LLM, LoRA, MLX, M系列芯片, Python, Qwen, Unmanaged PE, Web3, 事后分析, 加密货币, 区块链安全, 大模型微调, 攻击地址提取, 数据集构建, 无后门, 智能合约, 特征检测, 知识提取, 结构化数据, 网络安全, 逆向工具, 隐私保护