这个项目能做什么
Antiserum 将其定义为训练数据的“杀毒软件”:一个能够标记文本数据集中潜在毒化内容的本地扫描器,以及一个共享的已确认签名库。该仓库即为产品本身,不设登录机制,也不提供托管的扫描服务。公共文档通过 GitHub Pages 提供,但该网站仅记录 CLI 的使用方法,并不进行扫描、判定或托管语料库。
该项目旨在解决一个预训练问题:数据集是否安全可用于学习?在这种语境下,“安全”意味着混合数据中不包含隐藏触发器、协同标签翻转、重复转储或其他植入行(这些行在模型记忆它们之前可能看起来很干净)。该工具基于 Python 3.10+,可通过 PyPI 使用 pip install antiserum 安装,从而启用 antiserum 命令。本地扫描不使用网络,不需要 API 密钥,也不下载数据集。它可以扫描 JSONL、CSV、JSON、纯文本及其 gzip 压缩版本文件夹,以及本地 Hugging Face 缓存或已下载的数据集路径。Arrow 和 Parquet 分片则需要可选的额外组件。
扫描器分为三层。固有层(innate layer)在本地机器上运行,包括对稀有 n-gram、标签翻转、近副本转储、超出 Jaccard 范围的释义族、长度和熵峰值、签名库命中、隐藏 Unicode 控制符以及混合脚本令牌的检查。自适应层(adaptive layer)是一个公开的准则,人类或代理可以通过该准则将标记的内容标记为毒化、垃圾或误报。记忆层(memory layer)是本地签名库及参考语料库。带日期的包发布记录在变更日志中,扫描过程会生成一份收据,其中包含数据集哈希、扫描器版本、包标识、标记以及确认的命中项。
记录在案的检查项包括:触发 n-gram、标签翻转、重复注入、释义过重、统计离群值、签名命中、指令覆盖、隐藏 Unicode 和混合脚本。某些检查始终需要人工确认,而其他检查则可能具有初步的垃圾或误报分类。用户可以仅运行选定的检查或跳过某些检查,收据会记录运行了哪些检查,以便遗漏项可见。
扫描行为被刻意设计为本地且有界的。默认上限为 25,000 行或 128 MiB 源文件。较大的转储文件在达到上限时会停止,在收据中记录截断情况,并以退出码 3 退出而非耗尽内存。allow-truncated 选项可以让故意抽样的扫描保持退出码 0,但收据仍会显示已截断。退出码用于区分:无失败标记的完成扫描、达到或超过 fail-on 阈值的标记、使用或 I/O 错误以及截断。Fail-on 可设置为 any、high 或 never。对于相同的文件夹字节和标记,收据具有确定性,且可以通过 diff 命令将保存的基准收据与新收据进行比较而无需重新扫描。该工具可本地输出 JSON、SARIF、HTML、CSV 和 Markdown 报告。
配置可以放置在本地的 antiserum.toml 文件中,命令行标记可覆盖文件设置。allowlist.jsonl 文件可以抑制已知的误报,且收据仍会记录白名单路径和哈希,以确保抑制行为不会被悄悄隐藏。确认工作流使用命令来判定标记、处理剩余项、将误报添加到本地白名单,并提议签名行和 pull-request 正文。确认的毒化内容将成为公共签名,供未来的扫描匹配。
该仓库包含一个用于两分钟演示的玩具语料库,以及一个包含数百个植物样本且大部分干净的参考语料库。make reproduce 命令会扫描参考混合数据,如果在检测中遗漏了植入行,则以非零状态退出。测试包括 linting、pytest 覆盖率、field-hunt 固件以及针对阈值的单项检查评估。GitHub Action 可以在调用者运行器上运行 CLI,生成收据和 SARIF 产物,并可选地上传 SARIF 进行代码扫描。CI 示例展示了如何根据收据标记或严重程度使作业失败。
README 明确了其范围。Antiserum 不是运行时提示词防火墙、模型文件或 pickle 恶意软件扫描器、数据质量或标签错误工具、权重级后门反转器,也不是图像毒化生成器。当前版本仅支持文本数据集扫描。仓库中记录了诚实的覆盖范围、威胁模型、field-hunt 笔记和定位。该项目采用 MIT 许可,作为第 11-12 周的状态展示,包含可运行的 CLI、检查项、确认循环、玩具演示、参考语料库、签名库和收据。
评论
0 评分人数达到10人后显示
登录后参与讨论。