GitHub - athrael-soju/Narwhal: 自适应解耦推理,基于自由角色机群!
📌 One-Sentence Summary
Narwhal 是一个自适应的解耦推理框架,能够自动在预填充(prefill)和解码(decode)角色之间进行热交换,以响应需求变化,并且无需重新加载模型权重。该系统能够从单个 GPU 扩展到多节点部署。
📝 Summary
Narwhal 是一个自适应的解耦推理框架,能够自动在预填充(prefill)和解码(decode)角色之间进行热交换,以响应需求变化,并且无需重新加载模型权重。该系统能够从单个 GPU 扩展到多节点部署。角色控制器会评估当前的角色分配方案,以及每个相邻的分配方案(即进行一次引擎移动即可达到的状态)。它利用已测量的引擎性能、提供的需求量,以及驻留工作来预测每个分配方案的表现。一个分配方案的得分即为它在首个令牌时间(TTFT)、每个输出令牌的时间(TPOT)和解码队列这三个服务水平目标(SLO)中的最差表现比率。预测则基于测量的窗口需求。针对从解码到预填充的候选方案,其解码需求取自短期和长期估计中较大的一项。当评分提升超过配置的阈值时,控制器会移动到一个相邻的分配方案。从解码到预填充的移动还要求解码需求稳定,并且到达证据窗口已经关闭。该窗口在到达 `controller.reactive.evidence_span_s` 且满足最低到达数量,或者在 `controller.reactive.evidence_max_span_s` 后稀疏流量下,就会关闭。如果预填充的负载低于 `controller.thresholds.shrink`,则可以进行从预填充到解码的移动。当稳定运行期的需求在确认跨度内发生变化时,控制器会移动一个引擎。稳定的运行期定义为 `controller.reactive.evidence_span_s`,或者如果变化趋势与最近的控制器移动相反,则为短一个确认跨度的周期。当变化持续时,控制器会继续向该方向移动引擎,具体为:在第一次逆向移动之后,以及在 `controller.reactive.evidence_span_s` 后对任何其他变化进行响应。在需求稳定的情况下,只要到达证据窗口关闭,得分就会在相邻的分配方案之间做出选择。每次移动都需要通过以下限制:固定引擎、角色下限、冷却期、驻留时间间隔、解码捐赠方驻留流上限,以及引擎生命周期暂停。当角色低于其配置下限时,地板恢复机制会在每个监控周期移动一个引擎。新请求会遵循修改后的分配方案,而驻留请求则继续在分配的引擎上完成。
💡 Main Points
角色热交换
在固定数量的 GPU 机群中重新分配预填充和解码角色,同时使用 NIXL 机制在它们之间传输键-值(KV)数据。
服务于补全和聊天请求,无论是否流式传输还是缓存,都采用了具备延迟感知的入院机制。
在发生故障时,能够切换到热备份路由器,并基于其活动进程生成来重新接纳引擎。
对引擎进行性能分析,运行有序的基准测试点,并保留每个点的证据数据。
将路由器和引擎的度量数据导出到 Prometheus,并提供配置好的 Grafana 仪表板。
操作员工具
离线验证机群文件,并收集私有的诊断包。
能够在 Ubuntu 或 WSL2 系统上,使用一个 NVIDIA CUDA GPU 运行 2 至 8 个引擎。
💬 Key Quotes
角色控制器会评估当前的角色分配方案,以及每个相邻的分配方案,即进行一次引擎移动即可达到的状态。
📊 Article Meta
AI Screening: 85
Source: Hacker News - Newest: "LLM"
Author: athrael-soju
Category: 人工智能
Language: 英文
Read Time: 3 min
Word Count: 616
Tags:
AI 与智能应用 , AI 工程 , 模型路由 , 开源项目 , LLM 推理优化
刚好最近在找这方面的资料,太及时了。
不错不错,已加入书签。