AXIOM:专为 LLM 推理设计的 Rust 内核
Show HN 项目 AXIOM 以 Rust 编写裸机内核,通过张量原生内存分配、层边界调度与双缓冲权重流,将每层流式…
在 Hacker News 的 Show HN 板块,一个名为 AXIOM 的项目引起关注:它不是通用操作系统,而是一个用 Rust 编写、运行在裸机环境下的 no_std 内核,专门为 Transformer 推理设计。作者试图回答一个具体问题——当 LLM 推理被塞进 4GB 级别的内存受限设备时,Linux 默认栈的两个特性(4KB 通用的 buddy 分配器与约 4ms 粒度的 CFS 抢占)会与推理工作负载产生结构性错配,是否值得在内核层面替换它们。
研究动机:Linux 与推理负载的两处错配
作者归纳出两个驱动 AXIOM 的失败模式:
- 调度粒度错配:CFS 的周期抢占粒度大约为 4 ms,而单层 attention 与 FFN 的执行时间跨度常常与之相当或更长。层中段被抢占会把当前工作集逐出缓存,导致每次跨层都需要重新「暖」缓存。
- 内存抽象错配:Linux 的伙伴分配器面向通用多进程场景;KV cache 与权重是大尺寸、形状稳定的张量,访问模式可预测。在内存压力下,swap 回退成为延迟主因,交互式推理变得不现实。
AXIOM 的做法是在内核层直接改造,而不是在用户空间补丁。
三个内核级原语
张量原生内存分配
AXIOM 在启动时预留一块物理连续的「张量区域」,划分为三个固定用途的池:
- KVCachePool(约 45%):固定 slab,热路径不发生重定位与分配抖动。
- WeightPool(约 45%):按层分槽,使用 Unloaded → Streaming → Resident → Computing 的状态机管理。
- ActivationPool(约 10%):三缓冲环形索引(pos % 3),前向热路径零分配。
这样做的核心收益是把分配器工作从 token 路径上摘除,让内存布局贴合张量的实际访问模式,而不是进程抽象。
LayerLock 层边界调度
内核在单层执行期间显式抑制抢占,把调度决策推迟到 yield_at_layer_boundary()。这一改动保证层内缓存驻留不被切断,并使时序行为可以在模型层粒度上推理,而不是被周期性中断打碎。
双缓冲权重流
第 N 层从 buffer A 计算时,第 N+1 层已经预取进 buffer B,把「等下一层权重」造成的停顿隐藏到当前层的计算时间里。作者给出的当前测量结果是:流式开销从大约 1.4 秒/层降到大约 42 微秒/层,降幅约五个数量级。
现状与边界
AXIOM 目前已经能在 QEMU 上启动,初始化内存、中断、调度、流式与运行时子系统,运行量化后的 Transformer 推理,并输出逐层时序与基准遥测后停机。它刻意排除了通用用户态、文件系统、网络栈以及推理任务之外的传统进程模型,端到端吞吐仍受算力与基于 VM 的存储模拟拖累。
作者给出的目标评估平台是裸机 NVMe 上的 7B 级内存受限推理(例如 4GB 级别系统),而非替代 Linux 的通用桌面或服务器发行版。换言之,AXIOM 的定位是「推理基底」,而不是一台可以日常使用的电脑。
意义与局限
从工程角度看,AXIOM 展示了一条「让 OS 原语贴合推理结构」的可行路径,并把改进点下沉到内核最热的几条路径上;42 微秒/层这个数字也表明 Linux 默认栈在受限设备上确实存在显著的低效空间。不过该项目仍处于原型阶段:单线程、单任务、内置即停机、无文件系统与网络,加上测量是在 QEMU 模拟环境中取得,距离替代生产路径仍有相当距离。对关注 LLM 端侧部署、推理运行时优化的开发者而言,AXIOM 是一个值得追踪的实验性参考实现。
