在GPU服务器上跑大模型,Ubuntu系统需要做哪些优化配置?

服务器

在GPU服务器上运行大模型(如LLM、扩散模型等)时,为了最大化性能和稳定性,对Ubuntu系统进行合理的优化配置至关重要。以下是针对这类场景的系统级优化建议:


一、系统基础优化

1. 使用合适的Ubuntu版本

  • 推荐使用 Ubuntu 20.04 LTSUbuntu 22.04 LTS
    • 长期支持,驱动兼容性好
    • CUDA 和 PyTorch/TensorFlow 官方支持充分

2. 更新系统并关闭无关服务

sudo apt update && sudo apt upgrade -y

关闭不必要的服务(如蓝牙、打印、GUI桌面等):

sudo systemctl disable bluetooth.service
sudo systemctl disable cups.service
# 如果是纯服务器,建议安装最小化系统或禁用图形界面
sudo systemctl set-default multi-user.target  # 禁用图形启动

3. 调整文件句柄和进程数限制

编辑 /etc/security/limits.conf

* soft nofile 65536
* hard nofile 65536
* soft nproc  32768
* hard nproc  32768
root soft nofile 65536
root hard nofile 65536

确保 /etc/pam.d/common-session 包含:

session required pam_limits.so

二、内核与调度优化

1. 使用高性能CPU调度策略

# 设置CPU调度为 performance 模式
echo 'performance' | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

可安装 cpufrequtils 并设置开机生效。

2. 内核参数调优(/etc/sysctl.conf

# 提高网络和内存性能
vm.swappiness=10
vm.vfs_cache_pressure=50
vm.dirty_ratio=15
vm.dirty_background_ratio=5

# 增加共享内存(对多进程数据加载重要)
kernel.shmmax = 68719476736
kernel.shmall = 4294967296

# 网络优化(适用于分布式训练)
net.core.rmem_max = 134217728
net.core.wmem_max = 134217728
net.ipv4.tcp_rmem = 4096 87380 134217728
net.ipv4.tcp_wmem = 4096 65536 134217728

应用配置:

sudo sysctl -p

三、NVIDIA GPU 配置优化

1. 安装最新稳定版 NVIDIA 驱动

推荐使用官方 .run 文件或通过 ubuntu-drivers 自动安装:

sudo ubuntu-drivers autoinstall

验证安装:

nvidia-smi

2. 安装 CUDA Toolkit 和 cuDNN

  • 从 NVIDIA官网 下载对应版本
  • 推荐使用 CUDA 11.8 或 12.x(根据PyTorch/TensorFlow版本选择)

注意:不要使用系统包管理器安装CUDA,容易版本混乱。

3. 启用 NVIDIA Persistence Mode

防止GPU状态频繁切换,提升响应速度:

sudo nvidia-smi -pm 1

4. 设置 GPU 计算模式(多用户环境)

sudo nvidia-smi -c EXCLUSIVE_PROCESS  # 或 DEFAULT

5. 监控与调优工具

安装 nvidia-ml-py, nvtop, gpustat

pip install gpustat nvitop

四、存储与I/O优化

1. 使用高速存储(NVMe SSD)

  • 将数据集、缓存、swap 放在SSD上
  • 避免HDD瓶颈

2. 启用 tmpfs 缓存(可选)

对于小数据集,可将临时数据放内存中:

sudo mount -t tmpfs -o size=64G tmpfs /mnt/ramdisk

3. 文件系统选择

  • 使用 XFSext4(推荐 XFS 处理大文件更高效)
  • 格式化时启用大文件支持:
    mkfs.xfs -f /dev/nvme0n1

4. 数据预取与I/O调度

# 设置 I/O 调度器为 none 或 deadline(NVMe 推荐 none)
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler

五、Python环境与深度学习框架优化

1. 使用 Conda/Mamba 管理环境

# 推荐 mamba 替代 conda,速度快
conda install mamba -n base -c conda-forge

2. 安装正确的 PyTorch/TensorFlow 版本

确保与CUDA版本匹配:

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

3. 启用 PyTorch 优化选项

# 在代码中启用
torch.backends.cudnn.benchmark = True
torch.backends.cuda.matmul.allow_tf32 = True  # A100等支持TF32
torch.set_float32_matmul_precision('high')   # PyTorch 2.0+

4. 使用 DataLoader 优化

  • 设置 num_workers > 0
  • 使用 pin_memory=True
  • 考虑使用 torch.utils.data.ChainDatasetIterableDataset 流式加载

六、安全与监控

1. 安装监控工具

# GPU + CPU + 内存监控
pip install psutil GPUtil
# 或部署 Prometheus + Grafana + Node Exporter + DCGM

2. 日志与告警

  • 记录训练日志到独立磁盘
  • 设置OOM Killer监控:
    dmesg -T | grep -i "killed process"

3. 定期备份关键数据

  • 模型权重、配置文件、日志

七、其他建议

项目 建议
Swap空间 设置为RAM的10%~20%,避免OOM
时间同步 使用 chronyntpd
SSH安全 修改端口、禁用root登录、使用密钥认证
分布式训练 配置RDMA(InfiniBand)、NCCL优化

总结:关键检查清单

✅ Ubuntu LTS 版本
✅ 最新NVIDIA驱动 + 匹配CUDA
✅ 关闭不必要的系统服务
✅ 调整内核参数(swappiness, shmmax)
✅ 使用高性能CPU/GPU调度
✅ NVMe存储 + 合理文件系统
✅ 正确配置PyTorch/CUDA环境
✅ 启用cuDNN、TF32、AMP等提速特性
✅ 部署监控与日志系统


通过以上配置,可以显著提升大模型训练/推理的效率和稳定性。实际配置需根据硬件(如A100/H100集群)、模型规模(7B/70B)和任务类型(训练/推理)进一步微调。

未经允许不得转载:CDNK博客 » 在GPU服务器上跑大模型,Ubuntu系统需要做哪些优化配置?