Instructions to use DoreCmon/privacyguard with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use DoreCmon/privacyguard with PEFT:
from peft import PeftModel from transformers import AutoModelForCausalLM base_model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2.5-3B-Instruct") model = PeftModel.from_pretrained(base_model, "DoreCmon/privacyguard") - Notebooks
- Google Colab
- Kaggle
| 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 | |