1. 隐私计算任务编排与调度导论

隐私计算并不是单一技术,而是联邦学习、安全多方计算、可信执行环境、同态加密等多条技术路线的集合。当多个参与方需要在“数据不出域”的前提下联合完成一次建模、查询或统计时,真正困难的往往不是某个密码学算子本身,而是把分散在不同机构、不同引擎、不同算力上的子任务组织成一条可执行、可观测、可复现的流水线。这正是“任务编排与调度”要解决的问题,也是本课程贯穿始终的主线。

课程定位:从“能算”到“算得起来、算得稳”

如果把隐私计算比作一座工厂,算法与协议决定了“机器能加工什么”,而编排与调度决定了“原料如何按顺序进入各台机器、机器之间如何交接、出故障时如何回退”。本课程定位在系统层与工程层:不深入推导密码学协议的安全性证明,而是聚焦于任务如何被描述、拆分、编排、调度、监控与容错。学完之后,你应当能够读懂一条隐私计算作业的 DAG,能设计跨参与方的任务依赖,能针对资源与数据分布选择合适的调度策略,并能定位“任务卡住”“结果不一致”“参与方掉线”等典型问题。

核心问题:四个必须回答的工程命题

无论使用哪种隐私计算框架,编排与调度都要回答以下四类问题:

  • 依赖问题:哪些子任务必须先完成?例如联邦学习的“分发模型 → 本地训练 → 梯度加密上传 → 安全聚合”存在严格先后关系,而各参与方的本地训练可以并行。
  • 放置问题:每个子任务应该在哪台机器、哪个参与方、哪种引擎上执行?数据不能出域,意味着计算必须靠近数据,调度器要在“数据本地性”和“算力负载”之间权衡。
  • 协调问题:跨参与方的任务如何同步?谁负责触发、谁负责等待、超时如何处理?这涉及控制流与数据流的分离。
  • 容错问题:某个参与方训练失败或网络抖动时,是重试、跳过还是整体回滚?隐私计算中重试往往意味着重新执行昂贵的密码学运算,代价很高。

这四个问题构成了本课程的知识骨架。后续章节会分别展开任务建模、DAG 编排、资源调度、跨域协调与容错恢复。

技术栈全景

从下往上,隐私计算任务编排与调度涉及的技术栈大致可分为五层:

层次典型内容与编排调度的关系
密码学与协议层MPC、HE、TEE、DP、秘密分享决定单个算子的输入输出与代价模型
计算引擎层FATE、SecretFlow、OpenMPC、联邦框架提供可被调度的任务单元与运行时
编排层DAG 描述、任务模板、依赖解析把业务逻辑翻译成可执行任务图
调度层资源匹配、队列、优先级、数据本地性决定任务何时何地执行
可观测与治理层日志、指标、审计、血缘支撑排障、复现与合规

理解这张分层图很关键:编排与调度处在“承上启下”的位置,向上承接业务与算法意图,向下驱动具体引擎执行。很多工程问题之所以难,是因为故障发生在层与层的交界处,例如编排层认为任务已完成,而引擎层实际仍在等待某个参与方的密文。

隐私计算任务编排与调度技术栈全景 密码学与协议层 MPC · 同态加密 · 可信执行环境 · 差分隐私 · 秘密分享 决定算子代价 计算引擎层 FATE · SecretFlow · OpenMPC · 联邦学习运行时 提供任务单元 编排层 DAG 描述 · 任务模板 · 依赖解析 · 控制流与数据流分离 翻译业务意图 调度层 资源匹配 · 队列与优先级 · 数据本地性 · 跨域协调 决定何时何地 可观测与治理层 日志 · 指标 · 血缘 · 审计 · 复现 支撑排障合规 承上启下

学习路径:先建模型,再学调度,最后做排障

建议按“任务建模 → 编排表达 → 调度策略 → 跨域协调 → 容错与观测”的顺序推进。第一步要能把一个隐私计算业务拆成带依赖的任务图;第二步要能用 DAG 或模板把它表达出来;第三步要理解调度器如何在数据本地性与算力之间取舍;第四步要处理多参与方的同步与超时;第五步要能通过日志与指标定位问题。这条路径与前面四个核心问题一一对应。

一个可对照的示例:两方纵向联邦逻辑回归

为了让你对“编排”有具体感受,这里给出一个简化示例。假设机构 A 持有标签与部分特征,机构 B 持有另一部分特征,双方联合训练逻辑回归。任务可拆为:

task_init        : 双方交换样本对齐所需的 ID 哈希
task_align       : 求交集,得到共同样本索引
task_split       : 按批次划分训练数据
task_forward_A   : A 计算本地线性部分
task_forward_B   : B 计算本地线性部分
task_secure_agg  : 安全聚合两方部分结果,得到总 logit
task_loss_grad   : 计算损失与梯度(加密态)
task_update      : 双方各自更新本地参数
task_eval        : 在验证集上评估,输出 AUC

其中 task_forward_A 与 task_forward_B 可并行,但都必须完成后才能进入 task_secure_agg;task_update 依赖梯度结果,且必须两方都成功。若 B 在 task_forward_B 超时,调度器可以选择重试该子任务,而不是回滚整个训练。这个例子说明:编排的价值在于把“哪些能并行、哪些必须同步、失败时影响范围多大”显式表达出来,而不是把所有步骤串成一条黑盒。

学习建议:每读到一个隐私计算算法,都尝试问自己三个问题——它的子任务依赖是什么?哪些步骤可以并行?失败时最小重试单元是什么?坚持练习,你会逐渐形成“编排视角”。

本课程的能力目标

完成本课程后,你应当能够:读懂并绘制隐私计算任务的 DAG;根据数据分布与算力约束设计调度策略;识别跨参与方协调中的同步点与超时风险;利用日志、指标与血缘进行排障与复现;并在合规审计要求下说明任务执行路径。这些能力不依赖某一款具体框架,而是可以迁移到 FATE、SecretFlow 或自研平台上。

下一阶段,我们将从任务建模开始,把“业务意图”一步步翻译成调度器可以执行的图结构。