一则愚蠢的内存问题
每次开机/重启后看着任务管理器里70%的内存占用都百思不得其解. 我可是选配了64GB的物理内存,到底是什么见鬼的软件会一开机就吃掉一大半?扫描了无数次病毒也没有任何线索,直到我看到显卡页面显示有32GB的GPU共享内存.
以前为了在8G显存的独显上跑更大的模型,似乎做过一些骚操作,难道是当时埋下的隐患,这部分内存被系统预留了?
开始无限重启,进BIOS找相关的设置. 但是显然MSI留了一手.在几经翻找没有看到任何有关显卡和显存的设定之后,还是上YouTube求助三哥. 果然,MSI的主板BIOS有隐藏菜单. 干得漂亮.
太久没有接触过装机,BIOS里各种晦涩难懂的词成了拦路虎. 好办,问Claude. 结果在对应的配置上,Claude表示你这给的还算保守了. 预先分配的才给了256MB,你这卡给到2GB都不过分. 吓,既然不是BIOS里分配的,那就是某个驱动了?显卡驱动这种居家旅行必不可少的东西,怎么可能出这么大纰漏. 先升级再说.
漫长的十分钟升级完,毫无变化. 大概是被那32GB共享显存迷了心智,一心觉得就是被显卡预留了. 继续问Claude. 显然这个时候 Claude也被我误导了,也开始觉得是显卡驱动的锅,开始蛊惑我下个DDU,干掉所有的显卡驱动再重装. 因为这时候Claude也觉得我这个内存占用很异常. 我还差点儿脑子一热就干了. 还好认真又看了下回复. 提到个工具Rammap. 微软自家做的, System Internals套件的一个. 弄下来试试吧.
果然,在任务管理器和资源管理器里看不到的内存被标记出来了. Driver Locked. 吃了39GB. 抓紧把新信息同步给Claude. 这下AI铁了心觉得是驱动问题了,又开始敦促我删了显卡驱动重装. 但对我来说这个新信息给了我个关键词. 虽然Google的搜索流量被各种AI工具蚕食了一波,但是真要搜点儿什么的时候依然没有替代品. 于是在一些排名不太靠前的帖子里,看到有人提到了Hyper-V的一个bug导致内存泄露. 嗯?Hyper-V,一个熟悉又陌生的词. 对哦,以前有阵子开了个Ubuntu的虚拟机搭了个开发环境来着. 看看怎么个事,不行把Hyper-V服务停了先,反正也很久没用了.
打开Hyper-V管理器,映入眼帘一个硕大的Ubuntu,分配内存:32GB……艹……跟随系统启动:一直……艹……😑
闹了半天锅在这儿啊…删了删了…因为每次启动系统,Hyper-V都很贴心的在后台帮我把Ubuntu也启动起来了…而且直接预留了我一半的内存给他用…于是每次我刚启动系统,就发现少了一半的内存…
折腾了三个小时,最后发现是自己的愚蠢造成的…当然也又再次提醒了我AI尤其是LLM的局限性…因为一开始我想到的都是内存相关的问题,而且给了个误导的方向,共享显存…于是在LLM这个架构里面,他很难会关联到Windows系统自身组件和用户傻逼可能会产生的问题…基本逻辑还是在顺着用户的话来续写…对于为排除某个问题的全局视野是没有的. 当然这也不是一家的问题,原理上所有的LLM都有这个局限. 🤔
最后点个题,愚蠢的内存问题…嗯,确实是内存问题,我的内存出了问题,一年多了,完全没有想起来过还有个在后台默默吃掉内存然后空转的虚拟机…🙃