当前位置: 首页 > article >正文

GPU 状态全解析:从查看命令到显存泄漏排查与修复

GPU 状态全解析从查看命令到显存泄漏排查与修复在运行强化学习训练时你是否遇到过CUDA out of memory错误明明 GPU 显存足够却在一段时间后崩溃本文将带你从基础命令开始深入分析 GPU 状态诊断显存泄漏并给出针对 RTX 3050 等 8GB 显存显卡的训练优化建议。一、查看 GPU 版本与状态的常用命令1. 查看驱动与 CUDA 版本最常用nvidia-smi输出示例Driver Version: 535.230.02 CUDA Version: 12.22. 只查看驱动版本nvidia-smi --query-gpudriver_version--formatcsv,noheader3. 查看 GPU 型号及详细信息nvidia-smi-L# 列出所有 GPUnvidia-smi-q|grepProduct# 仅显示型号4. 查看 PyTorch 使用的 CUDA 版本python-cimport torch; print(PyTorch CUDA版本:, torch.version.cuda)python-cimport torch; print(CUDA是否可用:, torch.cuda.is_available())python-cimport torch; print(GPU数量:, torch.cuda.device_count())5. 查看显存使用情况简洁nvidia-smi --query-gpumemory.total,memory.used,memory.free--formatcsv6. 查看 CUDA 工具包版本nvcc--version# 或cat/usr/local/cuda/version.txt7. 实时监控 GPU 状态watch-n1nvidia-smi二、实战分析当前 GPU 状态解读假设执行nvidia-smi后得到如下输出--------------------------------------------------------------------------------------- | NVIDIA-SMI 535.230.02 Driver Version: 535.230.02 CUDA Version: 12.2 | |------------------------------------------------------------------------------------- | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | || | 0 NVIDIA GeForce RTX 3050 Off | 00000000:01:00.0 On | N/A | | 0% 50C P5 15W / 130W | 385MiB / 8192MiB | 28% Default | ------------------------------------------------------------------------------------- | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | || | 0 N/A N/A 1311 G /usr/lib/xorg/Xorg 35MiB | | 0 N/A N/A 1650 G /usr/lib/xorg/Xorg 169MiB | | 0 N/A N/A 1802 G /usr/bin/gnome-shell 38MiB | | 0 N/A N/A 29696 G ...cess-track-uuid... 57MiB | | 0 N/A N/A 31374 G /usr/share/code/code 49MiB | | 0 N/A N/A 35854 G ...WebKitWebProcess 15MiB | ---------------------------------------------------------------------------------------关键信息解读项目数值说明GPU 型号NVIDIA GeForce RTX 3050入门级光追显卡驱动版本535.230.02较新稳定版CUDA 版本12.2支持最新 PyTorch总显存8192 MiB (8 GiB)对强化学习训练偏小但可优化使用当前显存占用385 MiB仅系统图形界面和 VS Code 等进程可用显存~7807 MiB大量空闲GPU 温度50°C正常功耗15W / 130W低功耗状态P5未满载GPU 利用率28%当前无计算密集型任务✅结论此时 GPU 状态健康显存充足没有训练进程在运行。三、典型案例显存泄漏导致的CUDA out of memory错误日志回顾torch.OutOfMemoryError: CUDA out of memory. Tried to allocate 2.00 MiB. GPU 0 has a total capacity of 7.78 GiB of which 53.38 MiB is free. Including non-PyTorch memory, this process has 7.10 GiB memory in use. Of the allocated memory 6.99 GiB is allocated by PyTorch...崩溃前行为成功完成了约 20 个 episode1710 → 1720每个 episode 后打印Goal!!并 reset突然在actor_a_loss.backward()时显存耗尽根本原因显存泄漏Memory Leak不是过拟合而是训练代码中存在以下问题之一计算图未释放backward()后保留了中间变量经验回放缓冲区存储 GPU tensor每次采样都保留在显存中未及时清空 GPU 缓存长期累积导致碎片化网络保存时复制了计算图四、显存泄漏的修复方案1. 确保 backward 后释放计算图# 错误写法actor_loss.backward(retain_graphTrue)# 保留计算图会泄漏# 正确写法actor_loss.backward()# 默认 retain_graphFalse2. 经验回放缓冲区中存储 CPU tensor# 错误存储 GPU tensorself.memory.append((state,action,reward,next_state,done))# 正确转移到 CPUself.memory.append((state.cpu(),action.cpu(),reward,next_state.cpu(),done))# 使用时再转回 GPUstatestorch.stack([exp[0]forexpinbatch]).to(device)3. 手动清空 GPU 缓存# 在每个 episode 结束或每 N 步后调用torch.cuda.empty_cache()4. 使用with torch.no_grad()包装无梯度的计算withtorch.no_grad():target_actionsself.target_actor(next_states)target_qself.target_critic(next_states,target_actions)5. 减小 batch_size 和网络宽度batch_size64# 而不是 256hidden_dim256# 而不是 5126. 设置环境变量缓解显存碎片exportPYTORCH_CUDA_ALLOC_CONFexpandable_segments:True7. 完整 learn() 函数模板deflearn(self):iflen(self.memory)self.batch_size:returntorch.cuda.empty_cache()# 开始前清理# 采样并转移到 GPUstates,actions,rewards,next_states,donesself.sample_batch()statesstates.to(self.device)# ...# 计算 actor lossactor_lossself.compute_actor_loss(states)self.actor_optimizer.zero_grad()actor_loss.backward()self.actor_optimizer.step()# 计算 critic losscritic_lossself.compute_critic_loss(states,actions,rewards,next_states,dones)self.critic_optimizer.zero_grad()critic_loss.backward()self.critic_optimizer.step()torch.cuda.empty_cache()# 结束后清理五、针对 RTX 3050 (8GB 显存) 的训练建议超参数推荐值原因batch_size64 ~ 128太大容易爆显存hidden_size256网络宽度适中replay buffer size1e5 ~ 5e5太大存储开销高存 CPU 即可网络数量2 个 Actor 2 个 CriticTD3 标准配置GPU 利用率监控nvidia-smi避免利用率突增导致 OOM训练前检查清单确认torch.cuda.is_available()为 True设置os.environ[CUDA_VISIBLE_DEVICES] 0所有 tensor 显式调用.to(device)经验回放缓冲区存储 CPU tensor定期执行torch.cuda.empty_cache()使用with torch.no_grad()包裹 target 网络更新 六、监控与调试命令实时显存变化watch-n0.5nvidia-smi记录显存使用历史nvidia-smi --query-gputimestamp,memory.used--formatcsv-l1gpu_mem_log.csvPyTorch 显存分析importtorchprint(torch.cuda.memory_summary())torch.cuda.reset_peak_memory_stats()七、总结查看 GPU 状态熟练使用nvidia-smi及其扩展命令。显存泄漏特征训练初期正常后期 OOM显存占用逐渐增长不回落。修复核心避免计算图残留、存储 CPU tensor、定期清理缓存。RTX 3050 用户控制 batch_size 和网络宽度8GB 显存足够运行中小规模强化学习任务。遇到 OOM 不要慌按照本文步骤排查通常能解决 90% 的问题。如果仍然崩溃请检查是否有其他进程占用显存或考虑使用混合精度训练torch.cuda.amp进一步降低显存占用。 本文基于实际训练日志和错误信息整理而成所有命令已在 Ubuntu 20.04 CUDA 12.2 PyTorch 环境下验证。

