最近赌了一套穷鬼套餐方案,在硬件猛涨的情况下迫于无奈(买在顶点),保证设备非拆机件质保三年的情况下也就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套这个服务器,具体配置如下
 

类别关键硬件信息
CPUIntel 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感觉视觉也是有一定的损失,但是没那么夸张。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