文章摘要
nCPU是一个针对模型原生和张量优化的CPU研究运行时项目,提供组织化的工作负载、工具和文档,旨在优化CPU上的模型运行效率。该项目托管在GitHub上,由开发者robertcprice维护,专注于提升CPU在AI模型运行时的性能表现。
文章总结
以下是GitHub项目nCPU的主要内容整理:
项目概述
nCPU是一个完全运行在GPU上的神经网络CPU模拟器,其核心特点是: - 所有CPU组件(寄存器、内存、标志位、程序计数器)均以PyTorch张量形式实现 - 每个ALU操作都通过训练好的神经网络模型执行 - 支持两种执行模式:神经网络模式(默认)和快速模式(使用原生GPU运算)
技术亮点
创新运算方式:
- 加法:采用Kogge-Stone进位前瞻算法(8个神经网络层)
- 乘法:基于字节对查找表的神经网络(256×256×16)
- 位运算:向量化真值表
- 移位:基于注意力的位路由
性能表现:
- 整数运算准确率100%(通过347项测试验证)
- 模型加载时间60ms
- 执行速度136-262微秒/周期(约4,975 IPS)
关键发现:
- 神经网络乘法比加法快12倍(与传统CPU相反)
- 进位前瞻算法使加法速度提升3.3倍
- 向量化使移位操作速度提升6.5倍
项目结构
nCPU/
├── ncpu/ # 核心CPU实现
├── kernels/ # Metal计算内核
├── models/ # 23个训练模型(约135MB)
├── demos/ # 演示程序(含DOOM光线投射)
├── programs/ # 汇编程序
├── tests/ # 测试套件
└── paper/ # 研究论文
使用方式
```bash
安装
pip install -e ".[dev]"
运行程序(神经网络模式)
python main.py --program programs/sum1to_10.asm
快速模式(原生GPU运算)
python main.py --binary firmware.bin --fast ```
演示案例
DOOM光线投射演示展示了神经网络算术的实际应用: - 神经网络模式:约2.5 FPS(所有运算通过模型) - 快速模式:约5,000 FPS(原生运算) - 两种模式输出完全相同
许可协议
MIT开源许可证
该项目由Robert Price开发,目前获得115颗星标,主要使用Python(58.7%)和Rust(40.9%)实现。
评论总结
以下是评论内容的总结:
对LLM数学计算能力的肯定
- RagnarD认为LLM能进行精确数学计算很重要
"Being able to perform precise math in an LLM is important" - deep1283对乘法比加法更快表示惊讶
"What surprised me is the inversion where MUL ends up faster than ADD"
- RagnarD认为LLM能进行精确数学计算很重要
性能比较与疑问
- lorenzohess询问与CPU的速度差异
"how much slower is this than an actual CPU?" - nomercy400质疑传统MUL/ADD周期理论
"MUL and ADD can be implemented in one or a few cycles...What am I missing?"
- lorenzohess询问与CPU的速度差异
对GPU替代CPU的讨论
- bob1029认为CPU在低延迟任务中不可替代
"Latency hiding cannot deal well in workloads that are branchy and serialized" - artemonster批评完全转向GPU的建议不切实际
"suggesting using lambos to plow fields and tractors to race in nascar"
- bob1029认为CPU在低延迟任务中不可替代
幽默与技术想象
- MadnessASAP调侃用神经网络模拟CPU运行ChatGPT
"self-hosting ChatGPT on my own neural network simulated CPU" - mrlonglong用幽默表达惊讶
"Now I've seen it all. Time to die.. (meant humourously)"
- MadnessASAP调侃用神经网络模拟CPU运行ChatGPT
命名与技术本质探讨
- andrewdb质疑GPU的命名合理性
"Most GPUs...aren't 'processing graphics' anyhow" - Surac认为GPU本质是专用CPU
"GPU are just special purpous CPU"
- andrewdb质疑GPU的命名合理性