相关文章:

GPU 状态全解析:从查看命令到显存泄漏排查与修复

GPU 状态全解析:从查看命令到显存泄漏排查与修复在运行强化学习训练时,你是否遇到过 CUDA out of memory 错误?明明 GPU 显存足够,却在一段时间后崩溃?本文将带你从基础命令开始,深入分析 GPU 状态&#xf…...

EduCoder Java异常处理实战:从基础到自定义异常

1. Java异常处理入门:从ID检测理解异常机制 第一次接触Java异常处理时,我完全被那些try-catch块搞晕了。直到在EduCoder上做了ID检测的练习,才真正明白异常是怎么回事。想象你是个门卫,检查员工工牌时发现有人拿着过期的证件——这…...

长沙心理医院推荐指南+真实案例分享

行业痛点分析长沙作为中部地区核心城市,心理卫生需求持续增长,但行业仍面临多重结构性挑战。据《湖南省精神卫生蓝皮书》显示,长沙常住人口中约12.6%存在不同程度的心理困扰,其中抑郁和焦虑患病率分别为8.3%和6.7%。然而&#xff…...

保姆级教程:用Windows Server 2016和IIS从零搭建ArcGIS Enterprise 10.8全栈环境(含自签名证书生成)

从零构建ArcGIS Enterprise 10.8全栈环境:Windows Server 2016实战手册 当企业需要搭建私有化的地理信息服务平台时,ArcGIS Enterprise无疑是最专业的选择之一。但对于刚接触这套系统的IT人员来说,从裸机开始部署整套环境可能会遇到各种"…...

AWS ALB 多域名合并为路径路由实战 — 从独立域名到统一入口

多个前端子应用各用一个域名,维护成本高且证书管理麻烦。本文记录将多个独立域名合并为同一域名 + 路径路由的完整过程,包括规则修改、优先级调整和安全操作方法。 前言 随着前端微应用越来越多,每个子应用一个域名的方式带来了问题: 域名多,DNS 和证书管理成本高 跨域问…...

