4

从候选列表到张量化计算图

AI999 第4课:现代计算底座与张量化并行演化
00:00

在演化计算中,多样性是算法有效的前提:只有维持足够多的候选解,选择压力才不会过早把种群挤进局部最优。但多样性同时意味着庞大的计算量——一次运行往往需要评价数万乃至数百万个候选解。当候选被写成普通的对象数组,用逐项循环把它们一个个送去做评价时,计算的大部分时间都消耗在逐项调度与宿主语言的控制流上,而不是真正的数值运算,这正是传统串行 CPU 循环在处理数万次候选评价时效率低下的根本原因。

从候选列表到张量化计算图 表达方式的跃迁 候选列表(逐项处理) 每个候选是一个独立对象 1 候选 x₁ 2 候选 x₂ 3 候选 x₃ 4 候选 x₄ 逐个候选 · 串行 CPU 循环 评价数万次时效率低 开销在逐项调度与控制流 候选张量 整代候选统一写入 [种群规模, 解维度] 一行 = 一个候选解 计算图:张量化运算 选择与状态更新进入图中,接受编译优化 变异 作用于整群 评价 一次得整代 选择 张量索引 状态更新 归约节点 整图接受编译优化:算子融合 · 并行调度 评价输出形状:[种群规模] 或 [种群规模, 目标数] 整体计算:变异、评价、选择、状态更新一次进入计算图

表达方式的跃迁:从候选列表到张量化计算图

EvoX 带来的改变不是某个算子的局部加速,而是演化过程表达方式的改变:从逐个候选的列表式处理,转向以张量为一等公民的批量计算。候选集合不再散落在对象数组里,而是与评价结果、算法状态一起被统一组织为张量,使它们可以整体参与运算。

  • 候选张量:把整代候选写成形状为 [种群规模, 解维度] 的张量。此时“一个候选”只是张量中的一行,而不再是一个独立的宿主语言对象。
  • 批量算子:变异等操作直接作用于整个种群,一次调用即完成对全部候选的更新,而不是循环调用 N 次。
  • 批量评价:以 evaluate(候选张量) 的形式一次性得到整代的评价结果,评价的数量单位从“个”变成“批”。
  • 计算图:选择与状态更新不再只是串行控制逻辑,而是图中的节点,因而获得算子融合、并行调度等编译优化机会。

两种写法的对照

列表式写法近似于:逐个取出候选、逐个评价、逐个比较并更新状态——每一步都依赖宿主语言的循环,难以整体优化。张量化写法则是:候选张量 → 变异 → 评价 → 选择 → 状态更新,整条链路由张量运算组成并表达为一张计算图,编译器可以对整张图做融合与设备调度。注意:算法的逻辑(变异分布、选择压力)并没有被改写,被改写的是表达方式。

核心术语
张量化计算——以张量为最小处理单位,让变异、评价、选择、状态更新都以批量形式作用于整个种群,并允许这些批量运算进入计算图接受编译优化。本页的关键跃迁可以记作一句话:从“候选列表”到“张量化计算图”。