LLM 预训练集群仿真器

大模型预训练集群仿真建模 · 当前模块:显存建模(Memory Modeling)— 输入实时计算,无需刷新
DeepSeekV4 参数量 / 激活显存 ›
单个完整 DP 域卡数 MAX(FSDP×CP, EP×EFSDP×CP)
总模型权重 FP32(全集群)
FP32 模型权重
单卡模型权重 FP32
单卡总显存

💾 显存明细

🌐 集群维度显存 全集群合计

    集群静态显存(权重+梯度+优化器)
    集群总显存需求(静态 + 动态激活)

    🖥 单卡维度显存 单卡口径(含预取 / 临时梯度)

      单卡总显存(七项合计)

      📡 通信耗时对比

      ⚡ EP Alltoall 通信域 = EP

      总接受数据
      seq × Hidden × 2B × topk / 1024² / 通信域 × (通信域−1)
      每份数据
      总接受数据 / (通信域 − 1)
      算法带宽
      总流量/瓶颈耗时 × 带宽利用率
      通信耗时
      总接受数据(GiB) / 算法带宽
        瓶颈层(耗时最大)

        🔄 FSDP Allgather/RS 通信域 = FSDP

        总接受数据
        单层Attn(B) × 10⁹ × dtype / 1024² / 通信域 × (通信域−1)
        每份数据
        总接受数据 / (通信域 − 1)
        算法带宽
        总流量/瓶颈耗时 × 带宽利用率
        通信耗时
        总接受数据(GiB) / 算法带宽
          瓶颈层(耗时最大)

          🔄 EFSDP Allgather/RS 通信域 = EFSDP

          总接受数据
          单层MoE(B)/EP × 10⁹ × dtype / 1024² / 通信域 × (通信域−1)
          每份数据
          总接受数据 / (通信域 − 1)
          算法带宽
          总流量/瓶颈耗时 × 带宽利用率
          通信耗时
          总接受数据(GiB) / 算法带宽
            瓶颈层(耗时最大)
            📐 查看全部计算公式(当前版本)
            约定:参数量单位 B(十亿参数),FP32 换算系数 GiB/B = 4 × 10⁹ / 1024³ ≈ 3.7253 (即 B × 10⁹ × 4 / 1024³ = GiB);动态激活输入单位即 GiB,无需换算。公式逐条对应需求文档 v0.1。 单个完整 DP 域卡数 = MAX(FSDP × CP, EP × EFSDP × CP) 总模型权重 FP32 (GiB) = (单层 Attention 参数量 + 单个专家参数量 × 专家数量) × 层数 × (4×10⁹/1024³) 总模型梯度 FP32 (GiB) = 总模型权重 FP32 (GiB) 总优化器 2×FP32 (GiB) = 总模型权重 FP32 (GiB) × 2(集群口径不随 SwapOptimizer 变化) 总静态显存 (GiB) = 权重 + 梯度 + 优化器 总动态激活 (GiB) = 单层动态激活 / CP × 层数 单卡模型权重 FP32 (GiB) = (单层 Attention 参数量 / FSDP + ((单个专家参数量 × 专家数量) / (EP × EFSDP))) × 层数 × (4×10⁹/1024³) 单卡模型梯度 FP32 (GiB) = 单卡模型权重 FP32 (GiB) 单卡优化器 2×FP32 (GiB) = 单卡模型权重 FP32 (GiB) × 2;SwapOptimizer=True 时 = 0(优化器交换至 Host,不占显存) 单卡动态激活 (GiB) = Recompute ? 总动态激活 / 层数 : 总动态激活 单层预取权重 BF16 (GiB) = (单层 Attention 参数量 + 单个专家参数量 × (专家数量/EP)) × (2×10⁹/1024³) 单层临时梯度 FP32 (GiB) = 单层预取权重 BF16 (GiB) × 2 Layer Input (GiB) = SwapActivation=True ? 0 : 序列长度 × hidden size × 层数 × 2(BF16 字节)/ 1024³ 单卡总显存 (GiB) = 权重 + 梯度 + 优化器 + 动态激活 + Layer Input + 预取权重 + 临时梯度 EP Alltoall(均衡): 通信域 = EP 总接受数据 (MB) = 序列长度 × Hidden Size × 2(BF16) × TopK / 1024² / 通信域 × (通信域 − 1) 每份数据 (MB) = 总接受数据 / (通信域 − 1) 总流量 = 通信域 − 1 机内流量 = MIN(总流量, 机内大小 − 1) 超节点内流量 = MAX(MIN(通信域, 超节点大小) − 机内大小, 0) 超节点间流量 = MAX(通信域 − 超节点大小, 0) 各层占比 = 各层流量 / 总流量 算法带宽 (GiB/s) = 总流量 / MAX(机内流量/机内带宽 + 超节点内流量/超节点带宽, 超节点间流量/超节点间带宽) × 带宽利用率(默认 0.8) 通信耗时 = 总接受数据(GiB) / 算法带宽;瓶颈层 = 耗时最大的层级 FSDP Allgather / ReduceScatter(分层): 通信域 = FSDP 总接受数据 (MB) = 单层 Attention 参数量 × 10⁹ × dtype 字节 / 1024² / 通信域 × (通信域 − 1) 每份数据 (MB) = 总接受数据 / (通信域 − 1) 总流量 = 通信域 − 1 机内流量 = 总流量 − 超节点内流量 − 超节点间流量 超节点内流量 = MAX(MIN(通信域, 超节点大小) / 机内大小 − 1, 0) × (超节点间流量 + 1) 超节点间流量 = MAX(通信域 / 超节点大小 − 1, 0) 各层占比 = 各层流量 / 总流量 算法带宽 (GiB/s) = 总流量 / MAX(机内流量/机内带宽 + 超节点内流量/超节点带宽, 超节点间流量/超节点间带宽) × 带宽利用率(默认 0.8) 通信耗时 = 总接受数据(GiB) / 算法带宽;瓶颈层 = 耗时最大的层级 EFSDP Allgather / ReduceScatter(分层): 通信域 = EFSDP 总接受数据 (MB) = 单层 MoE 参数量 / EP × 10⁹ × dtype 字节 / 1024² / 通信域 × (通信域 − 1) (单层 MoE 参数量 = 单个专家参数量 × 专家数量;÷EP:EP 子域内只含 1/EP 的专家权重) 每份数据 (MB) = 总接受数据 / (通信域 − 1) 总流量 = 通信域 − 1 有效层级大小:超节点 = MAX(超节点大小/EP, 1),机内 = MAX(机内大小/EP, 1) 机内流量 = 总流量 − 超节点内流量 − 超节点间流量 超节点内流量 = MAX(MIN(通信域, 有效超节点) / 有效机内 − 1, 0) × (超节点间流量 + 1) 超节点间流量 = MAX(通信域 / 有效超节点 − 1, 0) 各层占比 = 各层流量 / 总流量 算法带宽 (GiB/s) = 总流量 / MAX(机内流量/机内带宽 + 超节点内流量/超节点带宽, 超节点间流量/超节点间带宽) × 带宽利用率(默认 0.8) 通信耗时 = 总接受数据(GiB) / 算法带宽;瓶颈层 = 耗时最大的层级