BilibiliDown终极指南:轻松下载B站视频的完整解决方案

BilibiliDown终极指南:轻松下载B站视频的完整解决方案 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/b…...

STATA实证分析:手把手教你搞定工具变量回归(IV估计)的完整流程与命令

STATA实证分析:工具变量回归(IV估计)的保姆级实战指南 经济学研究中,内生性问题就像房间里的大象——人人都知道它存在,却常常选择视而不见。记得我第一篇投稿被拒时,审稿人那句"请考虑内生性问题的潜…...

不止于投屏:拆解Scrcpy-Server.jar,看一个APK如何实现安卓屏幕流与反向控制

深入解析Scrcpy-Server.jar:安卓屏幕流与反向控制的技术内幕 在移动开发领域,屏幕镜像与控制技术一直是提升工作效率的关键。Scrcpy作为一款开源工具,以其低延迟、高性能的特性脱颖而出。但真正让它与众不同的是其独特的技术实现——一个看似…...

3分钟掌握B站视频数据采集:用Python实现批量数据分析自动化

3分钟掌握B站视频数据采集:用Python实现批量数据分析自动化 【免费下载链接】Bilivideoinfo Bilibili视频数据爬虫 精确爬取完整的b站视频数据,包括标题、up主、up主id、精确播放数、历史累计弹幕数、点赞数、投硬币枚数、收藏人数、转发人数、发布时间、…...

SNN vs CNN vs SVM:在MNIST数据集上,谁更省电、谁更快?一次实战性能横评

SNN vs CNN vs SVM:MNIST实战中的能效与速度终极对决 当你在设计一个需要部署在边缘设备上的图像分类系统时,准确率只是冰山一角。真正决定成败的,往往是那些藏在技术规格表里的数字——毫瓦时的能耗、毫秒级的延迟,以及训练所需的…...

Windows驱动管理终极指南:Driver Store Explorer完全教程

Windows驱动管理终极指南:Driver Store Explorer完全教程 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer Windows系统驱动管理是每个用户都需要掌握的重要技能,而…...

微电网系列之PQ控制在并网与孤岛模式下的应用差异

1. PQ控制在微电网中的核心作用 微电网作为分布式能源系统的重要组成部分,其稳定运行离不开精准的功率控制。PQ控制(恒功率控制)作为变流器的基本控制策略之一,在微电网的不同运行模式下展现出截然不同的特性。简单来说&#xff0…...

如何用高中物理知识理解质能方程E=mc²?一个通俗易懂的推导过程

如何用高中物理知识理解质能方程Emc?一个通俗易懂的推导过程 想象一下,你手中握着一块普通的巧克力。如果告诉你,这块巧克力蕴含的能量足以煮沸上千壶水,你会相信吗?这听起来像是科幻小说里的情节,但正是爱…...

Vivado卸载程序不见了?别慌,用这个隐藏参数5分钟搞定(附SDK/HLS清理)

Vivado卸载程序消失的终极解决方案:隐藏参数与深度清理指南 当你在Windows开始菜单里翻遍了所有角落,却找不到Vivado的卸载入口时,那种感觉就像被困在数字迷宫里——明明知道出口就在某处,却怎么也找不到正确的路径。这种情况在FP…...

西安 GEO 优化收费标准解析与实施方案

本文围绕西安 GEO 优化收费标准展开,重点解析了优化策略如何提升企业在本地市场的曝光率以及客户转化。文章介绍了在实施过程中需考虑的本地市场环境因素,包括行业竞争状况和消费者需求变化。这些内容为后续具体方案提供了基础支撑。接下来的部分将通过实…...

Arthas+jmap组合拳:高效排查Java内存泄漏的5个实用技巧

Arthas与jmap双剑合璧:5个高阶Java内存泄漏排查实战技巧 当生产环境的Java应用突然出现内存泄漏时,那种感觉就像在漆黑的迷宫里寻找出口。作为经历过无数次深夜紧急故障排查的老兵,我深知仅靠单一工具往往难以快速定位问题根源。本文将分享如…...

数据分析小白必看:从Excel到Python的3个实战案例(附数据集)

数据分析小白必看:从Excel到Python的3个实战案例(附数据集) 数据分析正逐渐成为职场人士的必备技能。无论是市场调研、销售预测还是用户行为分析,数据驱动的决策方式正在重塑各行各业的工作模式。但对于初学者来说,最大…...

别再断电就丢程序了!手把手教你用Vivado把FPGA程序固化到SPI Flash(附MCS文件生成教程)

