将MAX_JOBS保持在32 | AI生成和翻译

Home 2026.06

问题:我们能否将 MAX_JOBS 设置为大于 32,以进一步加快编译速度?

答案:不,你不应该再增大 MAX_JOBS 将其保持在 32(或者甚至略微降低)是最安全的选择。

虽然你的内存有充足余量(149 GB 空闲),但进一步增大 MAX_JOBS 不会让构建更快,反而可能由于 CPU 超额订阅进程抖动 而变慢甚至崩溃。

以下是你的构建速度下降的原因,以及为什么更高的数值不会有所帮助。


为什么设置更高不会有用

1. 你有 20 个 vCPU,但已经有 66 个编译器进程在运行

仔细看日志中的这一行:

已使用 32 GB 内存,空闲 149 GB — 无内存压力。正在运行 66 个 hipcc 进程。

即使你设置了 MAX_JOBS=32,Python 构建系统在生成 hipcc(AMD 编译器前端)时,往往每个任务会创建多个子进程(例如预处理、编译和汇编)。 由于你的 AMD 云实例只有 20 个 vCPU,66 个活跃进程意味着你的 CPU 严重超额订阅。CPU 核心花费更多时间在上下文切换(任务之间来回切换)上,而不是实际计算。

2. “后续内核”瓶颈

正如你的自动化代理(Hermes)正确指出的:“后续内核只是更大。” 编译过程并不是从头到尾处理相同的文件。

现在每个单独的文件都需要更长的编译时间。强行让一台 20 vCPU 的机器同时处理超过 32 个这样的大文件,会完全饱和 CPU 的指令流水线。


如果继续调高会发生什么?

如果你尝试将 MAX_JOBS 设置为 64 或更高:


总结策略

你当前的进度(剩余约 35 到 50 分钟)是完全正常的,对于从零开始为 gfx942(MI300X)这样的高性能目标编译 FlashAttention 来说,这是预期情况。

让当前构建完成。好消息是 你只需要做这一次。一旦 .whl 包或安装完成,FlashAttention 将在你的 MI300X GPU 上以原生速度运行,无需再次编译。


Back Donate