目录文档-技术白皮书14-EFT.WP.Methods.Inference v1.0

第9章 推理管线卡与配置卡


I. 范围与目标

  1. 定义与规范两类核心工件:InferPipelineCard(简称 IPC)与 ParamCard(简称 PC),作为离线/在线统一的推理描述与参数契约,覆盖对象模型、算子图、数据口径、校准与不确定性、SLO 引用与审计签名。
  2. 给出最小必填集、约束与冲突消解规则;形成可计算指纹 fingerprint 与可验证签名 signature,确保跨环境复刻与合规取证。
  3. 目标产出:
    • 卡片模式与字段字典;
    • 校验与合成算法;
    • 变更影响分析、回滚剧本与发布策略;
    • 计量流程 Mx-53 → Mx-58 与审计工件清单。

II. 术语与符号


III. 公设与最小方程

  1. P41-31 卡片可复刻公设
    在固定 EnvLock 与一致输入分布下,相同 fingerprint 的 IPC+PC 组合产生同分布输出:y_hat ~ F( fingerprint, x ) 与基线等价。
  2. P41-32 卡片闭包公设
    IPC 与 PC 的字段经 canon(·) 归一化后具备决定性映射到运行时配置:( IPC, PC, EnvLock ) → Runtime 为单值。
  3. S42-41 指纹与签名
    • fingerprint = hash( canon( IPC || PC || EnvLock ) )
    • signature = sign( fingerprint, privkey ),验证式 verify( signature, fingerprint, pubkey ) = true。
  4. 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]。
  5. S42-43 约束一致性
    任一参数 θ 需通过三类校验:check_dim(θ.unit),check_range(θ.min, θ.max),check_enum(θ.enum);若失败,触发 E_SCHEMA_MISMATCH 或 E_PRECISION_LOSS。

IV. 数据与清单口径

  1. 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 }
  2. 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: {…} }
  3. 字段口径继承:
    features.window 与第4章一致;observability.metrics 与第8章一致;calibration_ref 与第7章一致;graph.inputs/outputs 与第5章数据类型规范一致。

V. 算法与实现绑定

  1. 原型
    • 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
  2. 校验规则摘要
    • 图与算子: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章对齐工件。
  3. 合成要点
    生效配置满足不变量:TS.error 上限与 timeout_ms、batch_size、parallelism 之间的队列一致性约束(见 S42-34)。

VI. 计量流程与运行图(Mx-53 → Mx-58)


VII. 验证与测试矩阵


VIII. 交叉引用与依赖


IX. 风险、限制与开放问题


X. 交付件与版本管理

  1. 交付件
    • 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;发布指纹索引与公钥引用。
  2. 版本策略
    • 变更 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 参考骨架

  1. 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 }
  2. 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/