通过创建虚拟内存解决编译时内存爆满导致的死机问题
本文介绍了在16GB内存的Ubuntu系统上通过创建16GB虚拟内存来部署RoboBrain2.0-7B大模型的解决方案。由于编译过程中内存不足导致死机,作者详细讲解了从停用旧swap、删除交换文件、创建16GB新交换文件、设置权限、格式化到启用新swap的完整步骤。重点包括使用fallocate快速分配空间、设置600权限、mkswap格式化以及通过修改fstab实现永久生效。该方法有效解决了内
硬件:Micro-Star International Co., Ltd. Vector 16 HX AI A2XWIG
显卡:nvidia5080
处理器:Intel® Core™ Ultra 9 275HX × 24
内存:16GiB
磁盘:1T
系统:Ubuntu22.04
问题描述:
现在需要通过vllm本地部署RoboBrain2.0-7B大模型,但由于内存只有16GB,前几次的编译均以内存爆满电脑死机为结果。在未设置虚拟内存前,无论设置export MAX_JOBS=8或4的都会死机。所以通过创建16GB虚拟内存来保证编译不会死机,虽然编译会慢一点。下面是详细步骤
1. 检查并停用当前的 Swap
首先,确认一下当前的 swap 状态。
sudo swapon --show
这个命令会列出所有正在使用的交换分区或文件。可能会看到类似下面的输出:
NAME TYPE SIZE USED PRIO
/swapfile file 2G 0B -2
接下来,停用它:
sudo swapoff /swapfile
2. 删除旧的 Swap 文件
停用之后,就可以安全地删除了。
sudo rm /swapfile
3. 创建新的 16GB Swap 文件
现在可以执行命令来创建一个 16GB 的新文件了。使用 dd
命令可以,但有一个更快的命令 fallocate
,推荐使用,因为它会立即分配空间,而不是慢慢地写零。
推荐方式 (更快):
sudo fallocate -l 16G /swapfile
或者使用你其余教程所说的 dd
命令也可以:
sudo dd if=/dev/zero of=/swapfile bs=1M count=16384 status=progress
可以在
dd
命令后面加了status=progress
,这样可以看到创建进度。
4. 设置正确的权限
这一步很重要!交换文件只应该被 root 用户读写。
sudo chmod 600 /swapfile
5. 将文件格式化为 Swap 空间
sudo mkswap /swapfile
6. 启用新的 Swap 文件
激活刚创建的交换空间。
sudo swapon /swapfile
7. 验证是否成功
再次检查 swap 状态,确认新的 16GB 空间已经启用。
sudo swapon --show
或者使用 free
命令查看,你会看到 Swap 总量增加了 16GB。
free -h
8. 使其永久生效
为了确保每次重启后这个 swap 文件都能自动挂载,需要将它添加到 /etc/fstab
文件中。
首先,备份一下fstab
文件,以防万一:
sudo cp /etc/fstab /etc/fstab.bak
然后,将 swap 文件的配置信息追加到 /etc/fstab
的末尾:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
至此,系统就拥有了 16GB 的交换空间,再次尝试编译通过。
更多推荐
所有评论(0)