language:
- zh
- en
pipeline_tag: other
widget:
- text: "改写以下文本:\n\n"
example_title: "示例"
inference:
parameters:
# temperature: 1
# do_sample: true
max_new_tokens: 50
Hide-and-Seek隐私保护模型
GitHub仓库 / arXiv预印本 / 技术博客
简介
Hide-and-Seek是腾讯安全玄武实验室开发的隐私保护模型。其隐私保护流程由hide(隐藏)与seek(寻找)两个子任务构成:hide负责将用户输入中的敏感实体词替换为随机实体(隐私匿名化),seek负责将输出中被替换内容还原为原始文本(信息复原)。本仓库为社区开源中文版模型,基于bloom-1.1b进行词表裁剪与微调。更多技术细节请参阅技术博客。
我们已在手机和笔记本电脑完成部署测试。NF4量化后,纯CPU环境下实测推理速度:MacBook M2达180-200 tokens/秒,MacBook M1达110-130 tokens/秒,Pixel 8 Pro手机达20-30 tokens/秒。当前原生支持文本润色、摘要生成、翻译、阅读理解和文本分类任务,并支持Zero Shot模式的自定义任务扩展。
演示视频:
- MacBook M2演示:
- Pixel 8 Pro演示:
Colab演示与环境依赖
为简化环境配置,我们提供Colab Notebook演示。基础依赖如下,实际部署时可能需要设备适配:
pip install torch==2.1.0+cu118
pip install transformers==4.35.0
快速开始
hide匿名化示例:
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("SecurityXuanwuLab/HaS-820m")
model = AutoModelForCausalLM.from_pretrained("SecurityXuanwuLab/HaS-820m").to('cuda:0')
hide_template = """<s>改写以下文本:%s\n\n"""
original_input = "张伟用苹果(iPhone 13)换了一箱好吃的苹果。"
input_text = hide_template % original_input
inputs = tokenizer(input_text, return_tensors='pt').to('cuda:0')
pred = model.generate(**inputs, max_length=100)
pred = pred.cpu()[0][len(inputs['input_ids'][0]):]
hide_input = tokenizer.decode(pred, skip_special_tokens=True)
print(hide_input)
seek摘要还原示例:
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("SecurityXuanwuLab/HaS-820m")
model = AutoModelForCausalLM.from_pretrained("SecurityXuanwuLab/HaS-820m").to('cuda:0')
seek_template = "转换文本:\n%s\n\n%s\n\n转换文本:\n%s\n\n"
hide_input = "前天,'2022北京海淀·颐和园经贸合作洽谈会成功举行,各大媒体竞相报道了活动盛况,小李第一时间将昨天媒体报道情况进行了整理。人民日报 中国青年网 国际联合报 北京商报 消费者观察报 上海晚报 杭州日报 海峡晚报 北京日报 北京市电视一台?北京新闻 人民网 手机雅虎网 网易北京 长三角经济网 新京网 中国农业新闻网 北京圆桌 居然有这么多!还有部分媒体将在未来一周陆续发稿,为经洽会点!为海淀点!阅读投诉阅读精选留言加载中以上留言由公众号筛选后显示了解留言功能详情"
hide_output = "2022北京海淀·颐和园经贸合作洽谈会成功举办,各大媒体广泛报道"
original_input = "昨天,’2016苏州吴中·太湖经贸合作洽谈会成功举行,各大媒体竞相报道了活动盛况,小吴第一时间将今天媒体报道情况进行了整理。新华社 中国青年报?中青在线 香港大公报?大公网 香港商报 消费者导报 扬子晚报 江南时报 苏州日报 姑苏晚报 城市商报 苏州广电一套?苏州新闻 新华网 手机凤凰网 网易苏州 长三角城市网 新苏网 中国商务新闻网 苏州圆桌 居然有这么多!还有部分媒体将在今后几天陆续发稿,为经洽会点!为吴中点!阅读投诉阅读精选留言加载中以上留言由公众号筛选后显示了解留言功能详情"
input_text = seek_template % (hide_input, hide_output, original_input)
inputs = tokenizer(input_text, return_tensors='pt').to('cuda:0')
pred = model.generate(**inputs, max_length=512)
pred = pred.cpu()[0][len(inputs['input_ids'][0]):]
original_output = tokenizer.decode(pred, skip_special_tokens=True)
print(original_output)
完整隐私保护流程示例(需自备OpenAI API token):
from hideAndSeek import *
tokenizer = AutoTokenizer.from_pretrained("SecurityXuanwuLab/HaS-820m")
model = AutoModelForCausalLM.from_pretrained("SecurityXuanwuLab/HaS-820m").to('cuda:0')
original_input = "华纳兄弟影业(Warner Bro)著名的作品有《蝙蝠侠》系列、《超人》系列、《黑客帝国》系列和《指环王》系列。目前华纳未考虑推出《蝙蝠侠》系列新作。"
print('原始输入:', original_input)
hide_input = hide(original_input, model, tokenizer)
print('匿名输入:', hide_input)
prompt = "将以下文本翻译为英文:\n %s\n" % hide_input
hide_output = get_gpt_output(prompt)
print('匿名输出:', hide_output)
original_output = seek(hide_input, hide_output, original_input, model, tokenizer)
print('原始输出:', original_output)
性能测试
以GPT-3.5为API、DeepL为参照,中译英任务测试结果如下(NF4量化)。第一行为无保护直接翻译,第二行为本系统保护后翻译。数据显示本系统在较小精度损失下有效保护隐私,我们将持续优化模型效果。
设置 |
ROUGE-1 |
ROUGE-2 |
ROUGE-L |
BLEU-2 |
BLEU-4 |
METEOR |
无保护 |
60.80 |
33.54 |
54.96 |
79.85 |
67.17 |
53.03 |
HaS保护 |
57.37 |
31.60 |
51.92 |
72.72 |
61.24 |
48.77 |
引用
@misc{chen2023hide,
title={Hide and Seek (HaS): A Lightweight Framework for Prompt Privacy Protection},
author={Yu Chen and Tingxin Li and Huiming Liu and Yang Yu},
year={2023},
eprint={2309.03057},
archivePrefix={arXiv},
primaryClass={cs.CR}
}