# 面向 LLM 的 Swarm 优化（PSO、ACO）

> 生物启发优化正在 LLM 上卷土重来。**LMPSO**（arXiv:2504.09247）用 PSO，每个粒子的速度是一条 prompt，由 LLM 生成下一个候选；在结构化序列输出（数学表达式、程序）上效果好。**Model Swarms**（arXiv:2410.11163）把每个 LLM 专家当成模型权重流形上的一个 PSO 粒子，仅用 200 个实例就在 9 个数据集上相对 12 个基线报告了 **13.3% 平均提升**。**SwarmPrompt**（ICAART 2025）把 PSO + Grey Wolf 混合起来做 prompt 优化。**AMRO-S**（arXiv:2603.12933）是用 ACO 启发的信息素专家来做多 agent LLM 路由——**4.7 倍加速**、可解释的路由证据、质量门控的异步更新把推理与学习解耦。本课在 prompt 参数空间上实现 PSO、在 agent 路由上实现 ACO，测量这些经典算法为何契合 LLM 时代、以及何时不契合。

**类型：** Learn + Build
**语言：** Python（标准库）
**前置要求：** Phase 16 · 09（并行 Swarm 网络）、Phase 16 · 14（共识与 BFT）
**预计时间：** ~75 分钟

## 问题背景

你有一条在任务评测上得 62% 的 prompt。你想改进它。朴素做法是无梯度的手工微调，扩展性很差。强化学习需要奖励信号和足够多的 rollout 来训练。对 prompt 做反向传播其实做不到——prompt 是一个离散字符串，不是可微参数。

经典的生物启发优化——PSO 用于连续搜索空间、ACO 用于路径选择——恰恰就是为这个场景设计的：无梯度、基于群体、每次评估便宜。把它们和 LLM 配对来做无梯度搜索步骤，你就得到一个意外实用的优化器。

同样的模式适用于多 agent 系统里的 agent *路由*。一条 ACO 式的信息素轨迹记录哪个 agent 在哪种任务类型上表现最好，让路由器利用这条轨迹，并让信息素衰减，好让路线能被重新发现。

## 核心概念

### PSO 速览（Kennedy & Eberhart 1995）

粒子群优化：连续搜索空间里的一群粒子。每个粒子有位置 `x_i` 和速度 `v_i`。每次迭代：

```
v_i <- w * v_i + c1 * r1 * (p_best_i - x_i) + c2 * r2 * (g_best - x_i)
x_i <- x_i + v_i
评估 fitness(x_i)
若有提升则更新 p_best_i
若是全局最优则更新 g_best
```

其中 `p_best` 是粒子自己的最优，`g_best` 是群体的最优，`w, c1, c2` 是惯性 + 认知 + 社会权重，`r1, r2` 是随机因子。

### 在 LLM 输出上做 PSO —— LMPSO

arXiv:2504.09247 把 PSO 适配到 LLM 生成的结构化输出（数学表达式、程序）上。每个粒子是一个候选输出。速度是一条*描述如何把当前输出朝个体/全局最优修改*的 prompt。LLM 从速度 prompt 生成新输出。速度的「惯性」是一条像「做小幅增量改动」的 prompt。

它在这些情况下效果好：
- 输出是结构化的（可解析、可评估）。
- 适应度是自动的（跑测试、算术求值）。
- 群体小（约 10-30 个粒子），总 LLM 调用数可控。

当适应度需要人工评审时它效果不好——每次迭代的成本变得高到离谱。

### Model Swarms

arXiv:2410.11163 把 PSO 从输出层挪进*模型*层。每个「粒子」是一个专家 LLM（参数）。群体通过无梯度更新把参数朝集体最优移动。报告：在 9 个数据集上相对 12 个基线有 13.3% 平均提升，每次迭代仅 200 个实例。

关键洞见是：LLM 专家模型在一个共享参数流形上本就彼此相邻（adapter 权重、LoRA delta）。在这个低维子空间上做 PSO 既便宜又有效。

### ACO 速览（Dorigo 1992）

蚁群优化：蚂蚁穿越一张图；每条路径有一条信息素轨迹。蚂蚁的移动概率按信息素强度加权。完成任务的蚂蚁按解的质量成比例地沉积信息素。信息素随时间衰减。

### AMRO-S —— 用 ACO 做 agent 路由

arXiv:2603.12933 用 ACO 做多 agent 路由。每种任务类型是一个「目的地」；每个 agent 是一条可能的路线。产出好输出的路线信息素被强化。关键贡献：

- **可解释的路由证据。** 信息素强度是一个人类可读的信号。
- **质量门控的异步更新。** 信息素只在质量检查通过后更新，把推理与学习解耦。
- 在多 agent 路由基准上 **4.7 倍加速**。

质量门很重要：没有它，「快但错」的 agent 会积累信息素，系统会锁死在糟糕路线上。

### 何时为 LLM 用 PSO / ACO

**在以下情况用 PSO：**
- 搜索空间连续，或映射到连续参数（prompt embedding、LoRA 权重、数值生成参数）。
- 适应度便宜且自动。
- 群体能保持小（10-30）。

**在以下情况用 ACO：**
- 你有一个路由或路径选择问题。
- 决策随时间强化（同样的任务类型会回来）。
- 你需要路由决策的可解释证据。

**两个都别用，当：**
- 适应度需要人工评审（每次迭代太贵）。
- 搜索空间是离散且组合的，以 PSO 覆盖不了的方式（改用遗传算法）。
- 实时决策需要严格延迟（PSO/ACO 相对单遍启发式收敛慢）。

