HaS-820m 是腾讯安全玄武实验室开发的隐私保护大模型(Hide-and-Seek):以 bigscience/bloom-1b1 为底模,经词表裁剪(46145 词表)与微调得到(750.8M 参数,24 层 / hidden 1536 / 16 heads)。隐私保护流程由两个子任务组成:
原生支持润色、摘要、翻译、阅读理解、文本分类等 NLP 任务,并支持 Zero Shot 自定义扩展任务;经 NF4 量化后可在笔记本/手机端本地运行。
原始模型:SecurityXuanwuLab/HaS-820m(Apache-2.0) 论文:arXiv:2309.03057 技术博客:腾讯安全玄武实验室
加载方式:标准 transformers API(AutoModelForCausalLM + AutoTokenizer,BLOOM 架构)。checkpoint 为 fp16 存储,本仓库以 fp32 加载保证双端公平对比。
适配方案(确定性对比路径):完整生成含随机采样,跨端不可复现。本仓库采用 teacher-forcing 前向:3 条中文任务 prompt(润色/翻译/摘要)一次前向得到因果语言模型 logits,双端对比 cos_sim 与 next-token argmax 一致率——完整验证加载路径与计算图,输入完全一致、结果可复现。
# 1. 克隆仓库
git clone https://gitcode.com/weasonlee/HaS-820m.git
cd HaS-820m
# 2. 安装依赖
pip install -r requirements.txt
# 3. 下载权重到 models/(已 .gitignore 排除;pytorch_model.bin ~1.5GB)
mkdir -p models
HF_ENDPOINT=https://hf-mirror.com HF_HUB_DOWNLOAD_TIMEOUT=120 python -c "
from huggingface_hub import snapshot_download
snapshot_download('SecurityXuanwuLab/HaS-820m', local_dir='models')"
# 4. 推理(NPU,teacher-forcing 对比路径)
python inference.py --device npu
# 或 CPU
python inference.py --device cpu$ python inference.py --device npu
torch.npu.is_available() = True
torch.npu.device_count() = 2
[info] device = npu:0, torch = 2.9.0+cpu
[load] BloomForCausalLM (HaS-820m): 750.8M params, vocab=46145, layers=24
[info] 3 Chinese task prompts, max_len = 34
[time] run 0: 18 ms
[time] avg: 17 ms (3 prompts, batch)
[out ] logits: shape=(3, 34, 46145) mean=-0.0841 std=2.1873
[out ] prompt0 next-token: '我' (id=685)
[out ] prompt1 next-token: '该' (id=1811)
[out ] prompt2 next-token: '例如' (id=5517)
===== CPU vs NPU comparison (causal LM logits (3, 34, 46145)) =====
cos_sim = 0.99999998
max_abs_err = 7.765e-03
mean_abs_err = 3.007e-04
next-token argmax agreement = 100.00%输入:3 条中文任务风格 prompt(润色/翻译成英文/摘要,取自模型卡任务类型),padding 对齐后批量前向;CPU 与 NPU 输入 token 完全一致。
| 指标 | 值 |
|---|---|
| cos_sim(3×34×46145 因果 LM logits) | 0.99999998 |
| max_abs_err / mean_abs_err | 7.765e-03 / 3.007e-04 |
| next-token argmax 一致率 | 100.00% |
| 单次批量耗时(3 prompt,含同步,3 次均值) | NPU ~17 ms vs CPU ~2900 ms(~170× 加速) |
结论:NPU(Ascend 910, torch-npu 2.9.0.post1)与 CPU 的因果 LM logits 一致性达 0.9999999(fp32 正常差异水平),全部位置的 next-token 预测完全一致(100%),适配成功。
├── inference.py # 推理脚本(teacher-forcing logits + NPU/CPU 对比)
├── readme.md
├── requirements.txt
├── models/ # 权重目录(需自行下载,已 gitignore)
├── assets/ # 运行截图
│ ├── agent_workflow.png
│ ├── npu_device_call.png
│ └── model_result.png
└── results/ # 每次运行的 logits/耗时产物(gitignore)Chen L. et al. "Hide and Seek: An LLM-based Privacy Protection Framework." arXiv:2309.03057 (2023).