ar-gpu-preflight 用于在代码真正运行前回答两个问题:本次运行是否需要 GPU、需要多少显存;以及系统当前状态是否安全(RED/YELLOW/GREEN)。
用途与触发时机:在运行 python 脚本或 bash run.sh(可能超过 30 秒)、任何导入 torch/jax/tensorflow 的代码、含 cuda/.cuda()/.to("cuda")/device="cuda" 的代码、模型训练或推理、大规模下载或 checkpoint 写入之前使用。仅当用户明确说 "skip preflight" 时才能跳过。
主要决策:一是 GPU 需求分类,根据代码或命令判断 required/optional/none/unknown;GPU 信号包括 torch.cuda、.cuda()、JAX/TF GPU 使用、训练推理或用户明确要求;CPU 信号包括无 GPU 后端的 numpy/pandas/sklearn、小型冒烟测试、文件处理与绘图。不得因 torch.cuda.is_available() 为 False 就悄悄把 GPU 代码降级到 CPU。二是显存估算,按张量元素数乘字节数计算,float32 为 4B,float16/bfloat16 为 2B,矩阵乘法至少计入输入与输出,并加框架开销(PyTorch 约 0.5–1 GiB)。不确定时标为 YELLOW 并选择空闲显存充足的卡。
使用方式:本地运行 nvidia-smi -L、nvidia-smi、nvidia-smi --query-gpu=index,name,memory.free,memory.total,utilization.gpu --format=csv 以及 --query-compute-apps=pid,process_name,used_memory --format=csv,不要包在 SSH 中;若 nvidia-smi 本身失败应停止并报告驱动/CUDA 问题,不尝试安装驱动。随后在 profile 环境中(非系统 Python)激活 conda 环境并验证 torch.cuda.is_available() 与设备数。分配时始终显式设置 CUDA_VISIBLE_DEVICES,共享机器上不要让任务默认看到所有 GPU;多卡需先书面说明代码为何能利用多卡。
输出与判定:需输出包含 GPU 需求、预估卡数/显存、可用卡、Chosen CUDA_VISIBLE_DEVICES 以及 A1/A2/B0/B1/B2/B3/C1/C2/D1/D2/D3/E1 各检查项颜色和最终 VERDICT 的固定表格,并给出推荐命令。任一 RED 必须停止询问;有 YELLOW 且无 RED 需解释风险并询问,除非用户已表示可在 YELLOW 下继续;全部 GREEN/N/A 才允许运行。CPU/RAM 与磁盘探测使用 nproc、uptime、free -h、df -h "$DATA_DISK",磁盘阈值 GREEN 大于 10 GB、YELLOW 2–10 GB、RED 小于 2 GB。限制:资料未提供具体价格、平台支持范围或官方安装方式。