### 为什么生物启发仍能赢

基于梯度的方法需要可微信号。LLM 输出和路由决策不是天然可微的。伪梯度方法（强化学习训出的路由器、DPO 式 prompt 调优器）管用，但需要昂贵训练。

PSO 和 ACO 只需要一个*评估器*函数。只要你能给一个候选输出或一个路由决策打分，你就能在这个空间上优化。这把适用门槛降低了很多。

### 实际限制

- **群体预算。** N 个粒子 × T 次迭代 × 每次评估成本。LLM 评测按约 $0.02 / 次调用算，一个跑 50 次迭代的 20 粒子 PSO 成本约 $20。据此规划。
- **探索对利用。** 信息素衰减率和 PSO 惯性是个权衡；衰减太快 → 忘掉解；太慢 → 卡在早期局部最优。
- **灾难性漂移。** 如果适应度地形变化（新数据分布），两个算法都可能先收敛再发散。监控最优适应度的稳定性。

## 动手构建

`code/main.py` 实现：

- `LMPSO` —— 在数值 prompt 参数（温度、top_k 权重）上做 PSO。每个粒子的「LLM 生成」用一个脚本化适应度函数模拟。把算法跑 30 次迭代，展示 g_best 收敛。
- `AMRO_S` —— ACO 式路由。3 个 agent、4 种任务类型、信息素矩阵、100 个路由任务。打印 (task_type → agent choices) 随时间的分布，展示轨迹形成。
- 对比：在同一任务流上随机路由 vs ACO 路由。测量质量和延迟。

运行：

```
python3 code/main.py
```

预期输出：
- LMPSO：g_best 适应度在 30 次迭代里从随机改善到接近最优。
- AMRO-S：信息素表稳定在每种任务类型对应的正确 agent 上；ACO 路由在质量上比随机高约 30-40%，并且降低延迟（更少重试）。

## 实际使用

`outputs/skill-swarm-optimizer.md` 帮你在 PSO、ACO、遗传算法、基于梯度的优化器之间为 LLM / agent 优化问题做选择。

## 拿去用

- **从小开始。** 10-20 个粒子，20-50 次迭代。只在收敛曲线显示明确收益时才扩大。
- **逐迭代记录信息素或 g_best。** 没有轨迹去调试 swarm 优化器很痛苦。
- **质量门控更新。** 尤其对 ACO 路由：「快且错」的 agent 不能积累信息素。
- **分布漂移时重置衰减。** 当你的评测分布变化时，老旧的信息素已过期；临时重置或加倍衰减率。
- **给每次迭代成本设上限。** 输出一个「每迭代成本」指标。一次迭代花 $500、只换来 0.5% 的 PSO 不可发布。

## 练习

1. 跑 `code/main.py`。观察 LMPSO 收敛。把群体大小取 5、10、20、50。在哪个大小上「达到收敛的时间」饱和？
2. 实现一个「灾难性漂移」实验：第 30 次迭代后改变适应度函数。PSO 适应得多快？重置 `p_best` 有帮助吗？
3. 给 AMRO-S 加质量门：只在评测分数 > 0.7 的运行上沉积信息素。这相比不加门的版本如何改变收敛？
4. 读 LMPSO（arXiv:2504.09247）。把论文里的「速度即 prompt」映射回你的数值速度。模拟里丢了什么、保留了什么？
5. 读 AMRO-S（arXiv:2603.12933）。实现解耦的「推理快路径」加异步信息素更新。这在持续负载下如何改变系统延迟？

## 关键术语

| 术语 | 大家嘴上怎么说 | 它实际是什么意思 |
|------|----------------|------------------------|
| PSO | 「粒子群优化」 | Kennedy-Eberhart 1995。基于群体的无梯度优化器。 |
| ACO | 「蚁群优化」 | Dorigo 1992。通过信息素轨迹做路径/路线优化。 |
| LMPSO | 「带 LLM 生成的 PSO」 | arXiv:2504.09247。速度是 prompt；LLM 产出候选。 |
| Model Swarms | 「在专家权重上做 PSO」 | arXiv:2410.11163。在模型参数子空间上做无梯度更新。 |
| AMRO-S | 「用 ACO 做 agent 路由」 | arXiv:2603.12933。task-type × agent 上的信息素矩阵。 |
| p_best / g_best | 「个体 / 全局最优」 | 至今找到的每粒子和全群最优解。 |
| Pheromone | 「路由记忆」 | 一条边上的强度；随时间衰减；按质量沉积。 |
| Quality-gated update | 「只从好运行里学」 | 信息素沉积以质量检查为条件。 |
| Catastrophic drift | 「分布漂移」 | 适应度地形变化；旧的 p_best 和信息素变得过期。 |

## 延伸阅读

- [Kennedy & Eberhart — Particle Swarm Optimization](https://ieeexplore.ieee.org/document/488968) —— 1995 年 PSO 论文
- [Dorigo — Ant Colony Optimization](https://www.aco-metaheuristic.org/about.html) —— 1992 年 ACO 基础
- [LMPSO — Language Model Particle Swarm Optimization](https://arxiv.org/abs/2504.09247) —— 面向结构化 LLM 输出的 PSO
- [Model Swarms — gradient-free LLM expert optimization](https://arxiv.org/abs/2410.11163) —— 在模型权重子空间上做 PSO
- [AMRO-S — ant-colony multi-agent routing](https://arxiv.org/abs/2603.12933) —— 带质量门的信息素驱动路由
