返回

文章详情

展示 HN: 证明你的代码产生了你的声明,而无需让审阅者重新运行它

Hacker News2026年8月31日 02:44

为计算实验提供防篡改验证。它将发布的结果绑定到产生该结果的确切代码、硬件和时间,并以加密签名的 PDF 格式提供,任何人都可以验证。适用于任何语言,零运行时依赖,单一静态二进制。平台。验证、密封、证明、结账、基准文物、来源和披露级别是跨平台的。文件/子进程活动映射和每个进程的硬件归属目前仅限于 Linux;在其他地方则回退到系统范围的读数。安装预构建的二进制文件:curl -fsSL https://github.com/27-GROUP/kveritas-releases/raw/main/bin/kveritas-linux-amd64 -o kveritas chmod +x kveritas && sudo mv kveritas /usr/local/bin/ 二进制文件:kveritas-{linux,darwin,windows}-{amd64,arm64}。或者从源代码构建 (Go 1.22+):make build。快速启动 kveritas init # 启动会话(默认已编辑) kveritas run -- python train.py --epochs 90 # 在 kveritas 下运行(任何命令) kveritas run -- python evaluate.py kveritas seal --output report.pdf # 签名 PDF (+ 在 --disclosure open 时打包) kveritas verify report.pdf # 验证(添加 --offline 跳过服务器) 协议行 在任何语言中将这些打印到 stdout;捕获的所有内容都绑定到签名记录中。 行目的 KVERITAS_METRIC name=<id> value=<float> [step=<label>] 记录一个度量。 KVERITAS_PHASE name=<phase> 标记一个阶段边界(硬件快照)。 KVERITAS_CLAIM metric=<id> value=<float> 提交一个标题声明。 KVERITAS_INPUT src=seed:<value> 提交一个随机种子。 KVERITAS_MODEL params=<int> arch=<name> precision=<fp16|bf16|fp32> 模型卡(提供计算成本)。 KVERITAS_WORKLOAD dataset_size=<int> epochs=<float> batch_size=<int> [seq_len=<int>] 工作负载卡。 KVERITAS_ARTIFACT role=model|dataset [name=<ref>] path=<file> visibility=public|private 证明一个模型或数据集。常见度量也会自动检测(Keras 历史,sklearn CV,度量类似的本地变量),因此简单运行不需要任何行。 HMCA(执行一致性) 对度量盲。它从不查看报告的结果。在运行期间,后台采样器记录每个进程的遥测数据(CPU、内存、上下文切换、页故障、CPU 频率、I/O,当使用 GPU 时,还包括其利用率、内存、功率、温度)约 10 Hz。在密封时,HMCA 评分这些通道是否作为一个进程的阴影共同波动:真实运行从一个活动推动它们,伪造或重放的痕迹则没有。裁定为通过(一致)、警告、失败(不一致),或不适用(遥测数据过少而无法判断)。轻运行是根据其活动进行判断的,并不会因为轻量而受到惩罚。Web 验证器在时间上呈现通道。 计算成本证明 当运行声明一个模型卡时,密封将生成证书,检查声明的 FLOPs 与硬件能够物理交付的内容。 绑定不可能当申报的 FLOPs 超过 GPU 峰值 x GPU 激活秒加上 CPU 峰值 x CPU 核心-秒时。能量声明 FLOPs 超过实际测量的 GPU 焦耳除以每 FLOP 的最小能量。内存声明权重超过观察到的 GPU 内存(软性)。时间限制汇总每个设备,因此无论工作是在 GPU、CPU 还是两者上都有效(175B 模型在空闲 CPU 上声明时将被捕获)。限制是慷慨的,因此诚实的运行可以通过;没有卡或没有遥测数据则不适用。严重违规被视为伪造不可能,绑定到签名中。 来源和披露 每个运行是一个签名的时间线,内容地址的快照(运行开始时的源状态、每个阶段和运行结束时的快照,以及发生的变化),Merkle 链接并绑定到签名中。您可以根据每个会话选择公开多少信息;这仅控制披露,完整性始终得到承诺。 级别标志报告显示编辑过的(默认) kveritas init 假名,没有姓名,没有内容名称 --show-names 实际文件名称,没有内容公开 --disclosure open 实际姓名 + 结账包(代码) 编辑后的报告未公开任何敏感信息(没有代码、姓名、数据、权重、命令行或盐);服务器只能接收哈希。 .kveritasignore 中的模式将文件排除在任何捆绑之外;被保留的文件仍作为仅哈希叶子进行提交,并列为保留,因此不能被静默丢弃。 有选择的披露证明 证明一个文件在签名快照中,而不暴露其他文件: kveritas prove report.pdf src/train.py kveritas verify-proof kveritas-proof-train.py.json 对于代理会话,证明一个记录的提示或输出与其提交的哈希一致,留下每个条目的哈希: kveritas harness-prove session.json 1 --input prompt.txt -o proof.json kveritas verify-harness-proof proof.json 根据索引或 --tool-use-id 选择条目;使用 --input 显示提示或使用 --output-content 显示响应。 结账包 在 --disclosure open 处密封时会写入 report.pdf.kvbundle.zip,包含源内容(内容地址、去重)以及每个快照的清单,永远不包含数据集或权重。其哈希在报告中绑定;每个文件在结账时会重新哈希。 kveritas checkout

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