4090拼好卡,穷鬼套餐运行官方权重Kimi-K2.5上下文256K
最近赌了一套穷鬼套餐方案,在硬件猛涨的情况下迫于无奈(买在顶点),保证设备非拆机件质保三年的情况下也就120,整篇也就按口水话随便写写大家娱乐一下。总的来说大参数的可以跑,小参数的也可以走pd分离,或者单机跑也可以。在做这套方案之前我心里也没有底。之前所有设备都是pcie 5.0,drr5内存,但是当前的价格如果ddr5 ecc内存如果按照2T的标准来(32*64G),那么含税65万是至少需要的(1.8万一条不含税)。特别是如果考虑设备做训练至少需要保证内存为显存两倍。那么按照d5内存的整机来配置价格总的下来就会很离谱,况且固态也在离谱的涨价。在赌这套方案前心里也没底。但是目前看是成功了,穷鬼套餐的核心还是优化,优化再优化。专业的计算卡设备也用过,这套方案当然没办法和nv的专业整机比,卡间带宽没法比,响应没有那么快,吞吐也没那么大。如果不是硬件疯狂涨也不会考虑赌这个方案。但是个人结论是当前ddr5内存和固态以Ai为噱头的涨价实际是存在大量的泡沫的,实际运行并不需要那么高的硬件整体需求。纯推理场景下精度使用FP8和bfp16,谁和我说256G内存不够用,我只能说兄弟你可以回去洗洗睡了,你要用awq之类导致内存需求大,那我觉得纯文字推理模型没问题,多模态首先损失摆在那里,而且多模态中的视觉损失还是比较大的,这些都是实测过的,还不如拿内存的钱多买点卡。而且固态也是乱涨价,模型推理关固态毛线事情,机械硬盘不能用?又不是做量化要分层权重到硬盘。量化一套设备就可以搞定全天下的用。那么再转头回来看现在的训练不再像当初是从0到1,需要疯狂扩张更大的训练集群吗?个人觉得是没必要的,大量的压力是在推理上。之前买了4090 48G整机的,按我的方案去买个交换机、光纤和网卡,保证盘活设备。啥参数跑不起来?d4内存又不是不能用,pcie3.0通道又不是不能走,机械又不是不能用?首token慢点怎么了?吐槽完了就来说正经的,穷鬼套餐,拼好卡。
服务器用的是ESC8000-G4(下面是官方的完整参数)
| 项目 | 详情 |
|---|---|
| 处理器 / 系统总线 | 2×Socket P(LGA 3647)支持第 1/2 代英特尔至强可扩展处理器更多信息详见支持页面 |
| 内存 | 插槽:24 根(每 CPU 6 通道,每 CPU 12 根 DIMM)最大容量:3072GB RDIMM类型:DDR4 2933/2666/2400/2133 RDIMM、LRDIMM、LR-DIMM 3DS、英特尔傲腾 DC 持久内存容量规格:64GB/32GB/16GB RDIMM;128GB/64GB/32GB LRDIMM;128GB/64GB LR-DIMM 3DS更多信息详见支持页面 |
| 扩展槽 | 全高全长:8×PCI-E x16 (Gen3 x16),单根拓扑:8 路均来自 CPU1;双根拓扑:CPU1/CPU2 各 4 路半高半长:后置:双根拓扑 2×PCI-E x16 (Gen3 x16,CPU1/CPU2 各 1);单根拓扑 1×PCI-E x16 (Gen3 x16,来自 CPU1)前置:1×PCI-E x8 (Gen3 x8,来自 CPU2) |
| 存储功能(视出货而定) | SATA 控制器:英特尔 C621方案 1:8×SATA3 6Gb/s+2×M.2 (SATA 6Gb/s&PCIe Gen3 x4,22110/2280/2260)方案 2:6×SATA3 6Gb/s+2×NVMe+2×M.2 (同上述规格)支持英特尔 RSTe (软 RAID 0/1/5/10)、英特尔 VROC (软 RAID 0/1)可选:华硕 PIKE II 3008 SAS HBA 卡、PIKE II 3108 SAS 硬件 RAID 卡,支持 12G SAS |
| 网络(视出货而定) | 1× 双端口英特尔 I350-AM2 千兆网卡 + 1× 管理网口 |
| 多显卡支持 | 最新支持列表详见:https://servers.asus.com/support/gpu |
| 前置 I/O 接口 | 2×USB3.0、2×USB2.0、1×VGA、1×COM |
| 后置 I/O 接口 | 2×RJ45 千兆网口、1×RJ45 管理网口 |
| 开关 / LED | 前置:Q-Code/Port80 指示灯、电源开关 / 指示灯、定位开关 / 指示灯、硬盘访问指示灯、信息指示灯另含 2×LAN 指示灯 |
| 支持操作系统 | 最新支持列表详见:https://servers.asus.com/support/os |
| 管理功能 | 可选华硕 Control Center Enterprise板载 ASMB9-iKVM 支持 IP KVM |
| 合规认证 | BSMI、CE、FCC(Class A) |
| 外形尺寸 | 798mm×439mm×175.6mm(4U);31.42"×17.22"×6.92" |
| 尺寸规格 | 4U |
| 电源 | 2+1 冗余 1600W 80PLUS 白金电源,100-127/200-240Vac,12.9/9.5A,47-63Hz,Class I2+1 冗余 2200W 80PLUS 白金电源(部分国家可选),电气规格同上 |
| 环境 | 工作温度:10℃~35℃非工作温度:-40℃~70℃非工作湿度:20%~90%(非冷凝) |
总共买了4套这个服务器,具体配置如下
| 类别 | 关键硬件信息 |
|---|---|
| CPU | Intel Xeon Gold 6148 @ 2.40GHz共 80 逻辑核心 |
| 显卡 | ASPEED AST1000/2000 集显NVIDIA 4090 48G独立显卡 ×8 |
| 存储控制器 | Intel C620 SATA AHCIIntel VMD NVMe RAIDLSI MegaRAID SAS 9364-8i长江存储 NVMe 控制器 |
| 磁盘 | /dev/nvme0n1 长江存储 NVMe SSD/dev/sda/dev/sdb 各 4TB 机械硬盘 (ST4000NM000A) |
| 网卡 | Mellanox ConnectX-5 InfiniBand 网卡 ×2Intel I350 千兆电口网卡 ×2虚拟网卡 ×1 |
| BIOS / 平台 | AMI 服务器 BIOSIntel C621/C620 服务器芯片组 |
| 其他 | 板载 ASPEED 远程管理显卡LSI 9364-8i RAID 卡 |
pcie网卡大家可以去买联瑞的卡,我这里搭配的是LRES1046PF。会送两个光模块,但是这两个模块ib网络下无法使用,哪怕搭配om4的线,交换机也是不认得。
ib交换机大家可以去看看淘汰下架二手得麦络思的sb7790,为啥买这个型号,首先傻瓜式插上就可以用,其次便宜才6000块钱,36口100GE,哪怕不用来做模型推理训练,你拿这个设备当个100GE36口交换机不香?这里划个重点,不要乱买模块,兼容ib的模块这个交换机是不认的,直接不供电。自己去搜aoc ib线。价格不算贵。
内存用的是美光的dd4 ecc 16G 2666频率的内存条,每台总共16条。
存储用长江的做系统盘,机械做了一个软raid10,这样读取速度就足够用了。所有容器,权重都是放到这个上面。总的配置就是这样了,志强6系得U,如果买二手50元一颗,你就说这性价比高不高吧。
接下来就到部署了
直接上compose吧,看不懂得去问ai吧,不一一列举了,分布式方案,node rank 从0-3,逐一增加。这里没有使用sgl 0.5.9是因为这个版本中没有写k2.5的流水线方法,但是官方仓库里实际上已经有了,本来打算自己写的,这里要感谢大佬https://github.com/ShangmingCai将方法已经更新进去仓库里了[Fix] Kimi K2.5 support pp by lw9527 · Pull Request #18434 · sgl-project/sglang · GitHub,沾光了,省事,感谢感谢。这里为什么没有用tp32,原因是视觉解码器的头是16,32无法整除16,解决方法就是用流水线。流水线最早使用在原来那些大参数非moe上,但是moe实际上也是可以使用的。这里顺道说下fp8量化的情况下怎么用,如果你直接使用tp16那么会在计算上128无法整除64,原理不细说了,感兴趣自己看源码去,解决方法就是tp8,pp值调高,但是过高可能会出现气泡或者降速。建议如果是两套设备或者4套设备能够运行下来模型,pp最好不要超过2。
services:
sglang:
image: lmsysorg/sglang:v0.5.10rc0-cu130
container_name: sglang_node0
restart: unless-stopped
privileged: true
network_mode: host
ipc: host
shm_size: 128g
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
volumes:
- /mnt/raid10/aimodels/Kimi-K2.5:/models
environment:
- NCCL_IB_DISABLE=0
- NCCL_IB_HCA=mlx5_0,mlx5_1
- NCCL_IB_QPS_PER_CONNECTION=8
- NCCL_IB_GID_INDEX=0
- NCCL_NET_GDR_LEVEL=5
- NCCL_IB_TIMEOUT=22
- NCCL_IB_RETRY_CNT=16
- NCCL_IGNORE_DISABLED_NICS=1
- GLOO_SOCKET_IFNAME=eno1
- NCCL_SOCKET_IFNAME=eno1
- NCCL_IGNORE_DISABLED_P2P=1
- CUDA_DEVICE_MAX_CONNECTIONS=32
- SGLANG_SYMM_MEM_PREALLOC_GB_SIZE=4
command:
- /bin/bash
- -c
- |
sglang serve \
--model-path /models \
--tp-size 16 \
--pp-size 2 \
--nnodes 4 \
--node-rank 0 \
--dist-init-addr 192.168.31.1:29500 \
--host 0.0.0.0 \
--port 8000 \
--mem-fraction-static 0.8 \
--trust-remote-code \
--tool-call-parser kimi_k2 \
--reasoning-parser kimi_k2 \
--served-model-name Kimi-K2.5 \
--enable-metrics \
--attention-backend flashinfer \
--prefill-attention-backend flashinfer \
--decode-attention-backend flashinfer \
--sampling-backend flashinfer \
--max-running-requests 128 \
--max-prefill-tokens 131072 \
--chunked-prefill-size 8192 \
--enable-flashinfer-allreduce-fusion \
--enable-symm-mem
启动大约需要一个小时,慢的核心原因是cpu确实性能有限,CompressedTensorsWNA16MarlinMoEMethod过程中很吃cpu,但是这只是一时的。这里我直接上运行的日志图吧,在没有预热的情况下官方权重输出是20t/s,预热完成后可以到40t/s(这个忘记截图了,暂时把设备停了准备去做专门的优化),编程是够用了,而且这套我还没从源码上优化,只是调了参数,从通讯的数据上看是肯定还可以优化的,没改动前显卡decode利用率没有低于80%,prefill利用率是100%。

kv是这么多

好了就到这吧,穷鬼方案肯定是没法和专业计算卡比的。如果不会调启动参数,或者从源码上改逻辑方法,个人建议,优先考虑专业计算卡整机。但是一定要看bfp16情况下的性能表现,不要去看量化后的,特别是多模态,之前使用了qwen3.5 397B awq fp8 fp16版本的都测了,awq 情况下有个别语言的视觉阅读能力几乎是没有了,但是你用fp8 fp16运行确实是正常识别阅读的,不会像在awq情况下出现识别不出来乱编内容情况。fp8感觉视觉也是有一定的损失,但是没那么夸张。
更多推荐


所有评论(0)