FPGA程序固化实战:从JTAG调试到SPI Flash永久存储的完整指南 每次断电都要重新烧录程序?这可能是FPGA新手工程师最头疼的问题之一。想象一下,你花了一整天调试的FPGA设计,在实验室里运行得完美无缺,结果设备一断电&…...

从菜单管理程序入手:一文吃透Python中不可变的元组和灵活的字典

从菜单管理程序入手:一文吃透Python中不可变的元组和灵活的字典 走进任何一家餐厅的后厨,你都会发现两种截然不同的菜单管理方式:墙上用粉笔写着的今日特惠套餐(每周更换一次),和厨师长手中随时涂改的单点菜…...

问卷数据总被导师打回?用验证性因子分析(CFA)搞定量表效度的保姆级自查清单

问卷数据总被导师打回?用验证性因子分析(CFA)搞定量表效度的保姆级自查清单 每次提交问卷数据都被导师用红笔圈出"效度不足"四个大字?明明按照教科书操作却总在CFA环节翻车?这份清单将带你用验证性因子分析给…...

STEP7新手避坑指南:手把手教你搞定S7-300硬件组态与IO地址分配(CPU315-2DP实战)

STEP7新手避坑指南:手把手教你搞定S7-300硬件组态与IO地址分配(CPU315-2DP实战) 第一次打开STEP7软件时,面对密密麻麻的模块列表和复杂的地址分配规则,大多数新手都会感到无从下手。记得我刚开始接触S7-300时&#xff…...

国标GB28181视频平台EasyCVR中RTSP地址无法获取的原因分析与解决方法

下午三点多,群里弹出一条消息:说RTSP接口获取不到RTSP地址了!我看了看消息,脑子里立刻蹦出一个答案。因为我知道,EasyCVR最新版本做了一个调整:RTSP功能默认是关闭的,需要用户手动到配置页面去开…...

1.8万美金干掉顶级专家!Anthropic开启AI自主进化:Claude竟能自我「开颅」

1997年深蓝下棋,2016年AlphaGo围棋,2026年9个Claude副本做真实科研……每次我们都说「只是特定领域」。这一次,我们真的还能说什么?欢迎来到AI成为科研同事、竞争者、甚至继任者的时代。最新突破,AI再次碾压人类&#…...

告别Putty!用MobaXterm玩转Linux服务器Python开发(含虚拟环境避坑指南)

告别Putty!用MobaXterm玩转Linux服务器Python开发(含虚拟环境避坑指南) 如果你还在用Putty连接Linux服务器做Python开发,是时候试试MobaXterm了。这款全能终端工具不仅能完美替代Putty的基础功能,还内置了SFTP文件传输…...

CentOS7物理机安装后网卡缺失问题排查与驱动安装指南

1. 问题现象与初步排查 刚装完CentOS7系统,兴冲冲地插上网线准备配置服务器,结果发现ifconfig命令只显示一个孤零零的lo回环接口,完全看不到eth0或ens33这类物理网卡的身影。这种场景就像买了辆新车却发现方向盘不见了——网络配置无从下手。…...

【限时解密】SITS2026未公开Demo视频中的AI攻略生成器:融合LBS+实时政策+情绪感知的第三代架构

第一章:SITS2026分享:AI旅游攻略生成 2026奇点智能技术大会(https://ml-summit.org) 核心架构设计 该系统基于多模态大模型协同框架,融合地理知识图谱、实时POI数据流与用户偏好建模模块。主干模型采用微调后的Llama-3-70B-Instruct作为规划…...

技术赋能:多网盘直链解析工具的架构革新与效率革命

技术赋能:多网盘直链解析工具的架构革新与效率革命 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘…...

混沌工程实战:让系统可用性从99%到99.99%的代价

跨越“四个九”的技术鸿沟在数字业务高速发展的今天,系统可用性已不再是简单的技术指标,而是关乎企业生命线的核心保障。从99%到99.99%,看似仅提升0.99个百分点,背后却意味着年停机时间从87.6小时锐减至52.6分钟。这近99倍的可用性…...

【限时开源】生成式AI混沌实验矩阵V1.2:覆盖RAG/Agent/微调Pipeline的12个生产级故障模板

第一章:生成式AI应用混沌工程实践 2026奇点智能技术大会(https://ml-summit.org) 生成式AI系统在生产环境中面临独特的韧性挑战:模型推理延迟突增、提示注入引发的输出失控、向量数据库检索漂移、以及LLM API服务级联故障等,均难以通过传统…...

科研中常用的GIT常用指令

git add. # 将当前目录的修改加入暂存区git commit -m "message" # 从暂存区保存到本地仓库git push -u origin main # 将本地分支main推送到云端仓库origin上有了 -u像是你告诉 Git:记住,以后我这个本地 main 默认就对应远程 origin/main没有…...