数据与AI
在 NVIDIA DGX Spark (GB10)…
当 DGX Spark 上的训练任务启动失败、在 128GB 上限以下 OOM、运行中途变慢,或准备跑多小时任务时,按 G1–G10 逐项排查。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
在 NVIDIA DGX Spark (特定
解决思路
- G1 CUDA 12/13 ABI 不匹配:若出现 `ImportError: undefined symbol` 指向某个 CUDA 函数,或首次 `.cuda()` 调用时 segfault,检查 wheel 的 CUDA build tag,然后从 `download.pytorch.org/whl/cu130` 重装或改用匹配的容器。
- G2 flash-attn:裸 pip 下跳过 flash-attn 安装,改用 SDPA(行为不变);在 NGC 容器中 flash-attn 已可用且 Unsloth 会自动优先使用它、覆盖显式指定的 `attn_implementation="sdpa"`,唯一可靠的覆盖方式是使用 `references/gotcha-checks.md` G2 中的 monkeypatch。
- G3 UMA 在 128GB 以下 OOM:不要看 `nvidia-smi`,改读 `free -g` 和 `/proc/meminfo`;用 `sync; echo 3 > /proc/sys/vm/drop_caches` 清空 page cache(需 root,作为两次运行之间的重置,而非训练中途操作)。
- G4 热节流:用 `nvidia-smi --query-gpu=temperature.gpu,power.draw` 采样;若功率在 240W 以下就平台化而温度持续上升,判定为节流,改善散热或限制单次运行时长。
- G5 带宽上限:按实测 180–192 GB/s 而非规格 273 GB/s 来估算吞吐,并据此修正基于 273 GB/s 制定的计划。
- G6 全局 UMA 资源争用:检查其他 GPU 常驻进程及其是否设限;对未设上限或接近容量上限的负载执行「只跑一个重任务」规则,先限制或停掉无关服务;小而设限的负载(如 <4GB LoRA 与 `gpu-memory-utilization<=0.5` 的 vLLM 共存)无需停止。
- G7 NVFP4 比 FP8 慢:确认 capability 报告为 `(12, 1)` 并检查构建是否针对 `sm_121a`;除非构建目标为 `sm_121a`,否则保持使用 FP8。
- G8 官方 playbook 过时:在信任某个 recipe 跑昂贵任务前,先查看 `github.com/NVIDIA/dgx-spark-playbooks` 的 issues。
- G9 容器优先而非裸 pip:优先使用 NGC 容器(tag 选择见 `spark-environment-setup`)或 Unsloth 的容器;若必须用裸 pip,遵循 NVIDIA 安装顺序,包括对 Unsloth 使用 `--no-deps`。
- G10 双 Spark 仅限 DDP/FSDP:在两台 Spark 的配置中选择 DDP 或 FSDP,绝不使用张量并行(TP 在此仅限单节点)。
- 快速预检:运行 `python3 -c "import torch; print(torch.version.cuda)"` 期望 13.x(G1,NGC 构建无 +cu130 tag 不算失败);运行 `import torch; print(torch.cuda.get_device_capability())` 期望 `(12, 1)`(G7);用 `{ [ -f /.dockerenv -o -f /run/.containerenv ] || grep -qE 'docker|containerd' /proc/1/cgroup; } 2>/dev/null && echo container || echo unknown` 判断是否在容器中(G9)。
- 运行 `assets/preflight.sh` 执行 G1、G3、G4、G7、G9 检查,每个 gotcha 输出一行固定格式:先 G 编号,再是 PASS/FAIL/WARN(可自动化时)、SKIP(不可用时)或 `INFO:` 原始读数(G3、G4);完整命令见 `references/gotcha-checks.md`。
适用边界 · 注意事项
- 不适用于非 DGX Spark / 非 GB10 (SM121, aarch64) 平台。
- 不适用于短时、非多小时的训练任务(预检主要面向长时间运行)。
- G10 仅适用于双 Spark 互联场景,单节点不涉及。