目录 / 文档-技术白皮书 / 14-EFT.WP.Methods.Inference v1.0
I. 范围与目标
- 定义与规范两类核心工件:InferPipelineCard(简称 IPC)与 ParamCard(简称 PC),作为离线/在线统一的推理描述与参数契约,覆盖对象模型、算子图、数据口径、校准与不确定性、SLO 引用与审计签名。
- 给出最小必填集、约束与冲突消解规则;形成可计算指纹 fingerprint 与可验证签名 signature,确保跨环境复刻与合规取证。
- 目标产出:
- 卡片模式与字段字典;
- 校验与合成算法;
- 变更影响分析、回滚剧本与发布策略;
- 计量流程 Mx-53 → Mx-58 与审计工件清单。
II. 术语与符号
- InferPipelineCard:声明推理拓扑、数据与特征接口、算子与精度策略、校准与不确定性、观测与 SLO 引用、工件与环境锚定 anchor。
- ParamCard:声明运行时参数与超参数,如 batch_size,device,dtype_policy,quant_scheme,rng.seed,window 等,并附参数约束与单位口径。
- EnvLock:环境锁(编译器/驱动/固件/库版本与 CUDA/cuDNN/MKL 等),与卡片共同决定可复刻性。
- anchor:包含 model_id,artifacts,dataset_ref,preproc/postproc 指针的逻辑锚点。
- fingerprint:hash( canon( IPC || PC || EnvLock ) ),用于版本冻结与审计。
- signature:sign( fingerprint, privkey ),用于可验证发布。
- 统一冲突名遵循前述规则:T_fil 与 T_trans 不可混用;n 与 n_eff 严格区分;公式与符号仅使用英文与拉丁字母。
III. 公设与最小方程
- P41-31 卡片可复刻公设
在固定 EnvLock 与一致输入分布下,相同 fingerprint 的 IPC+PC 组合产生同分布输出:y_hat ~ F( fingerprint, x ) 与基线等价。 - P41-32 卡片闭包公设
IPC 与 PC 的字段经 canon(·) 归一化后具备决定性映射到运行时配置:( IPC, PC, EnvLock ) → Runtime 为单值。 - S42-41 指纹与签名
- fingerprint = hash( canon( IPC || PC || EnvLock ) )
- signature = sign( fingerprint, privkey ),验证式 verify( signature, fingerprint, pubkey ) = true。
- S42-42 有效配置合成
- 合并优先级从左到右提升:rt.opts = merge( defaults, env, ipc.opts, pc.opts, override ),取最右优先。
- 等价逐键规则:effective[k] = override[k] if k∈override else pc[k] if k∈pc else ipc[k] if k∈ipc else env[k] if k∈env else defaults[k]。
- S42-43 约束一致性
任一参数 θ 需通过三类校验:check_dim(θ.unit),check_range(θ.min, θ.max),check_enum(θ.enum);若失败,触发 E_SCHEMA_MISMATCH 或 E_PRECISION_LOSS。
IV. 数据与清单口径
- IPC 最小必填集(名称为英文,单位/量纲明确):
- meta: { name, version, owner, created_at }
- anchor: { model_id, artifacts, dataset_ref, preproc_ref, postproc_ref }
- graph: { inputs, outputs, opset, constraints, determinism }
- features: { mapping, window, alignment: ts = alpha + beta * tau_mono }
- precision: { dtype_policy, quant_scheme, calibration_ref }
- uncertainty: { method, outputs: [mean,var,quantile], coverage: 1-delta }
- observability: { metrics: [TS.latency, TS.thrpt, TS.error], buckets, window }
- slo_ref: { SLO.id, targets: { p99, avail, cost_u } }
- env_req: { compiler, driver, runtime_libs, device_class }
- security: { allowlist_ops, denied_ops }
- opts: { batch_mode, parallelism, warmup }
- PC 最小必填集:
- meta: { name, version, parent_fingerprint }
- opts: { batch_size, device, num_threads, rng.seed, rng_family, timeout_ms }
- io: { max_bytes_in, max_bytes_out, compress, serialize }
- precision: { dtype_policy, quant_scheme, int8_calib, fp16_safety }
- time: { window, stride, watermark, clock_align }
- constraints: [{ key, unit, min, max, enum }]
- overrides: { preproc: {…}, postproc: {…} }
- 字段口径继承:
features.window 与第4章一致;observability.metrics 与第8章一致;calibration_ref 与第7章一致;graph.inputs/outputs 与第5章数据类型规范一致。
V. 算法与实现绑定
- 原型
- I40-20 validate_pipeline_card(ipc:dict) -> ValidateReport
- I40-21 validate_param_card(pc:dict, ipc:dict) -> ValidateReport
- I40-22 compose_runtime(ipc:dict, pc:dict, env:dict, override:dict) -> Runtime
- I40-23 fingerprint_and_sign(ipc:dict, pc:dict, env:dict, key:any) -> {fingerprint:str, signature:str}
- I40-24 diff_cards(a:dict, b:dict) -> DiffReport
- I40-25 impact_analysis(diff:DiffReport, slo:SLOSpec) -> ImpactReport
- 校验规则摘要
- 图与算子:graph.opset 必须在 allowlist_ops 且不含 denied_ops;非确定性算子需在 determinism.exempt 声明并提供替代策略。
- 量纲:对 io/precision/time/opts 执行 check_dim(expr) 与范围校核。
- 校准:若 quant_scheme in {int8},则 int8_calib 必须指向有效 calibration_ref;否则 E_CALIBRATION_FAIL。
- 时间:clock_align 显式给出 alpha,beta 或引用第6章对齐工件。
- 合成要点
生效配置满足不变量:TS.error 上限与 timeout_ms、batch_size、parallelism 之间的队列一致性约束(见 S42-34)。
VI. 计量流程与运行图(Mx-53 → Mx-58)
- Mx-53 草拟与模式校验
依据本章字典起草 IPC/PC,运行 I40-20/21 生成 ValidateReport;所有 must 级校验通过后入库。 - Mx-54 指纹与签名
执行 I40-23 生成 fingerprint, signature;记录 fingerprint = hash( canon( IPC || PC || EnvLock ) ) 与公钥引用。 - Mx-55 离线回放与一致性试跑
通过 I40-22 合成 Runtime 并在基线数据上回放,生成 ConsistencyReport 与 ScoreReport;R_infer >= τ_cons 方可进入灰度。 - Mx-56 灰度发布与观测
将 IPC/PC 部署 canary 通道,绑定第8章 SLI 计算;若 budget.used > τ_budget 或 delta_offon > τ_delta,触发回退。 - Mx-57 影响分析与门限收敛
依据 I40-24/25 出具 ImpactReport,更新 ParamCard.constraints 与 SLO 门限,形成 PC 次版本。 - Mx-58 存档与取证
存档 IPC.yaml,PC.yaml,ValidateReport,DiffReport,ImpactReport,ConsistencyReport,ScoreReport,并附 signature 与 fingerprint。
VII. 验证与测试矩阵
- 指纹与签名一致性:多节点对同一 IPC/PC/EnvLock 计算 fingerprint 等值,verify(signature,fingerprint,pubkey)=true。
- 参数边界:对 constraints 中每一项施加 min/max/enum 违规,产生对应 E_SCHEMA_MISMATCH 或 E_PRECISION_LOSS。
- 量纲校核:对 time.window、io.max_bytes_in、precision.dtype_policy 执行 check_dim(expr),全部通过。
- 非确定性隔离:引入含随机性的算子,若未在 determinism.exempt 登记则触发 E_NONDETERMINISM。
- 一致性对照:compose_runtime 产物在离线/在线对同一 anchor 输入得到 delta_offon <= τ_delta。
- 量化与校准:int8 场景下未加载 calibration_ref 必须触发 E_CALIBRATION_FAIL;加载后 ECE 不劣于阈值。
VIII. 交叉引用与依赖
- 第4章:features.mapping、窗口与脱敏追溯;
- 第5章:graph、precision、算子稳定性与确定性策略;
- 第6章:时间轴对齐 ts = alpha + beta * tau_mono 与 delta_offon;
- 第7章:uncertainty 与 calibration_ref;
- 第8章:observability、slo_ref、ScoreReport 与预算治理;
- 《Core.DataSpec》《Core.Threads》《Core.Metrology》作为字段与观测口径依据。
IX. 风险、限制与开放问题
- 模式漂移:卡片字段膨胀与私有扩展影响 canon(·) 稳定性,需要冻结规范与扩展位策略。
- 秘钥治理:signature 的密钥轮换与吊销需要与发布通道解耦;建议引入 key_id 与时间窗。
- 跨设备等价性:device_class 切换引起 TS.latency_p99 与 R_infer 波动,需要在 PC 中显式标注等价性检验策略。
- 多卡合成:流水线多段 IPC 组合的跨边界约束尚未完全形式化,需扩展为 PipelineSetCard。
X. 交付件与版本管理
- 交付件
- IPC.yaml:推理管线卡(含 anchor/graph/features/precision/uncertainty/observability/slo_ref/env_req/opts)。
- PC.yaml:配置卡(含 opts/io/precision/time/constraints/overrides)。
- ValidateReport.json,ConsistencyReport.json,ScoreReport.json,DiffReport.json,ImpactReport.json。
- fingerprint.txt 与 signature.asc;发布指纹索引与公钥引用。
- 版本策略
- 变更 graph/opset/precision/env_req 或 features.mapping → 主版本递增并重算 fingerprint。
- 变更 opts/constraints/time/overrides 且不触及图与精度 → 次版本递增。
- 文档性字段(description, notes)不参与 fingerprint,列表于 non_fingerprint_fields。
- 发布规则:canary → stable → LTS,并在附录C登记 CHANGELOG 与影响域。
附:InferPipelineCard 与 ParamCard 参考骨架
- InferPipelineCard(片段)
- meta: { name, version, owner }
- anchor: { model_id, artifacts: [uri], dataset_ref, preproc_ref, postproc_ref }
- graph: { inputs: [{name, dtype, shape}], outputs: [{name, dtype, shape}], opset, determinism: {exempt:[], fallback:""}, constraints: [] }
- features: { mapping: [{field, expr}], window: {size, stride}, alignment: {alpha, beta} }
- precision: { dtype_policy: "fp16", quant_scheme: "none", calibration_ref: null }
- uncertainty: { method: "mc_dropout", outputs: ["mean","var","q05","q95"], coverage: 0.95 }
- observability: { metrics: ["TS.latency","TS.thrpt","TS.error"], buckets: "kll", window: "5m" }
- slo_ref: { id: "SLO.Infer.v1", targets: { p99: "120ms", avail: 0.999, cost_u: "¥0.0005" } }
- env_req: { compiler: "gcc-11", driver: "nvidia-535", runtime_libs: ["cudnn-8.9"], device_class: "gpu" }
- security: { allowlist_ops: ["matmul","gelu","softmax"], denied_ops: ["random_like"] }
- opts: { batch_mode: "dynamic", parallelism: 2, warmup: 100 }
- ParamCard(片段)
- meta: { name, version, parent_fingerprint }
- opts: { batch_size: 16, device: "cuda:0", num_threads: 4, rng: {seed: 1234, family: "philox"}, timeout_ms: 200 }
- io: { max_bytes_in: "2MB", max_bytes_out: "1MB", compress: "gzip", serialize: "msgpack" }
- precision: { dtype_policy: "fp16", quant_scheme: "none", int8_calib: null, fp16_safety: "amp_02" }
- time: { window: "T+0", stride: "1s", watermark: "2s", clock_align: {alpha: 0.0, beta: 1.0} }
- constraints: [ { key: "batch_size", unit: "count", min: 1, max: 256 }, { key: "timeout_ms", unit: "ms", min: 50, max: 1000 } ]
- overrides: { preproc: {normalize: "zscore"}, postproc: {threshold: 0.5} }
版权与许可(CC BY 4.0)
版权声明:除另有说明外,《能量丝理论》(含文本、图表、插图、符号与公式)的著作权由作者(“屠广林”先生)享有。
许可方式:本作品采用 Creative Commons 署名 4.0 国际许可协议(CC BY 4.0)进行许可;在注明作者与来源的前提下,允许为商业或非商业目的进行复制、转载、节选、改编与再分发。
署名格式(建议):作者:“屠广林”;作品:《能量丝理论》;来源:energyfilament.org;许可证:CC BY 4.0。
首次发布: 2025-11-11|当前版本:v5.1
协议链接:https://creativecommons.org/licenses/by/4.0/