lora-audit
你的训练文件夹终于可读了。
一行命令,把 dataset/ 里那些没人看得出来的问题摊开:哪张图没有 caption、哪几条 caption 一字不差、触发词在哪张图上写错了、哪些图小得会被插值放大、混进了哪些杂物文件。
不起服务、不建数据库、不改你的文件夹结构。产出是一个能双击打开的 HTML 文件。
你的文件夹 vs 跑完之后
| 跑之前 | 跑之后 |
|---|---|
dataset/ 里 47 张图 + 47 个 .txt,长得都差不多 |
每张图的 caption、来源、尺寸一眼可见 |
| 「应该都打了 caption 吧」 | E001 图片没有 caption 1 张 → 直接告诉你哪张 |
| 训练完效果不对,猜是数据问题 | W002 逐图 caption 完全重复 2 张 → 变量没写进 caption |
| 不知道该改哪里 | 每条问题下面都有「怎么办」 |
那份报告是对
examples/demo-dataset/这个 13 张图的合成数据集跑出来的真产物。 你也可以自己跑:lora-audit scan examples/demo-dataset
30 秒上手
# PyPI 尚未发布,先用 git 安装(PyPI 版随后),
pip install git+https://github.com/PolinniZhong/lora-audit.git
lora-audit scan ./dataset # → ./dataset/_lora_audit/report.html
lora-audit scan ./dataset --open # 顺手打开
零依赖(Python 3.9+,只用标准库)。不需要 manifest、不需要配置文件、不需要先按任何规范整理目录。
它检查什么
| 规则 | 说明 |
|---|---|
E001 |
图片没有 caption(无同名 .txt,也没有 default_caption.txt 兜底) |
W001 |
caption 文件是空的(文件计数对得上,内容却是空的) |
W002 |
逐图 caption 完全重复(说明变量没写进去) |
W003 |
触发词不一致(同一张脸被拆到多个 token 上) |
W004 |
只用 default_caption 兜底,没有逐图变量 |
W005 |
文件名含空格 / 非 ASCII / 非常规符号 |
W006 |
有 caption 文件但没有对应图片(改名、删图的残留) |
W007 |
分辨率偏小(短边 < 512px) |
W008 |
分辨率不统一 |
W009 |
数据集规模偏离常见区间(< 15 或 > 150 张) |
W010 |
混入系统杂物文件(.DS_Store / Thumbs.db …) |
W011 |
train.txt / val.txt 指向不存在的文件 |
W012 |
验证集没有分层(全落在同一组) |
W013 |
扩展名与实际格式不符(例如 .png 里其实是 WebP) |
I001–I003 |
识别到的布局 / 分组分布 / 推定触发词 |
支持的目录结构
不要求你改结构,常见的几种都读:
dataset/ dataset/ dataset/
├── img001.png ├── img/ ├── img/01_face/a.png + a.txt
├── img001.txt │ └── 01_face/a.png + a.txt ├── cap_kohya/01_face/a.txt
└── img002.png(无 caption) └── default_caption.txt └── default_caption.txt
(kohya 平铺) (ai-toolkit / 身份块) (双 profile:变量 + 全量)
cap_kohya/ 这类镜像 caption 树会被识别为「同一批图的另一套 caption」,不会误报成孤儿文件。
kohya 的 10_名称/ 重复次数目录、按子目录分组、混合布局都能读。
我有意为之,别报(可选)
有些"告警"是你故意这么做的。比如分辨率不统一——如果你就是按分桶训练配的,
那 W008 每条都会响,而你能做的只有无视它。这种时候在数据集根放一个 .lora-audit-ignore:
# 一行一个规则 ID,# 之后写理由
W008 # 方形细节图 2048x2048 与标准格 1773x2364 并存 —— 有意分桶,非混入
豁免 ≠ 隐藏。 被豁免的规则仍然出现在报告里,只是降级为「信息」并标注「已豁免」, 理由原样展示,摘要行也会显示「已豁免 W008」。我们不会让问题静默消失——审计工具最不能干的就是这个。
这个文件完全可选:没有它时行为与过去一模一样;也不需要为使用它而学任何配置格式。
进 CI
lora-audit scan ./dataset --json - # 机读结果打到 stdout
lora-audit scan ./dataset --strict # 有警告也返回退出码 1
退出码:0 通过 · 1 发现问题 · 2 参数或 IO 错误。
文档
| 文档 | 看它来回答 |
|---|---|
| docs/PRD.md(English) | 要什么、给谁、不做什么——目标用户、核心洞察、竞争空白、需求与优先级、非目标、风险与反方观点 |
| docs/DESIGN.md(English) | 为什么这么做——六条硬约束、14 条决策(含被否掉的选项与代价)、模块边界、三层验证各自查不出什么、已知缺陷 |
| CONTRIBUTING.md | 什么样的规则会被收(六条判据 + 通过/不通过的反例) |
| CHANGELOG.md | 改了什么 |
| docs/INSTANCES.md | 真实使用记录——谁在什么数据上发现了什么、因此改了什么(「能跑」不算实例) |
边界(这些它不做,也不打算做)
- 不训练。它只读数据,不碰 kohya / ai-toolkit / OneTrainer。
- 不上传。没有任何网络请求,报告页也是纯离线的(
lora-audit verify会把这条当不变量检查)。 - 不改你的文件。不移动、不改名、不写入数据集——只多一个
_lora_audit/目录。 - 不起服务。没有端口、没有数据库、没有后台进程。
- 不做团队协作 / 权限 / 语义搜索。一个人、一个文件夹、一次审计,就这些。
开发
python3 -m unittest discover -s tests -v # 端到端自测(纯标准库)
python3 examples/make_example.py # 生成一份带已知缺陷的示例数据集
lora-audit scan examples/demo-dataset --open
node tools/browser_check.mjs <report.html> --shot out.png # 真实 Chrome 实测
lora-audit verify <report.html> # 产物不变量自检
tools/browser_check.mjs 用 CDP 驱动真实 Chrome,检查渲染、抽屉、灯箱、筛选、搜索、
主题切换和控制台报错。它不是可选项——verify 查不出「脚本报错」和「路径被双重编码」
(本仓库历史上真的漏过这两个),只有真浏览器能。
License
MIT
Metadata
Release files for lora-audit 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| lora_audit-0.1.0.tar.gz | 47.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| lora_audit-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 87.6 kB
Release files / lora_audit-0.1.0.tar.gz
| Download URL | lora_audit-0.1.0.tar.gz |
|---|---|
| Size | 47.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
cc9a8f2dfb09c9308ffdffa57b4b6fafce6c00e1bfdbed4a8b71000530a1f545
|
|
BLAKE2b-256 checksum How to use checksums |
70101e821a5d13056cf28734f68a372a86c424a866476d89e1be77a1073730ea
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.6
|
Release files / lora_audit-0.1.0-py3-none-any.whl
| Download URL | lora_audit-0.1.0-py3-none-any.whl |
|---|---|
| Size | 40.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
66bd9f5d3b2f19e7e3c243e0615891099cf460eee99172946b4ae9005ec417f0
|
|
BLAKE2b-256 checksum How to use checksums |
793465e3d946593342e2418665902e21d6ad316931a4379dc05e06905bde87be
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.6
|