AKIVA-AI/toolkit-ml-provenance

GitHub: AKIVA-AI/toolkit-ml-provenance

为机器学习制品生成带完整性验证的确定性溯源清单,支持可选的加密签名,满足 ML 模型的 SBOM 和可复现性需求。

Stars: 1 | Forks: 0

# 工具包 ML 溯源与 SBOM 为数据集、训练配置、代码快照和模型权重等制品生成确定性 JSON 清单("ML SBOM")。支持 CycloneDX 1.5 标准 SBOM 格式。通过重新哈希引用的制品来验证其完整性。 ## 安装 ``` pip install -e ".[dev]" ``` 如需签名支持: ``` pip install -e ".[signing]" ``` ## CLI 参考 ### 全局选项 | 标志 | 描述 | |------|-------------| | `--version` | 显示版本并退出 | | `--verbose`, `-v` | 启用 DEBUG 级别日志输出到 stderr | | `--log-format {text,json}` | 日志输出格式(默认:text) | ### `generate` -- 创建溯源清单 ``` toolkit-mlsbom generate --root --out --include [--meta key=value] [--format {json,cyclonedx}] ``` | 参数 | 必填 | 描述 | |----------|----------|-------------| | `--root` | 否 | 根目录(默认:`.`) | | `--out` | 是 | 输出清单文件路径 | | `--include` | 是 | 文件匹配模式(可重复) | | `--meta` | 否 | 元数据键值对(可重复) | | `--format` | 否 | 输出格式:`json`(默认)或 `cyclonedx`(CycloneDX 1.5 JSON) | **示例:** ``` # 为模型权重和配置生成 manifest toolkit-mlsbom generate --root ./my-model \ --out manifest.json \ --include "weights/*.safetensors" \ --include "configs/*.json" \ --meta model=gpt-2 \ --meta version=1.0 # 生成 CycloneDX SBOM toolkit-mlsbom generate --root ./my-model \ --out sbom.cdx.json \ --include "**/*" \ --format cyclonedx ``` ### `verify` -- 根据清单验证文件完整性 ``` toolkit-mlsbom verify --manifest [--signature --public-key ] [--out ] [--format {json,table}] ``` | 参数 | 必填 | 描述 | |----------|----------|-------------| | `--manifest` | 是 | 清单 JSON 文件路径 | | `--signature` | 否 | 用于验证的签名 JSON 文件 | | `--public-key` | 否 | 公钥 PEM 文件(与 --signature 配合使用) | | `--out` | 否 | 输出报告文件路径(默认:stdout) | | `--format` | 否 | 输出格式:`json`(默认)或 `table`(人类可读) | **示例:** ``` # 验证 manifest toolkit-mlsbom verify --manifest manifest.json # 使用表格输出验证 toolkit-mlsbom verify --manifest manifest.json --format table # 使用签名验证 toolkit-mlsbom verify --manifest manifest.json \ --signature manifest.sig.json \ --public-key ed25519_pub.pem ``` ### `keygen` -- 生成 Ed25519 签名密钥对 ``` toolkit-mlsbom keygen --private-key --public-key ``` | 参数 | 必填 | 描述 | |----------|----------|-------------| | `--private-key` | 是 | 输出私钥文件路径 | | `--public-key` | 是 | 输出公钥文件路径 | ### `sign` -- 签署清单 ``` toolkit-mlsbom sign --manifest --private-key [--out ] ``` | 参数 | 必填 | 描述 | |----------|----------|-------------| | `--manifest` | 是 | 清单 JSON 文件路径 | | `--private-key` | 是 | 私钥 PEM 文件路径 | | `--out` | 否 | 输出签名文件(默认:stdout) | ## 输出格式 ### 原生 JSON(默认) 默认的 `json` 格式生成的清单包含: ``` { "version": 1, "created_ts": 1741500000.0, "root": "/path/to/model", "git_commit": "abc123...", "entries": [ {"path": "weights/model.bin", "size": 1024, "sha256": "..."} ], "meta": {"model": "gpt-2"} } ``` ### CycloneDX 1.5 JSON `cyclonedx` 格式生成符合 [CycloneDX 1.5](https://cyclonedx.org/docs/1.5/json/) 标准的 SBOM: ``` { "bomFormat": "CycloneDX", "specVersion": "1.5", "serialNumber": "urn:uuid:...", "version": 1, "metadata": { "timestamp": "2026-03-09T00:00:00+00:00", "tools": {"components": [{"type": "application", "name": "toolkit-ml-provenance-sbom", "version": "0.1.0"}]} }, "components": [ {"type": "data", "name": "weights/model.bin", "hashes": [{"alg": "SHA-256", "content": "..."}]} ] } ``` ## 退出码 | 代码 | 含义 | |------|---------| | `0` | 成功 | | `2` | 用法无效 / CLI 错误 | | `3` | 意外错误 | | `4` | 验证失败 | ## 编程使用 该包导出一个公共 Python API: ``` from toolkit_ml_sbom import ( Manifest, build_manifest, sha256_file, sign_bytes, verify_bytes, generate_ed25519_keypair, canonical_json_bytes, ) from pathlib import Path # 构建 manifest manifest = build_manifest( root=Path("./my-model"), paths=list(Path("./my-model").glob("**/*")), meta={"model": "gpt-2"}, ) # Serialize data = manifest.to_json() # Deserialize loaded = Manifest.from_json(data) ``` ## 结构化日志 为日志聚合管道启用 JSON 格式的日志: ``` toolkit-mlsbom --verbose --log-format json generate --root . --out m.json --include "*.py" ``` 输出(stderr): ``` {"timestamp":"2026-03-09T12:00:00+00:00","level":"INFO","logger":"toolkit_ml_sbom.cli","message":"Generating manifest for root: /path"} ``` ## 许可证 MIT 许可证 - 详见 LICENSE 文件。
标签:Apex, CycloneDX, Homebrew安装, JSON, MLOps, PEM, Provenance, Python, SBOM, 二进制安全, 人工智能安全, 代码快照, 加密签名, 合规性, 哈希校验, 安全可观测性, 完整性验证, 审计, 工件管理, 恶意代码分析, 提示词模板, 数据溯源, 数据集管理, 文档结构分析, 无后门, 机器学习, 模型权重, 版本控制, 硬件无关, 跌倒检测, 软件物料清单, 逆向工具, 配置文件