omar07ibrahim/peftlint
GitHub: omar07ibrahim/peftlint
peftlint 是一个静态兼容性检查工具,用于在不加载模型权重的前提下,提前验证 LoRA adapter 与基础模型之间的结构匹配性。
Stars: 0 | Forks: 0
# peftlint
对 LoRA adapter 的静态兼容性检查,无需导入模型代码
或分配模型张量。
PEFT adapter 足够小,可以随意移动,但它并非完全独立的。
它依赖于特定的基础模型拓扑、词汇表、目标
模块集合,并且通常依赖一个未指定的修订版本。这种不匹配可能
一直不可见,直到加载了一个庞大的基础模型。
构建 `peftlint` 的目的是将这些失败转移到有边界的预检步骤中。
它会在推理或部署开始之前,协调 adapter 配置、safetensors 清单和固定的
基础模型清单。
## 首个支持的功能切片
第一套规则集特意设计得很窄:
- 在 PEFT 0.19.1 下解释的 Hugging Face PEFT LoRA checkpoint;
- `adapter_config.json` 加上 `adapter_model.safetensors`;
- 标准的线性层和 embedding 目标;
- 不可变的基础模型修订版本;
- 对加载和 adapter 热替换分别给出判定。
每个判定都有三种可能的状态:
- **compatible** — 每个必需的规则都已评估并通过;
- **incompatible** — 发现了具体的结构性矛盾;
- **unknown** — 产物需要静态证据无法证明的运行时验证。
自定义模型代码、未知的张量命名、融合投影、不支持的
配置功能以及未分类的张量都会产生 `unknown`,而绝不会是
敷衍的误报通过。
可执行扫描器正在积极开发中。当前仓库
在 [LoRA v1 规则集](docs/ruleset-v1.md)中定义了兼容性边界和证据要求。
## 为什么静态检查是可行的
Safetensors 将张量名称、形状、dtypes 和字节偏移量放置在一个有边界的
JSON 头部中。对于远程产物,可以使用 HTTP range
请求来获取该头部,而无需下载张量 payload。基础模型索引会定位
相关的分片;它们有边界的头部提供了维度检查所需的
形状和 dtypes。仅凭索引本身不会被
视为形状证据。
核心扫描器不会导入 `transformers`、`peft`、模型仓库或
`trust_remote_code`。当静态结果为
`unknown` 时,运行时执行仍然是明确的后续验证
步骤。
## 参考
- [PEFT 0.19.1 发布](https://github.com/huggingface/peft/releases/tag/v0.19.1)
- [PEFT 0.19.1 checkpoint 格式](https://github.com/huggingface/peft/blob/v0.19.1/docs/source/developer_guides/checkpoint.md)
- [PEFT 0.19.1 热替换](https://github.com/huggingface/peft/blob/v0.19.1/docs/source/package_reference/hotswap.md)
- [Safetensors 元数据解析](https://huggingface.co/docs/safetensors/metadata_parsing)
- [Hugging Face 文件元数据](https://huggingface.co/docs/huggingface_hub/package_reference/file_download)
## 许可证
Apache-2.0。
标签:DLL 劫持, LoRA, PEFT, SOC Prime, 人工智能, 大语言模型, 开发工具, 模型部署, 用户模式Hook绕过, 逆向工具, 静态检查