999美元AI卡实测翻车?Tenstorrent开源软件栈为何难用  

硬件便宜没好货?Tenstorrent用999美元告诉你软件才是真坑

999美元买AI加速卡,软件全开源,听起来像白菜价大甩卖。但CUDA程序员上手直接懵了:写一个CUDA内核的活,在这儿要拆成三个C++文件,还得靠五个RISC-V小核在那传纸条。硬件参数写着2-3倍优势,实测结果跟NVIDIA入门卡打成平手。问题出在哪儿?

Tenstorrent最近搞了个大新闻。他们家的AI加速卡只卖999美元,而且整个软件栈全部开源。指令集开源,内核API开源,编译器开源,算子库也开源,一套带走。这事儿放在AI硬件圈子里,差不多相当于法拉利宣布卖三轮车的价,还附赠全套维修手册。

但是。这个“但是”得加粗大写。

你要是写过CUDA,上手TT-Metalium会感觉像进了另一个次元。CUDA的写法很简单:写一个内核函数,负责把数据加载进来,计算,再把结果存回去。一条龙服务,干净利落。Tenstorrent不这么玩。他们把这事儿拆成了三个独立内核:一个负责读数据,一个负责算,一个负责写结果。三个C++文件,三个二进制程序,同时在每个Tensix核心内部的五个RISC-V处理器上并发跑。

这三个内核之间怎么交流?用循环缓冲区。说白了就是在L1 SRAM里开几个生产者-消费者队列。读内核把数据块推到一个缓冲区里,算内核在那儿阻塞等着,数据到了就取出来算,算完推到下一个缓冲区,写内核再等着把结果写回显存。整个同步机制全靠这些环形缓冲区撑着。没有__syncthreads(),没有原子操作,没有共享内存那一套。CUDA程序员看了直呼:我线程呢?我屏障呢?我那么大的共享内存呢?

这种设计直接导致内存模型也完全不一样。NVIDIA那一套有硬件缓存,有共享内存,你多少能靠硬件帮你兜点底。Tenstorrent零硬件缓存。每个Tensix核心自带1.5MB私有SRAM,想要DRAM里的数据?自己写DMA指令搬。想要隔壁核心SRAM里的数据?指定坐标和地址,发一个异步片上网络读请求。每个字节的移动都得程序员亲手安排。Blackhole芯片有140个核心,合计210MB的SRAM,外加32GB GDDR6显存,带宽512GB/s。数字看着挺大,但问题是这些SRAM是分散在140个核心里的,你得自己调度数据往哪儿搬、什么时候搬、搬多少。

计算方式也独特。所有计算都基于32x32的数据块,硬件自动处理存储格式和计算格式之间的转换。比如存的时候用块浮点数省空间,算的时候自动转成FP32精度。这套机制本身挺聪明,但前提是你得按照它的规矩来写代码。

好,硬件听起来还挺有想法,那实际跑起来呢?

微基准测试显示,单跑某个算子的时候,硬件能跑到理论峰值附近。但一上大模型推理,Blackhole芯片140个核心里有76个闲着,只能跑向前兼容Wormhole的内核。性能利用率直接腰斩,只达到峰值的50%左右。The Register评测了11999美元的QuietBox整机,评价是“困在软件黑洞里”。1399美元的Blackhole p150a实测表现跟NVIDIA DGX Spark几乎一样,虽然规格上看起来应该有2到3倍的优势。

硬件参数领先,实测打平,这中间的差距全在软件上。

社区里已经有人在吐槽了。有位老哥说自己写的矩阵乘法比TT-Metalium还快,而且只用了6400条RISC-V汇编指令,用Python生成的。他忍不住问:这芯片设计这么简洁,你们为啥非得搞个编译器加五十万行C++?这话虽然有点扎心,但确实点到了痛处。

问题在于,Tenstorrent这套软件栈的学习曲线陡得跟悬崖一样。CUDA程序员习惯了把一切都塞进一个内核里,线程之间用屏障同步,共享内存随便用。到了Tenstorrent这儿,得把计算拆成三个阶段,每个阶段单独写一个C++文件,然后通过环形缓冲区把它们串起来。数据移动全靠手动DMA,跨核心通信得指定坐标。这套范式跟CUDA差了十万八千里,迁移成本高得吓人。

更麻烦的是,现有的AI生态完全围绕CUDA转。PyTorch、TensorFlow、vLLM、HuggingFace Transformers,这些库的优化都是针对NVIDIA硬件做的。Tenstorrent虽然开源了全套软件,但生态迁移不是一朝一夕的事。你得让开发者愿意花时间去学一套新范式,去重写现有模型的内核,去调试那些跨核心的数据依赖问题。除非性能优势大到让人无法拒绝,否则没人愿意费这个劲。

现在的情况是,不止Tenstorrent一家在软件上栽跟头。Cerebras、Intel、AMD都有性价比不错的硬件,但实际用起来都受限,只能在特定的模型和场景下发挥。硬件便宜了,软件没跟上,最终用户还是没法用。这就像买了个超级跑车,发动机参数漂亮,结果发现只有一条特定的赛道能跑,其他路上连方向盘都打不动。

Tenstorrent倒是把希望寄托在开源社区上。他们把全套软件栈开源出来,指望社区开发者能帮着填坑优化。思路没问题,但开源不是万能的。一个工具要吸引社区贡献,首先得有人用,有人用首先得让上手难度足够低。目前这套三个内核加环形缓冲区的编程模型,入门门槛实在有点高。

还有个有意思的细节。Blackhole芯片跑大模型时,140个核心里有76个闲着,只能跑Wormhole的兼容内核。这说明新硬件的特性在软件层根本没发挥出来,大量核心在空转等数据或者执行低效的兼容代码。硬件设计再超前,软件调度跟不上,就是浪费硅片。

回过头看,Tenstorrent选择走了一条跟NVIDIA完全不同的路。NVIDIA用统一的内存模型、硬件缓存和CUDA生态,把编程复杂度包在自己手里,开发者只需要关注算法。Tenstorrent把数据移动的控制权完全交给程序员,换来理论上更高的效率和灵活性,但也把复杂度甩给了开发者。这个选择本身没有对错,问题在于当前的软件栈还没能把硬件的潜力兑现出来。

999美元的AI加速卡,全套开源软件栈,听起来是开发者的福音。但福音能不能落地,得看有多少人愿意跨过那道陡峭的学习曲线,去填那五十万行C++代码里的坑。硬件价格打下来了,软件的学习成本却上去了。这账怎么算,还得看你是愿意花999美元买卡再搭上几百个小时学新范式,还是直接加钱上CUDA生态图个省心。

开源是好事,但开源不等于好用。Tenstorrent把全套家当都摆出来了,接下来就看社区能不能接住这个盘,把软件黑洞填成软件坦途。毕竟,硬件再便宜,代码写不出来也是白搭。好在他们自己也知道问题在哪儿,在推文下面回了一句“that's where we come in”,看来已经在动手补软件课了。

硬件低价不等于总拥有成本低,软件栈的学习曲线才是真正的隐形账单。那些闲置的核心和跑不满的带宽,迟早都要靠开发者的头发来填。