ubuntu下部署大模型显存被其它程序占用问题解决

现象

用nvidia-smi查看显卡占用,发现xorg和gnome-remote-desktop总是占用几百兆的显存

环境

系统:ubuntu-22.04

显卡:A100 * 8

NVIDIA-SMI:570.195.03

Driver-Version:570.195.03

CUDA-Version:12.8

gnome-remote-desktop:jammy-updates,now 42.9-0ubuntu0.22.04.2

xserver-xorg-core:jammy-updates,jammy-security,now 2:21.1.4-2ubuntu1.7~22.04.16

解决思路

  1. 从应用本身出发,让应用选择集显,或干脆不要用显卡加速
  2. 从系统角度出发,让系统不允许应用占用计算卡
  3. 从计算卡角度出发,让计算卡不允许应用使用它

我的场景有效解决方法

1. 强制Xorg使用集显

lspci | grep -E "VGA|3D" 查看集显对应PCI号及名称
sudo vi /etc/X11/xorg.conf

复制代码
Section "Device"
    Identifier "ASPEED"
    Driver "modesetting"
    BusID "PCI:5:0:0"
EndSection

sudo systemctl daemon-reload
sudo systemctl restart gdm

2. 强制gnome-remote-desktop使用集显

lspci | grep -E "VGA|3D" 查看集显对应PCI号及名称
sudo vi /lib/systemd/user/gnome-remote-desktop.service

复制代码
[Service]
# 选定义特定显示GPU,禁用所有GPU计算
Environment="DRI_PRIME=pci-0000_05_00_0"
Environment="CUDA_VISIBLE_DEVICES="
# 强制使用Mesa的EGL后端,并强制使用无头(离屏)渲染模式。
Environment="__EGL_VENDOR_LIBRARY_FILENAMES=/usr/share/glvnd/egl_vendor.d/50_mesa.json"
Environment="EGL_PLATFORM=surfaceless"

systemctl --user daemon-reload
systemctl --user restart gnome-remote-desktop

也可尝试使用如下配置强制软件渲染,不过不一定有效

复制代码
[Service]
# 完全禁用硬件视频编解码,强制使用CPU软件处理。
Environment="LIBVA_DRIVER_NAME=none"
Environment="VDPAU_DRIVER=va_gl"
Environment="GST_VAAPI_ALL_DRIVERS=0"
Environment="GST_PLUGIN_FEATURE_RANK=vaapih264enc:NONE,vaapih265enc:NONE,vah264enc:NONE,vah265enc:NONE"
# 完全禁用硬件3D加速,强制使用CPU软件渲染
Environment="GALLIUM_DRIVER=softpipe"
Environment="LIBGL_ALWAYS_SOFTWARE=1"

其它解决思路供参考

1. 屏蔽GPU图形相关驱动

sudo vi /etc/modprobe.d/99-no-nvidia-drm.conf

复制代码
blacklist nvidia_drm
blacklist nvidia_modeset
install nvidia_drm /bin/false
install nvidia_modeset /bin/false

sudo vi /etc/modprobe.d/nvidia-graphics-drivers-kms.conf

复制代码
options nvidia_drm modeset=0

sudo update-initramfs -u -k all
sudo reboot

2. 使用udev禁止drm访问特定GPU

sudo ls -al /dev/dri 查看所有显卡名称列表,要把计算卡屏蔽掉
sudo vi /etc/udev/rules.d/99-hide-nvidia-render.rules

复制代码
SUBSYSTEM=="drm", KERNEL=="card[1-8]*", DRIVERS=="nvidia", TAG-="seat", TAG+="uaccess"

sudo udevadm control --reload-rules
sudo udevadm trigger

3. 禁用wayland,强制使用X11

sudo vi /etc/gdm3/custom.conf

复制代码
[daemon]
WaylandEnable=false

sudo systemctl daemon-reload
sudo systemctl restart gdm

相关推荐
遇码9 小时前
流式调用中途断连别直接报错:瞬态故障识别、退避重试与中文根因诊断的搭建方法
大数据·人工智能·ai·rust·数据分析·大模型·agent
陈让然10 小时前
WSL 桥接设置静态IP(快速)
linux·网络·ubuntu
德林恩宝13 小时前
On-Policy Distillation(OPD)学习文档
人工智能·学习·机器学习·大模型·llm·大模型微调
console.log('npc')14 小时前
第 1 章 项目概述与环境搭建
前端·人工智能·大模型
山顶夕景15 小时前
【Jev】多模态Jev决策模型
大模型·多模态·jev·决策模型
学IT的周星星17 小时前
记忆系统:让 Agent 记住你是谁、上次聊到哪
运维·服务器·人工智能·windows·大模型·llm·agent
余槐i17 小时前
transformers 升级后加载旧权重报错:三处不兼容如何逐一验证
python·大模型·transformers·模型量化·模型推理
遇码1 天前
不用转场引擎做幻灯片转场:相机滑动、黑场淡入与真全屏的完整做法
人工智能·数码相机·ai·rust·大模型·agent
艾莉丝努力练剑1 天前
【AI大模型接入SDK】ChatServer接口设计规范
网络·c++·人工智能·学习·大模型·设计规范
邵奈一1 天前
2.5倍速不降智:Opus 5.5极速版开闸
大模型·ai编程·claude·opus5.5·极速模式