⚠️ Alpha内测版本警告:此为早期内部构建版本,尚不完整且可能存在错误,欢迎大家提Issue反馈问题或建议。
Skip to content

扩展:运筹学基础

在线 Notebook

对应的交互式版本可在 Google Colab 打开,统一使用方式见 第0章说明

难度: 中高级
前置知识: 线性代数、优化基础(第2章)


为什么需要运筹学视角

第 2 章主线解释“训练为什么是优化问题”。运筹学关注的是另一类优化问题:在有限资源和约束条件下,如何做出可执行的系统决策。

本节不是完整的运筹学课程,也不讲线性规划、整数规划或排队论的求解算法。它只提供一个工程建模入口:先把变量、目标和约束说清楚,再讨论系统应该如何取舍。

在 LLM 系统中,这类问题非常常见:

  • GPU 资源有限,请求应该如何排队和调度?
  • 不同请求应该路由到小模型、大模型、RAG 还是 Agent?
  • 预算有限时,如何在质量、延迟和成本之间取舍?
  • 高峰流量下,哪些请求应该降级、缓存或转人工?

这些问题不一定通过梯度下降求解,但都属于优化思维的延伸。


资源分配:线性规划

线性规划适合描述“资源有限,收益或成本近似线性”的问题。

一个最简形式可以写成:

minxcTxs.t. Axb,x0

其中:

  • x 是决策变量,例如不同模型的请求分配量。
  • c 是单位成本。
  • Axb 表示资源约束,例如 GPU、预算、延迟容量。

LLM Serving 中的例子:

text
目标:最小化每日推理成本
约束:P95 延迟不超过阈值,质量不低于阈值,GPU 显存不超过容量
决策:多少请求走小模型,多少请求走大模型,多少请求走缓存

这里不要求真实系统都满足线性假设。线性规划的价值是提供一个清晰框架:先定义变量,再定义目标,再定义约束。


离散决策:整数规划

很多工程决策不是连续变量,而是离散选择:

  • 是否启用某个模型副本
  • 某个请求分配给哪台机器
  • 某个工具是否允许 Agent 调用
  • 某个服务是否进入降级模式

这类问题可以用整数变量表达:

xi{0,1}

例如:

text
x_i = 1 表示启用第 i 个模型副本
x_i = 0 表示不启用

严格求解整数规划通常很难,真实工程里也经常使用规则、启发式和在线监控来近似处理。这里的重点是理解离散决策和连续优化不是同一类问题。


序列决策:动态规划

动态规划适合处理“当前决策影响未来状态”的问题。

一个常见的递推直觉是:

V(s)=mina[C(s,a)+V(s)]

其中:

  • s 是当前状态。
  • a 是行动。
  • C(s,a) 是当前成本。
  • s 是行动后的新状态。
  • V(s) 是从状态 s 出发的最优长期成本。

LLM 应用中的类比:

  • 多步 Agent 每一步都要决定是否继续调用工具。
  • RAG 系统要决定是否继续检索、重排或直接回答。
  • 对话系统要决定当前是否追问、回答、拒答或转人工。

这里不展开动态规划算法。它提醒我们:多步系统不能只看当前一步的收益,还要考虑后续状态和累计风险。


排队论:吞吐、等待和服务率

线上服务的延迟不只来自模型计算,也来自排队等待。一个简化的排队视角包含:

  • 到达率 λ:单位时间进入系统的请求数。
  • 服务率 μ:单位时间能处理的请求数。
  • 利用率 ρ=λ/μ

在很多服务系统中,当 ρ 接近 1 时,排队等待会快速上升。工程上这意味着:

  • 平均 QPS 不够,必须看峰值 QPS。
  • 平均延迟不够,必须看 P95 / P99 延迟。
  • 批处理能提高吞吐,但会增加等待时间。
  • 限流和优先级不是附加功能,而是稳定性机制。

这直接连接第 8 章的推理优化和生产系统设计。


约束优化:质量、成本、延迟的取舍

LLM 系统很少只优化一个目标。更常见的是:

text
最小化成本
约束:质量 >= 阈值
约束:P95 延迟 <= 阈值
约束:错误率 <= 阈值
约束:安全风险 <= 阈值

这类约束优化比单纯追求“模型更强”更接近生产系统。它会导出很多工程策略:

  • 小模型处理简单请求,大模型处理高风险请求。
  • 命中缓存时不调用模型。
  • 超出预算时降级到短回答或模板回答。
  • 延迟接近 SLO 时限制 Agent 步数。
  • 高风险工具调用必须人工确认。

和深度学习优化的区别

维度深度学习训练运筹学系统决策
变量模型参数资源、路由、调度、开关
目标降低损失函数降低成本、延迟或风险
约束数值稳定、显存、训练预算SLO、容量、权限、预算
方法SGD、Adam、反向传播线性规划、整数规划、动态规划、启发式
结果一个模型一个可执行策略

两者都属于优化思维,但解决的问题层级不同。第 2 章主线讲“模型如何被训练出来”,运筹学扩展讲“系统如何在约束下运行得更好”。


和第 8 章的连接

第 8 章的工程优化可以看作运筹学在 LLM Serving 中的落地:

  • 批处理和调度:排队论和资源分配。
  • 模型路由:约束优化和离散决策。
  • 缓存策略:成本优化和命中率建模。
  • 容量规划:服务率、峰值流量和冗余设计。
  • 降级策略:约束冲突时的可执行决策。

因此,第 2 章提供理论入口,第 8 章提供系统落地。


本节小结

  • 本节只提供运筹学的工程入口,不替代完整课程。
  • 运筹学关注有限资源下的可执行决策。
  • 线性规划适合资源分配,整数规划适合开关和路由,动态规划适合序列决策。
  • 排队论解释为什么高利用率会带来长尾延迟。
  • LLM 系统的真实优化通常是质量、成本、延迟和可靠性的约束优化。
  • 运筹学不替代深度学习优化,而是补充系统层面的决策框架。

返回: 第 2 章首页

本教程采用 CC BY-NC-SA 4.0 许可协议