跳转至

GPU / 硬盘 / 内存使用规范

实验室服务器是共享资源。一个人的程序不仅会占用 GPU,也会占用 CPU、内存、硬盘空间和硬盘 I/O。

本章的命令基本上都可以在 常用 Linux 命令 中找到。

1. 运行前检查清单

每次启动训练或长时间任务前,先执行:

whoami
hostname
pwd

确认自己在哪个账号、哪台服务器、哪个目录。

查看 GPU:

nvidia-smi

查看当前登录用户:

who

查看系统内存:

free -h

查看当前目录大小:

du -sh .

查看硬盘总体使用情况:

df -h

如果这些命令显示服务器已经很忙,就不要马上启动新的重任务。先确认是否会影响别人。

2. GPU 使用规范

GPU 是最容易被注意到的资源,也是最容易发生冲突的资源。训练前必须先看:

nvidia-smi

重点看 GPU-UtilMemory-Usage

如果某张 GPU 已经有其他同学的进程,不要直接抢占。即使 GPU-Util 暂时是 0%,也可能只是数据加载、验证、保存 checkpoint 或等待下一轮训练。

如果服务器有多张 GPU,可以指定自己使用哪张。例如只使用 0 号 GPU:

CUDA_VISIBLE_DEVICES=0 python train.py

只使用 1 号 GPU:

CUDA_VISIBLE_DEVICES=1 python train.py

不要一上来就多卡

多 GPU 不会自动让所有程序变快。很多代码需要专门写 DataParallel、DistributedDataParallel 或其他多 GPU 逻辑。

建议先用一张 GPU 跑通小实验,确认显存、速度和日志都正常,再考虑多 GPU。

3. CPU 和系统内存

GPU 训练也会占用 CPU 和系统内存。

查看内存:

free -h

我比较喜欢使用 htop

htop

查看自己账号下的进程:

ps -u "$USER" -o pid,%cpu,%mem,rss,etime,cmd --sort=-%mem | head

CPU ps

使用 PyTorch、TensorFlow 等框架时,注意不要随便把 num_workers 开得很大。比如一上来设置:

num_workers=32

可能会占用大量 CPU 和内存。建议从 248 开始调整,观察速度和内存占用后再改。

4. 硬盘空间

训练输出、checkpoint、数据集等都容易占满硬盘。硬盘写满后,轻则实验失败,重则影响其他用户。

查看文件系统总体空间:

df -h

查看当前目录大小:

du -sh .

查看当前目录下各项大小,并按大小排序:

du -sh -- ./* ./.??* 2>/dev/null | sort -hr

查找当前目录下大于 1GB 的文件:

find . -type f -size +1G -exec ls -lh {} \;

常见需要定期清理过期的 checkpoint 、临时文件等等。

不要在不确定目录的情况下使用:

rm -rf *

5. 大量小文件

大量小文件会拖慢文件系统。比如把几十万张图片、日志碎片或中间结果全部放在同一个目录里,读取、删除、备份和同步都会变慢。

更好的做法是按类别、日期或编号分目录。你会发现几乎所有大型数据集都会这样分类。

例如,不建议:

outputs/
  000000.png
  000001.png
  ...
  999999.png

更建议:

outputs/
  000/
    000000.png
    000001.png
  001/
    001000.png
    001001.png

6. 硬盘 I/O

硬盘 I/O 指读写硬盘的压力。即使 GPU 没满,如果有人在大量解压、复制、删除或读取小文件,服务器也可能变慢。

如果要做大规模压缩、解压或复制,尽量避开其他同学正在训练的时间。操作前先确认数据大小:

du -sh dataset/

如果只是把大量小文件从本机传到服务器,建议先打包再传输。相关方法见 文件传输

7. 实验结束后

实验结束后,不要只关掉本机电脑。建议做几件事:

查看 tmux 会话:

tmux ls

确认不需要的会话已经退出:

exit

查看自己是否还有进程:

ps -u "$USER" -o pid,%cpu,%mem,etime,cmd

查看 GPU 是否释放:

nvidia-smi

推荐重要结果传回本机或其他经过允许的长期存储位置。不要把服务器硬盘当成唯一备份。

8. 推荐习惯

建议养成每次训练前看 nvidia-smi 的习惯。并且每次启动实验前确认 pwd

每个实验保存日志,不然白跑。

大量小文件分目录或打包。

重要结果不要只放在服务器上。

参考