
Soup 合规与治理快速上手从 HIPAA/SOC2 模板到 CI 门禁的端到端流程【免费下载链接】SoupFine-tune LLMs from one YAML. Layer streaming trains an 8B model on a 4 GB laptop GPU.项目地址: https://gitcode.com/GitHub_Trending/soup12/Soup本文围绕 docs/compliance.md 展开介绍 Soup 内置的端到端合规工作流从一个按法规形态预置的训练配置起步经过带溯源provenance的训练、签名与证明attestation、审计日志、跨气隙air gap传输最终发布带文档的模型卡并在 CI 中门禁后续变更。读完本文你将掌握 Soup 在 HIPAA、SOC 2、EU AI Act Annex XI/XII、SR 11-7 四类合规场景下的完整命令链以及每条命令背后的源码级实现依据。Soup 的合规控制面与常规训练流程刻意解耦合规控制是 CLI 标志/命令而不是配置键这一点在每个模板文件头部注释中反复强调见 hipaa.yaml。训练配置只负责模型与数据合规动作围绕训练前后编排从而让同一份训练配置可以适配不同的监管体制。1. 从合规模板起步Soup 通过soup init --template提供四套预置合规模板。每个模板就是一个普通训练配置外加头部注释注释里列出了该监管体制下应该执行的完整合规命令链参见 manifest.json 中注册的模板清单soup init --template hipaa # Protected Health Information受保护健康信息 soup init --template soc2 # SOC 2 Trust Services Criteria信任服务标准 soup init --template eu-ai-act # EU AI Act Annex XI/XII欧盟人工智能法案附件 XI/XII soup init --template sr-11-7 # SR 11-7 Model Risk Management美联储模型风险管理四个模板共享同一份 LoRA 训练骨架差异全部体现在头部注释的合规步骤上。以 hipaa.yaml 为例其核心训练配置为base: Qwen/Qwen2.5-7B-Instruct task: sft data: train: ./data/train.jsonl format: alpaca val_split: 0.1 max_length: 2048 training: epochs: 3 lr: 2e-5 batch_size: auto lora: r: 64 alpha: 16 target_modules: auto quantization: 4bit output: ./output头部注释则给出该场景的命令清单训练前用soup data pii/soup data decontaminate清洗 PHI审计日志保持默认开启soup audit-log tail训练时加--repro-receipt产出物走soup bom emitsoup adapters signsoup attest emit跨数据二极管data diode时用soup airgap-bundle。模板还专门注明“合规部署请使用许可证干净的基座模型如 Apache-2.0”。2. 训练前清洗数据soup data pii ./data/train.jsonl # 标记邮箱 / 电话 / SSN / MRN soup data decontaminate ./data/train.jsonl # 剔除与公开基准重叠的样本pii子命令负责在训练前标记个人可识别信息PIIdecontaminate则移除与公开评测基准重叠的数据避免基准泄漏污染后续评估结论。这两步属于“把原始 PHI 挡在训练机之外”的第一道闸。3. 带复现收据训练 EU 的 Annex XI 与能耗训练阶段是合规证据链的核心采集点# SR 11-7 / SOC 2 / HIPAA捕获种子、内核、GPU、OS soup train --config soup.yaml --repro-receipt receipt.json # EU AI Act自动生成 Annex XI/XII 文档 测量能耗 soup train --config soup.yaml \ --annex-xi annex_xi.md \ --track-energy --energy-country DEU --energy-out energy.json--repro-receipt的实现在 repro_receipt.py 中ReproReceipt数据类封装了run_id、soup_version、python_version、os、arch、seedstorch numpy python、torch/cuda/cudnn/nccl版本、GPU 型号与驱动版本、加速后端以及在 Apple Silicon 上的统一内存容量。该模块在顶层只依赖标准库torch懒加载保证 CPU-only 主机上加载耗时低于 50 msrun_id被严格约束为[A-Za-z0-9._-]{1,128}正则。在 Apple 平台上只采集隐私安全的芯片名与统一内存容量绝不记录序列号、硬件 UUID 或用户特定路径。产出物是单份 JSON 文件原子写入且限制在当前工作目录内——银行模型风险团队或受监管机构审计人员拿到手即是对运行环境的一次完整指纹快照。EU 场景下--annex-xi从训练运行直接渲染 Annex XI技术文档第 12 节或 Annex XII第 53(1)(d) 条公开训练摘要.md路径输出 Markdown.pdf路径渲染 reportlab PDF需要pip install soup-cli[pdf]。文档内容涵盖 Top-10 训练域占比、模态分解、训练算力 / kWh / CO₂、模型描述、基座模型与 run id。--track-energy用 codecarbon 的离线追踪器包裹训练窗口不做 IP 地理定位网络调用--energy-country ISO3选择 CO₂ 估算所用电网默认USAkWh 数值本身与国别无关--energy-out把测量结果以energy_kwh/co2_kg/pue/grid_intensity_g_per_kwh/source的固定 schema 落盘供后续soup bom emit --energy消费。该功能需要pip install soup-cli[carbon]未安装时--track-energy是优雅的 no-op。每一步命令都会被审计日志自动记录soup audit-log tail # 查看轨迹 soup audit-log rotate # 强制执行一次轮转4. 注册运行然后产出 BOM 证明训练完成后先把运行注册进本地模型注册表~/.soup/registry.db再产出物料清单BOM与来源证明attestationsoup registry push --run-id run-id --name my-model --tag v1 soup bom emit --name my-model --base-model model-id \ --base-sha hex --config-sha hex \ --energy energy.json --format both -o my-model.bom \ --attach-to-registry my-model:v1 # CycloneDX SPDX链接到注册表条目 soup attest emit --stage train --subject my-model --sha hex \ --sign ed25519 --key key.pem -o my-model.attest.json \ --attach-to-registry my-model:v1 # in-toto SLSA-3链接到注册表条目--attach-to-registry把产出的 BOM / attestation 作为bom/attestation类型工件挂到注册表条目上。已签名的证明会携带.sig侧车文件因此后续第 7 步生成的模型卡可以链接到验证所需的每一个文件。该选项必须搭配--output缺省即视为用法错误若注册表查找或附件写入失败命令以非零退出码结束但已产出的文件仍保留在磁盘上不会出现“半途而废还删掉了证据”的情况。5. 签名、扫描与验证工件soup adapters scan ./output # 权重空间后门扫描 soup adapters sign ./output --backend ed25519 --generate-key key.pem soup adapters verify ./output --strict --public-key key.pub.pemscan对 LoRA 适配器权重做纯 numpy 的谱分析不导入 torch重点检测秩 1 主导经典的权重空间木马模式、top-1 奇异向量能量集中、权重中的 NaN/Inf以及基于稳健中位数 MAD 分桶的 Frobenius 范数离群值。退出码约定为0OK / 1WARN / 3FAIL方便 CI 只针对安全失败精确 grep。sign生成覆盖适配器目录内每个文件含嵌套tokenizer//processor/子目录的确定性 Merkle 根清单ed25519后端在此基础上叠加真正的分离式签名需要pip install soup-cli[sign]。verify采用“失败即关闭”fail-closed策略任何篡改、密钥错误/缺失/不可读或签名来自不受信任密钥均判定适配器无效--strict模式在任意验证失败时以退出码 3 结束与普通错误的码值区分供 CI 门禁使用。签名以.soup-signature.json原子写入签名密钥与信任公钥不限制在 cwd 内密钥是项目外部的秘密但会拒绝符号链接并限制大小。6. 气隙传输可选soup airgap-bundle --model ./output --output my-model.tar --repro-receipt receipt.jsonairgap-bundle生成单一签名 tarball模型 数据集 wheels CUDA 内核 内嵌的manifest.json逐文件列出 SHA-256。默认 100 GiB 上限超出即拒绝。数据集标签按排序后的 basename确定性生成而非 argv 顺序因此同样的输入换不同参数顺序会得到完全一致的清单。实现上先os.lstat S_ISLNK复查父目录与最终输出路径再mkstemp最后从同级临时文件os.replace原子落位Python 3.12 设置tarfile.data_filter任何未来新增的tar.extractall调用都会自动走安全提取过滤器。复现收据通过--repro-receipt嵌入为顶层repro-receipt.json或从model/repro-receipt.json自动探测。该命令刻意设计为顶层命令而非soup deploy airgap-bundle——它是导出操作不是部署目标。7. 生成带文档的模型卡把注册表条目转化为溯源丰富的MODELCARD.md——涵盖基座模型、训练配置、评估记分卡、配置/数据哈希、谱系lineage以及第 4 步挂载的每个已注册工件包括 BOM 与 attestationsoup card my-model:v1 -o MODELCARD.md # 或者上传到 Hub 时覆盖自动生成的卡片 soup push --model ./output --repo you/my-model --card my-model:v1注册表本身按“配置 数据 基座模型”的内容哈希为每个条目建索引并维护指向父条目的谱系指针soup history name可以沿 DAG 回溯任意名称的完整谱系。引用解析支持注册表 ID、名称取最新或name:tag歧义前缀会直接报错而不是静默选错条目。8. 在 CI 中门禁后续变更最后一道闸是写一个 GitHub Actions 工作流除非数据校验通过、期望套件expectations suite全绿、SHIP 判定为通过否则阻塞 PR 合入soup ci init --data data/train.jsonl --suite expectations.yaml --evidence ship_evidence.json # 写入 .github/workflows/soup-gate.yml从源码看ci.pysoup ci init支持的选项包括--data默认./data/train.jsonl、--suite默认expectations.yaml、--evidence默认ship_evidence.json、--pythonrunner 的 Python 版本、--branch触发工作流的分支默认main、--config把 ship 门禁绑定到已提交的 soup.yaml拒绝过期证据、-o/--output默认.github/workflows/soup-gate.yml以及-f/--force覆盖已存在的工作流。生成的工作流按固定顺序执行三步soup data validate data # 数据集格式合规 soup expect data suite # PII / 令牌长度 / 拒绝模式 / judge 期望 soup ship --evidence ev.json # SHIP / DONT-SHIP退出码 2 阻塞合入第二步的最小expectations.yamlexpectations: - name: expect_no_pii - name: expect_token_length_between min_tokens: 1 max_tokens: 512支持的期望名称有expect_no_pii、expect_token_length_between、expect_no_refusal_pattern、expect_chosen_preferred_over_rejected_by_judge。安全细节在 ci_workflow.py 中可见每个路径都经shlex.quote包裹并先做控制字符拒绝_safe_shell_quote同时验证所有路径都落在仓库根目录内含符号链接/重解析点拒绝因此渲染出的工作流对注入是安全的。生成后按你的仓库实际情况编辑其中的路径即可。延伸阅读Adapters, Registry Governance完整的供应链命令集——适配器签名/验证、BOM、attestation、审计日志、气隙打包的底层细节。Evaluation Probessoup ship判定引擎的原理。Compliance templates四套合规模板的原始 YAML 与 manifest.json 模板清单。CI workflow writer 与 Repro receipt本文引用的两份关键实现源码。【免费下载链接】SoupFine-tune LLMs from one YAML. Layer streaming trains an 8B model on a 4 GB laptop GPU.项目地址: https://gitcode.com/GitHub_Trending/soup12/Soup创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考