privacyguard / README.md
DoreCmon's picture
Upload 10 files
0dfba1d verified
---
base_model: Qwen/Qwen2.5-3B-Instruct
library_name: peft
pipeline_tag: text-generation
tags:
- base_model:adapter:Qwen/Qwen2.5-3B-Instruct
- lora
- privacy
- pii
- text-generation
license: apache-2.0
---
# Privacy Guard — 本地隐私守护代理
基于 LoRA 微调 Qwen2.5-3B-Instruct 的任务感知 PII 脱敏模型。
## 模型概述
Privacy Guard 是一个本地隐私保护模型,能够将用户输入中的真实个人信息(姓名、手机号、邮箱、地址等)虚构化替换为假数据,同时提取任务意图生成摘要。
**核心价值**:让云端大模型既能完成任务,又看不到你的真实隐私。
## 使用方法
### 安装依赖
```bash
pip install torch transformers peft
```
### 加载模型
```python
from transformers import AutoTokenizer, AutoModelForCausalLM
from peft import PeftModel
import torch
# 加载基座模型
base_model = "Qwen/Qwen2.5-3B-Instruct"
tokenizer = AutoTokenizer.from_pretrained(base_model, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(base_model, dtype=torch.float16, trust_remote_code=True)
# 加载 LoRA adapter
model = PeftModel.from_pretrained(model, "DoreCmon/privacyguard")
model = model.eval()
```
### 推理
```python
SYSTEM_INSTRUCTION = (
"你是一个隐私保护助手。请完成以下两步:\n"
"1. 用1句话(不超过30字)精准概括用户的任务意图,不要包含任何个人信息。\n"
"2. 围绕用户任务对文本中的个人身份信息进行虚构化改写,"
"保留对任务有用的信息,弱化无关细节,确保改写后自洽且不可反推。\n\n"
"输出格式:\n【任务摘要】摘要内容\n【脱敏文本】改写后的完整文本"
)
text = "帮我写一封推荐信\n\n张伟,2017年浙大毕业,现任字节跳动高级工程师,手机13812345678"
prompt = f"### 指令:\n{SYSTEM_INSTRUCTION}\n\n### 输入:\n{text}\n\n### 输出:\n"
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
with torch.no_grad():
output_ids = model.generate(**inputs, max_new_tokens=1024, do_sample=False)
result = tokenizer.decode(output_ids[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True)
print(result)
```
### 输出示例
```
【任务摘要】用户需要为候选人撰写求职推荐信
【脱敏文本】李晨,2015年华中科技大学毕业,现任星云科技高级工程师,手机15987654321...
```
## 支持的 PII 类型
| 类型 | 原文示例 | 脱敏示例 |
|------|----------|----------|
| 姓名 | 张伟 | 李明 |
| 手机号 | 13800138000 | 13912345678 |
| 邮箱 | zhangsan@gmail.com | liming@example.com |
| 身份证号 | 110101199001011234 | 110101199205056789 |
| 地址 | 北京市朝阳区建国路88号 | 上海市浦东新区张江路66号 |
| 公司名 | 华为技术有限公司 | 星云科技有限公司 |
| 毕业院校 | 浙江大学 | 华中科技大学 |
| 订单号 | OR2024-8869 | OR2025-1234 |
## 训练数据
- 6 个场景:简历、工作邮件、客服对话、医疗病历、会议纪要
- 每场景 7 种任务指令
- 共约 2000 条训练数据
- 由 DeepSeek API 生成,经过格式校验和去重
## 训练配置
- 基座模型:Qwen/Qwen2.5-3B-Instruct
- LoRA:r=16, alpha=32, dropout=0.05
- 学习率:5e-5
- 训练轮数:3 epochs
- 精度:float16 + Gradient Checkpointing
## 评估结果
| 指标 | 值 | 说明 |
|------|-----|------|
| Task Completion | 4.69/5.00 | 云端大模型打分,86.7% 样本满分 |
| Logical Consistency | 98.8% | PII 泄漏检查通过率 |
| Avg Latency | 19.9s | 单条推理耗时(单卡) |
## 适用场景
- 用户需要把含隐私的文本发给云端大模型处理
- 需要保留任务上下文(不只是简单替换标签)
- 对隐私保护有较高要求
## 局限性
- 地址替换模式可能过于规则(城西→城东)
- 不支持所有语言(主要针对中文)
- 推理速度较慢(约 20 秒/条)
## 许可证
Apache 2.0