去年我们团队在搭建LLM训练环境时,发现传统GPU方案的成本高得离谱。一台配备8张A100的服务器报价超过15万美元,这促使我们开始寻找替代方案。经过三个月的测试验证,我们成功用加密货币矿机改造出了一套基于Tenstorrent Blackhole芯片的AI计算集群,性能媲美商用方案的同时,成本直接腰斩。
这套方案的核心在于利用了Tenstorrent最新发布的Blackhole系列加速卡的两个独特优势:一是通过QSFP-DD直连实现卡间高速通信,大幅降低了对PCIe通道的依赖;二是其GDDR6显存配置特别适合大模型训练。下面我就把整个搭建过程中的关键要点和踩过的坑完整分享给大家。
Tenstorrent Blackhole p150a是我们选择的主力计算单元。与NVIDIA方案相比,每张卡32GB GDDR6显存和774 TFLOPS的FP8算力,在1,400美元的价位上性价比突出。更重要的是其网络设计——每卡配备4个800Gbps的QSFP-DD接口,可以直接通过线缆实现卡间互联,这解决了多卡训练时的通信瓶颈。
关键提示:一定要选择p150a而非p150b型号,因为矿机机箱的散热条件有限,p150a的散热设计更适合这种场景。
我们测试了三种不同型号的二手矿机,最终选定Antminer S9的改造方案,原因有三:
| 组件 | 型号 | 数量 | 单价 | 备注 |
|---|---|---|---|---|
| 矿机 | Antminer S9 | 1 | $65 | 二手市场均价 |
| 加速卡 | TT Blackhole p150a | 4 | $1,410 | 含运费 |
| 线缆 | Molex QSFP-DD 400G | 6 | $42 | 1米长度 |
| 电源转接头 | 12VHPWR转8pin | 4 | $12.5 | 定制版 |
总成本约6,000美元,相比Tenstorrent官方12,000美元的QuietBox方案,我们用一半价格获得了相同的计算能力。虽然PCIe扩展性较弱,但通过合理的网络拓扑设计完全可以满足训练需求。
我们使用了一台淘汰的Dell R720作为主机,在BIOS中必须确保以下设置:
踩坑记录:最初使用Supermicro主板时由于AER设置不正确,导致TT-SMI工具无法识别设备状态,花费两天时间排查。
四卡系统的全连接拓扑需要6条直连线缆,具体连接方式如下:
code复制A卡QSFP1 ↔ B卡QSFP1
A卡QSFP2 ↔ C卡QSFP1
B卡QSFP2 ↔ D卡QSFP1
C卡QSFP2 ↔ D卡QSFP2
A卡QSFP3 ↔ D卡QSFP3(对角线连接)
B卡QSFP3 ↔ C卡QSFP3(横向连接)
这种设计确保了任意两张卡之间最多经过一次跳转,延迟控制在200ns以内。实际测试中,我们使用iperf3测量到的实际带宽稳定在380Gbps左右。
每张Blackhole卡需要独立的12VHPWR供电,我们采用以下方案:
实测中曾发生过因电源线质量导致的电压波动问题,后来更换为16AWG线径的定制线材后解决。建议在正式训练前用nvidia-smi -q -d POWER(虽然是非N卡但命令类似)持续监控各卡功耗至少24小时。
Tenstorrent的Linux驱动安装需要特别注意依赖项:
bash复制# 必须先安装这些基础库
sudo apt install -y libnuma-dev libpciaccess-dev libxml2-dev
# 驱动安装后必须重建initramfs
sudo update-initramfs -u
我们遇到过一个典型问题:在Ubuntu 22.04上默认的GCC 11会导致编译失败,必须降级到GCC 9。解决方法:
bash复制sudo apt install gcc-9 g++-9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90
推荐使用以下工具组合:
tt-smi:Tenstorrent版的设备监控工具dcgmi:用于跨卡通信诊断python复制import subprocess
def check_card_health():
result = subprocess.run(['tt-smi', '-q'], capture_output=True)
for line in result.stdout.decode().split('\n'):
if 'Temperature' in line or 'Power' in line:
print(line.strip())
在/etc/tenstorrent/conf.d/performance.conf中我们调整了这些关键参数:
code复制[network]
packet_buffer_size=2MB # 默认1MB在大型矩阵运算时不足
[memory]
allocator=jemalloc # 比默认的tcmalloc更适合LLM场景
使用MLPerf测试套件,我们的4卡集群取得了以下成绩:
| 测试项目 | 官方QuietBox | 矿机改造方案 | 差异 |
|---|---|---|---|
| BERT-Large | 142 samples/sec | 138 samples/sec | -2.8% |
| ResNet-50 | 1,202 images/sec | 1,185 images/sec | -1.4% |
| GPT-2 Medium | 89 tokens/sec | 86 tokens/sec | -3.4% |
性能损失主要来自PCIe带宽限制,但对实际训练影响微乎其微。
问题1:训练中随机出现NCCL超时错误
dmesg发现QSFP链路复位记录问题2:显存分配失败
tt-smi显示显存碎片化严重torch.cuda.empty_cache()定期清理问题3:某张卡温度持续偏高
目前我们正在测试8卡系统的稳定性,关键改进包括:
这套方案最大的优势在于扩展性——每增加6,000美元投资就能获得256GB的显存池。对于中小型AI团队来说,这可能是目前性价比最高的分布式训练方案之一。