以下大部分是比较罗嗦的流水账,技术内容在分割线后。
前阵子入坑了本地AI。手上有两张3090,但是自己用的机器机箱、电源只够跑一张。而且平时要打打游戏,用Adobe系列软件,需要占用显卡,来回释放显存也很麻烦。想着再配一台电脑吧,但是看了看现在内存、SSD的价钱,还是算了吧。
后来看了牢特视频,了解到了洋垃圾的世界。果断某东搜索华南金牌,到官方店下单了一整套X10X99套餐,带两个U,4x32G ECC拆机条,一个2TB长城NVME,总共6000(机箱散热器这些重的大的东西就没买了)。说实话玩洋垃圾似乎有点小贵,但是比起在美国装新机器还是便宜太多了,而且将来淘汰下来还可以跑我那一堆乱七八糟的docker服务。虽然美国Aliexpress也有X99套装,但是买着感觉就是不如京东旗舰店放心。又花了700元子运到了美国,大概一个星期就到了。

两个洋垃圾当年不远万里离开了北美机房温柔乡,被送到了深圳冰冷的仓库里,现在终于回到了家乡的温暖怀抱。我把几年前挖矿用的开放式机架和两个电源废物利用,给他搭了个窝...


装机一切都算顺利,只是到最后就是不POST,主板报"Ad"码。售后小哥跟我一起排查了一遍,4条内存8个插槽排列组合搞了一遍也没点亮屏幕。最后发现是因为显示器接的是HDMI,主板上有个3针跳帽负责切换显示模式。插在AB上面是VGA,把它给换到BC上面屏幕就成功亮了... 华南金牌东西是挺好的,就是说明书完全没用,不知道将来会不会对其他人有所帮助。

接下来就是装Ubuntu,装各种必要的软件,然后就是跑分了。
================================分割线================================
直接跑Github上 club-3090 的懒人包,以前我都是跑单卡的,现在终于能跑双卡了。用的是vllm,AutoRound INT4 量化,FP8 KV,MTP n=3,262K上下文。
两张卡我都按推荐的限制到了290W。用的是最新的595驱动,13.2 CUDA。
========== NARRATIVE (prompt=65 chars, max_tokens=1000) ==========
=== warmups (3) ===
warm-1 wall= 19.64s ttft= 184ms toks=1000 wall_TPS= 50.91 decode_TPS= 51.40
warm-2 wall= 19.46s ttft= 188ms toks=1000 wall_TPS= 51.39 decode_TPS= 51.89
warm-3 wall= 19.02s ttft= 188ms toks=1000 wall_TPS= 52.58 decode_TPS= 53.10
=== measured (5) ===
run-1 wall= 19.03s ttft= 146ms toks=1000 wall_TPS= 52.56 decode_TPS= 52.97
run-2 wall= 19.25s ttft= 187ms toks=1000 wall_TPS= 51.94 decode_TPS= 52.45
run-3 wall= 20.46s ttft= 145ms toks=1000 wall_TPS= 48.88 decode_TPS= 49.23
run-4 wall= 19.59s ttft= 193ms toks=1000 wall_TPS= 51.06 decode_TPS= 51.57
run-5 wall= 18.44s ttft= 143ms toks= 972 wall_TPS= 52.70 decode_TPS= 53.11
=== summary [narrative] (n=5) ===
wall_TPS mean= 51.43 std= 1.57 CV= 3.0% min=48.88 max=52.70
decode_TPS mean= 51.86 std= 1.59 CV= 3.1% min=49.23 max=53.11
TTFT mean= 163ms std= 25ms min=143ms max=193ms
PP tok/s mean= 1.00 std= 1.37 CV=136.9% min=0.00 max=2.50
========== CODE (prompt=78 chars, max_tokens=800) ==========
=== warmups (3) ===
warm-1 wall= 10.25s ttft= 152ms toks= 691 wall_TPS= 67.39 decode_TPS= 68.41
warm-2 wall= 7.23s ttft= 183ms toks= 478 wall_TPS= 66.11 decode_TPS= 67.82
warm-3 wall= 8.92s ttft= 183ms toks= 556 wall_TPS= 62.36 decode_TPS= 63.67
=== measured (5) ===
run-1 wall= 7.08s ttft= 186ms toks= 466 wall_TPS= 65.81 decode_TPS= 67.58
run-2 wall= 11.91s ttft= 185ms toks= 784 wall_TPS= 65.85 decode_TPS= 66.89
run-3 wall= 11.79s ttft= 184ms toks= 771 wall_TPS= 65.41 decode_TPS= 66.45
run-4 wall= 11.58s ttft= 188ms toks= 746 wall_TPS= 64.43 decode_TPS= 65.49
run-5 wall= 12.38s ttft= 185ms toks= 800 wall_TPS= 64.61 decode_TPS= 65.59
=== summary [code] (n=5) ===
wall_TPS mean= 65.22 std= 0.67 CV= 1.0% min=64.43 max=65.85
decode_TPS mean= 66.40 std= 0.88 CV= 1.3% min=65.49 max=67.58
TTFT mean= 186ms std= 2ms min=184ms max=188ms
PP tok/s mean= 2.50 std= 1.77 CV=70.7% min=0.00 max=5.00
综合的看就是写作文能跑到50多T/s,写码大概65+T/s。虽然感觉已经很够用了,但是离项目上描述的69/89还有一定的距离,具体还要再多跑一下多调试一下。
