FlowCompile:面向结构化 LLM 工作流的优化编译器 FlowCompile: An Optimizing Compiler for Structured LLM Workflows
通过编译时探索设计空间,为结构化LLM工作流生成可重用的准确性-延迟权衡配置集
前置知识
结构化LLM工作流
结构化LLM工作流是由多个专门的LLM子代理按照预定义执行图连接而成的系统。执行图可以包含顺序、并行、分支或迭代等控制流结构。例如,临床决策支持工作流可能首先检索相关患者信息和医疗指南,然后调用专门的诊断和验证代理,最后聚合它们的输出形成可审计的建议。与ReAct等开放端代理系统不同,结构化工作流的控制流和子代理在执行前就已经明确指定,这使得系统性分析和优化成为可能。
本文的核心研究对象,理解这一概念是理解优化目标和方法的前提。
多目标优化
多目标优化是指同时优化多个相互冲突的目标。在本文中,这两个目标是准确性(任务准确率)和延迟(推理时间)。通常不存在同时最大化所有目标的单一最优解,而是存在一组帕累托最优解,即在不牺牲一个目标的情况下无法改进另一个目标的解集。预期效用是常用的标量化方法,通过效用函数将多个目标转换为单一标量值。在本文的两目标(准确性和延迟)设置中,效用权重简化为单个偏好参数$\alpha$:较小的$\alpha$优先考虑延迟效率,而较大的$\alpha$优先考虑准确性。
FlowCompile的输出不是单一最优配置,而是一组跨越不同准确性-延迟权衡的配置集,这本质上是多目标优化问题。
非支配排序
非支配排序是多目标优化中用于识别帕累托前沿的经典算法。配置$c_1$支配配置$c_2$当且仅当$c_1$在所有目标上都不劣于$c_2$,且至少在一个目标上严格优于$c_2$。非支配配置构成的集合称为帕累托前沿,代表了最佳权衡点。Kung等人提出的算法可以在$O(n \log^{d-2} n)$时间内找到$d$维空间中的非支配点集,其中$n$是配置数量,$d$是目标维度。在本文的两目标(准确性和延迟)设置中,算法可以更高效地实现。
FlowCompile使用非支配排序来从代理估计的配置中识别出高质量的权衡集,这是生成最终输出配置集的关键步骤。
机器学习编译器
机器学习编译器是用于优化神经网络计算的框架,如TVM、Glow和XLA。它们通过静态分析计算图、分析底层算子性能、搜索执行配置来优化给定部署设置下的目标计算。TVM是一个代表性例子,它结合了图级优化(如算子融合和布局转换)与算子级代码生成和自动调优。AutoTVM进一步通过学习成本模型来指导在大型实现空间中的搜索。Ansor扩展了这一思想,自动构建搜索空间并通过任务调度器优化神经网络的多个子图。
FlowCompile直接受到机器学习编译器的启发,采用了类似的分解和搜索策略,但目标不同——不是优化延迟而是探索准确性-延迟权衡空间。
研究动机
现有方法将工作流优化视为路由问题,在推理时根据训练时指定的准确性-延迟目标为每个查询选择配置。这类方法如MaAS、MasRouter、DAAO等通过学习推理时策略来动态选择模型和协作策略。然而,每个策略通常针对单一权衡点,需要重新训练或重新优化以适应不同的部署需求。例如,当一个应用从低延迟优先场景切换到高准确性优先场景时,整个路由策略需要重新训练。此外,随着子代理数量、模型选择和推理预算的增加,组合设计空间迅速变得非常庞大。对于一个五个子代理的工作流,每个子代理有五个模型选择和四个推理预算选项,仅模型-预算分配就产生$(5 \times 4)^5 = 3,200,000$个配置,使得全面评估变得不切实际。
本文的目标是本文的目标是提出一种编译时优化方法,在部署前探索工作流设计空间并构建可重用的配置集。这个配置集应该跨越不同的准确性-延迟权衡点,使得在运行时可以根据不同的延迟预算或性能偏好灵活选择配置,而无需重新搜索整个设计空间或重新训练模型。具体来说,给定结构化LLM工作流$W = (A, G)$(其中$A$是子代理集合,$G$是执行图)、标记验证集$D_{val}$和工作流设计空间$C$,目标是识别一组高质量配置,跨越工作流的准确性-延迟权衡空间。
与已有工作不同的是,本文的独特切入角度是将结构化LLM工作流优化视为编译问题而非仅作为运行时路由。关键区别在于编译在部署前探索工作流设计空间并产生可重用的工作流级配置集,而不是在线为特定权衡目标选择单一配置。受机器学习编译器的启发,FlowCompile在模型选择、推理预算和工作流结构上执行单次编译时搜索,输出跨越不同准确性-延迟权衡的可重用配置集,无需重新训练或在线适配。这与需要针对每个权衡点重新训练的路由方法形成鲜明对比。
核心方法
FlowCompile的整体思路是借鉴传统机器学习编译器的分解策略,将复杂的工作流级优化问题分解为可管理的子问题。直觉上,就像TVM通过分解神经网络来优化单个算子再组合,FlowCompile也通过分解工作流来优化每个子代理,然后通过结构感知的组合规则估计工作流级性能。技术路线上,FlowCompile分三个阶段编译结构化LLM工作流:首先是子代理配置文件生成和成本建模,使用高容量参考模型执行工作流来诱导子代理级数据,然后在不同配置下对每个子代理进行配置文件分析;其次是工作流级性能代理,通过结构感知的组合规则从可重用的子代理配置文件估计工作流级准确性和延迟;最后是设计空间探索,使用代理估计高效搜索配置空间并识别跨越准确性-延迟权衡前沿的配置集。
核心创新点在于将工作流优化从运行时路由转变为编译时探索,并设计了轻量级、可重用的子代理配置文件到工作流级性能的组合代理。与现有方法相比,FlowCompile不需要为每个权衡点重新训练,而是在编译时一次产生覆盖整个权衡空间的配置集。另一个关键创新是代理设计:它不需要精确预测绝对性能值,只需要保持配置在准确性-延迟空间中的相对排序和支配结构,这通过形式化前沿一致性和局部顺序保持两个假设来实现。这种代理设计使得可以使用简单高效的分析规则而不是复杂的学习模型来估计工作流性能,大大降低了计算成本。
方法步骤详情
FlowCompile的完整流程分为三个步骤。第一步是子代理数据诱导和配置文件生成:给定工作流规范和标记验证集,FlowCompile使用高容量参考模型(如GPT-5)在验证集上执行工作流,记录每个子代理调用的中间输入和输出,然后应用LLM-as-a-judge过滤器保留执行良好并对正确最终答案有贡献的调用。对于每个子代理$a$,保留的示例形成诱导数据集$D_a$。对于每个子代理配置空间$Q_a = M_a \times R_a$中的配置$q = (m, r)$(模型和推理预算),在$D_a$上评估子代理$a$并记录经验准确性和延迟:$\phi_a(q) = f_{\text{profile}}(a, q; D_a) = [\hat{p}_a(q), \hat{\ell}_a(q)]$,其中$\hat{p}_a(q)$是配置的子代理准确性,$\hat{\ell}_a(q)$是配置的子代理延迟。第二步是工作流级性能代理:给定子代理配置文件,估计工作流级性能$\hat{y}(c) = (\widehat{\text{Acc}}(c), \widehat{\text{Lat}}(c))$。对于配置$c$,实例化工作流图为$G_c$,子代理$a$分配的配置为$q_a(c)$。代理定义为$\hat{y}(c) = M_\theta(\{\phi_a(q_a(c))\}_{a \in A_c}, G_c, E)$,其中$E$是部署执行模型。准确性代理根据工作流控制流语义组合:顺序$\hat{p}_{\text{seq}} = \prod_{i=1}^N \hat{p}_{a_i}$,析取并行$\hat{p}_{\text{or}} = 1 - \prod_{i=1}^N (1 - \hat{p}_{a_i})$,合取并行$\hat{p}_{\text{and}} = \prod_{i=1}^N \hat{p}_{a_i}$,条件$\hat{p}_{\text{cond}} = \hat{p}_{a_1} + (1 - \hat{p}_{a_1})\hat{p}_{a_2}$。延迟代理使用期望延迟规则,在边缘执行模型下无条件阶段求和,条件分支加权。第三步是设计空间探索和部署:首先应用子代理级修剪,如果配置$q_1$被$q_2$支配(即$\hat{p}_a(q_2) \geq \hat{p}_a(q_1)$且$\hat{\ell}_a(q_2) \leq \hat{\ell}_a(q_1)$,至少一个严格不等式),则移除$q_1$。然后枚举剩余配置$\mathcal{C}'$,计算$\hat{y}(c)$,应用非支配排序获得代理估计的权衡集$\mathcal{F}$。部署时从$\mathcal{F}$中选择:延迟受限部署选择满足延迟预算的最准确配置;基于偏好的部署选择在给定准确性-延迟偏好下最大化预期效用的配置;基于路由的自适应使用$\mathcal{F}$作为查询级路由的紧凑候选池。
技术新颖性
技术新颖性体现在多个方面。首先,工作流编译的概念是全新的,将优化视角从运行时路由扩展到编译时探索,这在LLM工作流领域是首次尝试。其次,结构感知的组合代理设计巧妙地平衡了准确性和效率,通过保持相对排序而非精确预测绝对值来降低复杂度,这在理论和实践上都有创新。第三,配置文件的可重用性是一个重要贡献,子代理配置文件可以在不同工作流配置间复用,甚至跨相关任务迁移(实验显示从MATH-500迁移到GSM8K仍保持竞争性能)。第四,无需模型训练的编译过程与传统需要训练的路由方法形成鲜明对比,FlowCompile的主要成本是子代理配置文件生成,这可以被摊销到多次部署中。最后,与路由方法的互补性展示了编译时优化和运行时路由可以结合,编译配置集为路由提供了高质量的候选池。
实验结果
实验结果显示FlowCompile在多个基准测试和不同评估设置下持续优于基线方法。在代理验证中,代理估计的前沿与经验测量的前沿高度一致,支持了前沿一致性假设;局部顺序保持方面,代理在高质量配置的排序上表现良好,准确性成对一致性平均为0.90,延迟为0.95,经过系统偏差校正后平均延迟误差为4.4秒,准确性误差为2.3个百分点。在端到端质量评估中,FlowCompile在可比或更高准确性下始终实现更低延迟,产生了更好的准确性-延迟权衡曲线。准确性优先配置在保持与完整基线几乎相同准确性的情况下,实现平均3.4倍加速,在LiveCodeBench上达到6.4倍加速;延迟优先配置实现平均12.7倍加速,同时保持竞争力强的准确性。在偏好感知评估中,使用预期效用作为标量指标,在异构设置下(每个查询随机采样偏好参数$\alpha$),FlowCompile在所有四个基准测试上实现最高预期效用,平均为85.5,比最强基线平均高出+7.9。在固定设置下(所有查询共享相同$\alpha$),FlowCompile在四个基准测试上对每个偏好值都实现了最高平均效用,而偏好感知路由基线仅在较窄的偏好范围内有效。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| GSM8K(数学推理) | 预期效用(异构偏好) | 89.2 ± 0.6 | MaAS (Qwen3-4B): 87.2 ± 0.1 | +2.0 |
| MATH-500(数学推理) | 预期效用(异构偏好) | 84.2 ± 0.8 | KNN Router: 77.6 ± 0.5 | +6.6 |
| HotpotQA(多跳问答) | 预期效用(异构偏好) | 88.4 ± 0.4 | Pref-Aware MaAS: 78.7 ± 0.4 | +9.7 |
| LiveCodeBench(代码推理) | 预期效用(异构偏好) | 80.1 ± 0.6 | MaAS (Qwen3-4B): 66.0 ± 0.6 | +14.1 |
| LiveCodeBench(代码推理) | 加速比(准确性优先配置) | 6.4× | 完整基线(Qwen3-14B工作流) | 保持几乎相同准确性 |
| 所有基准测试(平均) | 预期效用(异构偏好) | 85.5 | 最强基线平均 | +7.9 |
局限与改进
作者承认的局限性包括:FlowCompile主要针对结构化工作流,控制流和子代理在执行前明确指定,不适用于ReAct等开放端代理系统;子代理配置文件生成是主要成本,虽然可以通过跨任务重用来降低,但对于完全不相关的任务仍需要重新配置文件;代理虽然保持了关键的权衡结构,但仍然是一个近似,复杂工作流中的子代理交互可能无法完全被组合规则捕捉。基于观察的额外局限性包括:对参考模型质量的依赖,如果参考模型无法生成高质量的子代理输出,诱导数据质量会下降,这可能影响配置文件的可靠性;工作流结构的复杂性假设,代理假设工作流结构是相对简单和清晰的,对于高度复杂或深层嵌套的结构,组合规则的准确性可能下降;跨任务迁移的成功依赖于任务间的相似性,如果任务在工作流结构和子代理功能上差异很大,迁移效果可能不佳;设计空间探索仍然受到代理估计质量的限制,如果代理在某些区域产生系统性偏差,可能会错过高质量配置。
独立分析的弱点
FlowCompile的第一个独立弱点是对参考模型质量的依赖。虽然敏感性测试显示对参考模型选择具有鲁棒性,但如果参考模型无法产生高质量的工作流轨迹,诱导的子代理数据质量会下降,这可能导致配置文件不准确。改进方向可以是开发更鲁棒的数据诱导方法,如使用多个参考模型并集成它们的轨迹,或设计更智能的LLM-as-a-judge过滤策略。第二个弱点是代理的简化假设,组合规则虽然高效,但可能无法捕捉复杂的子代理交互。改进方向可以是引入学习组件来建模子代理间的复杂依赖关系,或使用更精细的概率模型来组合子代理准确性。第三个弱点是跨任务迁移的局限性,目前迁移依赖于任务间的相似性。改进方向可以是开发自动的配置文件重用策略,如通过任务特征匹配来选择最相关的配置文件,或开发迁移学习方法来调整现有配置文件以适应新任务。
未来方向
作者提出的未来研究方向包括:将FlowCompile扩展到更动态的工作流结构,如部分动态分支或自适应迭代次数,这可能需要结合编译时优化和运行时路由;开发自动的配置文件重用策略,通过分析任务和工作流的相似性来选择或调整现有配置文件,以进一步降低配置文件生成成本;探索更复杂的代理设计,如学习组件来建模子代理交互或使用更精细的概率模型,以提高估计准确性,特别是在复杂工作流中;将FlowCompile集成到更大的LLM应用开发框架中,作为工作流优化的标准组件;研究与其他优化技术的协同效应,如提示优化、蒸馏或量化,以实现更全面的效率优化。基于成果可延伸的未来工作包括:将工作流编译概念应用到其他类型的AI工作流,如多模态工作流、强化学习工作流或数据处理管道;开发专门针对特定领域工作流的优化策略,如医疗、金融或教育领域;研究工作流编译的自动化和可解释性,使非专家用户也能有效地优化他们的LLM工作流。
复现评估
FlowCompile的代码已在GitHub开源(https://github.com/UMass-Embodied-AGI/FlowCompile),这大大降低了复现难度。实验使用四个公共基准测试:GSM8K、MATH-500、HotpotQA和LiveCodeBench,都是公开可用的数据集。设计空间使用Qwen-3模型家族,模型大小从0.6B到14B,推理预算从10到16000个token,这些也是公开可用的。延迟测量在单块H100 GPU上使用vLLM推理引擎,这是相对标准化的设置。主要计算成本是子代理配置文件生成,这需要对每个子代理在每个配置下进行推理,但这个过程是可并行化的,且一旦完成可以重用。实验中详细描述了数据分割协议,将数据分为配置子集和评估子集,所有报告结果都在评估子集上测量,这确保了公平评估。论文提供了详细的超参数设置、评估指标定义和消融研究,使得复现者可以完全复制实验设置。唯一潜在的限制是参考模型(GPT-5)的访问,但敏感性测试显示使用其他模型(如GPT-5-mini或Qwen3-1.7B)也能产生一致的结果,因此复现者可以根据可用资源选择合适的参考模型。总体而言,FlowCompile的复现性良好,开源代码、公开数据集和详细的实验描述都支持独立复现。
论文图表