You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下libtorch/CUDA GPU内存控制及性能异常解决问询

解决方案:RTX4090训练时共享内存占用过高导致性能暴跌

一、通过CUDA/libtorch限制可用GPU内存为24GB

有两种可靠方式强制libtorch仅使用物理显存:

1. 代码层面设置显存使用比例

在程序初始化CUDA设备后,调用torch::cuda::set_per_process_memory_fraction函数,将可用显存比例设为1.0(即完全使用24GB物理显存,不分配共享内存):

#include <torch/torch.h>

int main() {
    torch::Device cuda_device(torch::kCUDA);
    // 限制当前进程仅使用对应GPU的100%物理显存
    torch::cuda::set_per_process_memory_fraction(1.0, cuda_device.index());

    // 后续模型加载、训练逻辑...
    return 0;
}

2. 环境变量限制显存比例

在启动程序前,通过命令行设置TORCH_CUDA_MEMORY_FRACTION环境变量,同样限制显存使用比例为1.0,强制程序仅使用物理显存:

set TORCH_CUDA_MEMORY_FRACTION=1.0 && your_training_program.exe

这两种方式都会阻止libtorch分配物理显存以外的共享内存,避免因内存交换导致的性能暴跌。

二、Windows系统下控制共享GPU内存(BIOS无选项时)

Windows默认按物理RAM的50%分配共享GPU内存,可通过注册表手动调整上限,确保总虚拟GPU内存(物理显存+共享内存)低于37.4GB:

  • 按下Win+R输入regedit打开注册表编辑器
  • 导航至路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers
  • 右键空白处,依次创建两个DWORD(32位)值:
    • 命名为DedicatedSize,数值设为24576(对应24GB物理显存,单位MB)
    • 命名为SharedSize,数值设为你期望的共享内存上限(例如8192即8GB,确保总虚拟GPU内存<37.4GB)
  • 重启电脑后设置生效

注意:修改注册表前建议备份相关分支,避免系统异常。


内容的提问来源于stack exchange,提问作者Alexander Korovin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 09:55:29