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绕过, 逆向工具, 静态检查