64GB内存跑2.8T Kimi K3!Deltafin SSD加载提速82倍

当2.8万亿参数的超大型MoE模型Kimi K3开放权重后,有开发者提出了一个看似不可能的挑战:能否在一台仅64GB内存的第一代M1 Max Mac上完整运行这款模型?
这个名为Deltafin的开源项目由独立开发者团队维护,仓库托管在gavamedia名下,项目主页明确说明,其与模型官方没有任何关联。
Deltafin的核心目标清晰直接:在单台设备上完整运行Kimi K3,并提供兼容OpenAI的API服务,支持本地聊天与代码代理工作流。
测试使用的设备为10核CPU、32核GPU的初代M1 Max,模型完整存储在本地SSD中,最终稳态解码速度的中位数达到0.0687 token/s,换算下来每生成一个token需要14.6秒,一段100token的简短回答需要等待约24分钟。
这个速度虽然算不上理想,但更值得关注的是:这台Mac的内存仅能容纳模型权重的二十分之一,却依然完成了完整的模型推理,背后的工程思路颇具参考价值。
64GB内存如何容纳1.56TB模型权重?
Kimi K3是一款MoE混合专家模型,总参数量达到2.8万亿,每个token仅激活约1040亿参数。模型内置896个路由专家,每一层只会选择16个专家参与当前token的计算。
这并不意味着未被选中的专家可以被移除:下一轮会调用哪些专家需要由路由模块实时决定,因此完整的权重文件必须始终处于可调用状态。
Deltafin的核心思路是将SSD纳入推理数据通路,具体实现方式分为以下几点:
- 将注意力、共享专家、嵌入层等非路由部分整理为约114GB的spine模块,转换为int8精度后逐层读取并计算
- 82432个路由专家总计约1.45TB权重,在完整模式下全部存储在本地SSD中
- 每进入一个MoE层时,仅读取路由模块刚刚选中的16个专家权重
- 如果没有1.7TB的空闲磁盘空间,也可以选择仅下载约215GB的基础模块,缺失的专家可临时从远程仓库拉取
整个过程没有对模型进行蒸馏压缩,也没有裁剪专家池,只是将传统的“全部载入显存”模式,改为“需要时再从SSD调取”的思路。
每生成一个token,SSD需要传输25.8GB数据
Kimi K3共计92个MoE层,每个token需要读取16个专家,乘以92层后,每生成一个token约需要读取25.8GB的专家数据。因此Deltafin的运行速度,很大程度上取决于数据从SSD到内存的传输效率。
项目提供两种部署模式:
- 完整模式:占用约1.7TB磁盘空间,下载需要5到10小时,推理过程无需依赖网络,在测试的M1 Max上可达到14.6秒/token的速度
- 流式模式:初始仅占用约215GB磁盘空间,半小时即可完成启动,未缓存的专家需要临时从远程拉取,推理速度会降至3分钟以上每token
看似只是减少了1.5TB的下载量,实际上是将磁盘IO压力转移到了网络。由于单次聊天请求的模板本身就包含60多个token,首次预填充会触发大量不同的专家调用,流式模式下单次请求等待数小时并不罕见。
从20分钟1token到14.6秒1token,82倍提速背后的优化
Deltafin的首个版本仅能实现约20分钟每token的推理速度,当前版本已经将速度提升了约82倍,达到14.6秒每token。首个token的预填充速度提升更为显著:5token的提示词预填充时间从2429秒降至28秒,提升幅度接近87倍。
这些性能提升并非依靠单一的神奇优化,而是从内存管理、数据拷贝和磁盘读取多个维度进行了精细化调整:
- 对spine模块进行int8量化:非专家权重从约107GB压缩至约53GB,既减少了逐层读取的数据量,也为系统页缓存腾出了更多空间
- 优化专家权重的读取路径:通过Metal框架直接读取MXFP4打包格式的权重,将解码、矩阵乘法和专家结果合并在同一执行路径中,避免了先扩展为fp32格式再计算的额外开销
- 并行化处理层加载与计算:将层加载、专家预取和模型计算尽量重叠执行,当n-gram推测命中时,一次前向传播可以同时处理两个token
仅专家读取路径的吞吐效率就从约0.87GB/s提升至6.85GB/s,对应耗时从约40秒压缩至4.3秒。
0.0687 token/s的测试结果并非单次偶然,项目团队汇总了6次完整模型运行的结果:使用完全相同的5token提示词,核对固定的3token输出,舍弃第一次解码的结果后统计稳态速度,单次结果落在0.0503到0.0779 token/s之间,0.0687是所有测试的中位数。
项目使用建议与现状
按照14.6秒每token的速度计算,每分钟大约可以生成4.1个token。短问题还可以缓慢等待结果,但长文本回答和代码代理任务则需要按小时计算等待时间。
尽管项目提供了兼容OpenAI的API接口,可以对接聊天客户端和代码工具,但当前版本仅支持贪心解码,单次只能处理一个请求,长系统提示词的预填充成本依然很高。项目维护者的定位非常清晰:该项目仅用于技术研究,不适合作为日常工作流工具。
如果想要尝试部署该项目,需要提前准备以下条件:
- 64GB内存仅为测试参考值,更多内存可以为SSD页缓存提供更大的空间
- 完整模式需要约1.7TB的空闲磁盘空间,优先使用速度稳定的本地NVMe硬盘
- 需要Python 3.12及以上版本,macOS环境还需要安装Xcode Command Line Tools
- 新一代Max或Ultra系列设备理论上拥有更高的内存带宽,但当前的0.0687 token/s测试结果仅来自初代M1 Max
尽管这还不是一套成熟的本地聊天方案,但一台2021年的Mac已经能够完整运行2.8万亿参数的模型并生成正确的输出,这无疑为大模型本地部署打开了新的思路,Deltafin只是撬开了这条道路的一条缝隙。


