近日,一位Reddit家庭实验室爱好者利用已停产的英特尔第二代傲腾持久内存(Optane PMem 200系列),在一颗40核第三代至强可扩展处理器上,成功运行了月之暗面的2.8万亿参数Kimi K3模型,整个推理过程完全依靠CPU完成,未使用GPU。 搭建者表示,傲腾内存在持续进行大模型推理时会产生大量热量,必须将主动DIMM散热视为必要措施。他专门使用两台额定功率为12W的鼓风机,对准内存模块
近日,一位Reddit用户在其家庭实验室中开展了一项实验,利用已停产的英特尔第二代傲腾持久内存(Optane PMem 200系列),成功在一台配备40核第三代至强可扩展处理器的计算平台上实现了对月之暗面的2.8万亿参数Kimi K3模型的推理。值得注意的是,此次推理过程完全依赖CPU,未使用任何GPU。
首先,该实验者指出,傲腾内存在进行大规模模型推理时会产生大量热量,因此需要采用主动散热措施以防止过热。他使用两台额定功率为12W的鼓风机直接对准内存模块,以确保将温度控制在安全范围内。此外,实验者特别警告说,傲腾模块的高温可能对邻近的DRAM内存产生负面影响,甚至可能导致其损坏。
其次,在性能方面,实验的初步测试表明,采用1比特量化时,推理速度约为每秒0.85个Token,而在3比特量化的情况下,速度下降至每秒0.75个Token。然而,在关闭直接访问(DAX)挂载选项后,1比特量化的推理速度提升至每秒1.50个Token,几乎接近翻倍。分析认为,这一提升源于DAX模式会绕过Linux内核的页面缓存,关闭DAX后频繁访问的数据可缓存在DRAM中,从而减少直接访问傲腾内存的频率。 龙八唯一
Kimi K3作为一款超大规模的混合专家(MoE)模型,其总参数量高达2.8万亿,实际运行中每个Token激活的参数量约为1040亿。尽管MoE架构允许减少单次推理参与计算的参数量,但模型权重的存储需求仍然十分庞大。根据Tom's Hardware的报道,即便是采用社区提供的最小量化版本,运行该模型所需的内存仍然达到约610GB,这对普通用户构建此类平台的成本构成了极大挑战。
此外,英特尔傲腾内存具备两种工作模式:Memory Mode和App Direct。Memory Mode将傲腾内存作为系统主内存使用,并以DRAM作为缓存,用户无需进行特别的软件适配。而App Direct模式则将傲腾内存作为一个独立的持久化存储区域,由操作系统和应用程序直接管理,这种模式更好地支持模型数据及张量的灵活控制。
总的来说,使用傲腾内存替代DRAM通常会导致性能损失。在此次实验中,即使采用1比特量化,初始推理速度仅为每秒0.85个Token,3比特量化下速度更是下降至每秒0.75个Token。虽然在关闭DAX后,推理速度有所提升,但整体性能仍难以满足实时交互的需求。以每秒约1个Token的速率计算,生成5万个Token大约需要13.9小时,而实际任务的执行时间可能因上下文处理等因素而更长。 龙八唯一
在对比中,值得提及的是,早期的第一代傲腾方案实现了每秒约4个Token的推理速度。然而,该方案的基础是参数约1万亿的Kimi K2.5模型,并采用了2比特量化和Memory Mode,同时还依赖了一块RTX 3060进行部分计算。此次实验则是针对更大规模的Kimi K3模型,采用了App Direct模式,且完全未使用GPU。
最后,该实验还暴露出散热控制的问题。搭建者指出,持续进行模型推理会使得傲腾DIMM极其发热,并可能对邻近DRAM内存构成威胁。根据英特尔提供的相关数据,傲腾持久内存在12W和15W功耗下分别需要约2.4米/秒和2.7米/秒的气流速度,这通常属于专业级服务器的散热要求,普通家用机箱难以满足。
综合以上分析,当前的推理性能数据仍为初步结果,搭建者尚未对CPU线程数量及非一致性内存访问(NUMA)的亲和性进行优化,因此未来还有改进的潜力。对于后续工作,搭建者计划增加GPU,并尝试将部分模型数据加载至DRAM中,以实现DRAM与傲腾内存的协同工作。 龙八唯一