跳转至

作业 5 进阶部分:从工业与学术前沿分析NexOS的设计

一、作业目标

作为二选一的进阶选项,本部分面向希望进一步拓展的同学,探索如何将业界和学术界前沿的大模型推理技术引入 NexOS。选择本部分的同学不需要同时完成基础部分。

本部分不强制要求完成完整代码实现。你可以选择一个方向,结合 NexOS 当前已有的用户程序、AI service、内存管理和文件系统机制,完成一份系统设计方案。

可探索方向

可以探索的方向示例如下:

在端侧场景下,应当如何在资源受限的情况下最大化系统的推理吞吐量?可以采用的技术示例:

技术示例

模型权重卸载与预取:随着大模型的不断发展,模型权重愈发增大,当模型权重在内存中存放不下的时候,我们需要将模型权重卸载到 SSD 中,并在推理过程中,按层从 SSD 中拉取权重。为了缓解推理中权重加载造成的停机时间,可以采用预取的技术,根据当前执行的情况,将下一层的权重提前加载到内存中。

FlexGen 权重卸载与预取示意
模型权重卸载与预取示意

在云端场景下,面对大量用户请求产生的天量 KV Cache,应当如何进行管理?可以采用的技术示例:

技术示例

Prefix Cache 及相关管理:在云场景下,大量请求之间存在相似度,例如请求之间共享的 System Prompt、多轮对话中之前的对话记录等等。每次都重新计算这些历史信息会带来大量的冗余计算,将这些 KV Cache 缓存下来并进行复用是直接降低推理成本的有效方案。但是这会引入 KV Cache 的存储与管理问题:在内存中存放全部的 KV Cache 并不现实,因此我们需要将部分可能复用到的 KV Cache 卸载到大容量的 SSD。同时,还需要根据这些 KV Cache 的复用频率动态迁移,将经常复用的 KV Cache 放到访问较快的内存中,将较少复用的 KV Cache 迁移到 SSD 中,一直没被复用的 KV Cache 可以驱逐弃用。

Prefix Cache 与 KV Cache 管理示意
Prefix Cache 与 KV Cache 管理示意

开放探索

同学们还可以自行探索感兴趣的部分,以上两点只是助教提供的部分参考。


作业说明

本部分为二选一的进阶部分,满分上限为 120 分。我们鼓励同学们认真阅读相关论文,结合 NexOS 的实际机制提出自己的设计思路。

可以使用 AI 工具辅助资料整理、语言润色或思路启发,但提交内容必须体现个人理解、系统分析和与 NexOS 的具体结合。如果进阶部分提交内容空泛、缺少独立思考,或明显依赖 AI 生成且无法在助教追问中解释设计依据,助教将按实际质量评分,最高按基础部分 100 分档评价;情节严重者还会进一步扣分

作业要求

请选择上述一个方向,提交一份 5 页以内 的设计与实现文档。

文档结构要求

提交的实现文档需要包括但不限于下面的部分

  • 场景与问题定义

    说明你选择的是哪一个场景,以及该场景中要解决的核心问题。

  • 挑战分析

    说明解决该问题可能会遇到哪些系统挑战。

  • NexOS 上的设计方案

    结合 NexOS 当前系统,说明你的设计会涉及哪些模块,至少需要讨论其中的两个模块:

    • AI service;
    • 内存管理;
    • 文件系统;
    • 用户态程序;
    • 系统调用接口;
    • 请求调度与状态管理。

    可以从以下角度来说明:

    • 需要新增哪些数据结构?
    • 需要修改哪些模块?
    • 一次请求执行时,这些模块如何协同工作?
    • 哪些部分可以在当前 NexOS 中模拟实现?
    • 哪些部分由于 NexOS 当前不支持真实 GPU/SSD/完整 LLM runtime,只能作为设计讨论?
  • 预期效果与局限性

    说明你的方案希望优化什么,以及可能带来什么开销和问题。

提交要求

请提交一篇 5 页以内的 PDF 报告到BB系统上作业五的进阶部分。

  1. 需要给出足够清楚的系统设计和伪代码;
  2. 文档中需要说明参考了哪些论文或系统;
  3. 文档中需要明确指出:哪些设计可以基于当前 NexOS 实现,哪些需要 NexOS 未来进一步支持。