C盘爆满?!使用显卡虚拟机完美解决
大家在本地跑AI相关的开源项目时,经常会遇到要安装很多依赖环境,而且还不知道安装到哪去了……久而久之,C盘标红,焦虑+10086!经过一段时间的研究,我找到了一个完美的解决方法,就是安装一个可以用显卡的虚拟机,使本地AI项目运行在一个完全隔离环境中的计算机系统,快跟我一起去看看吧~
安装Hyper-V
Hyper-V是Windows官方提供的虚拟机管理创建平台,Hyper-V允许你创建虚拟硬盘驱动器、虚拟交换机以及许多其他虚拟设备,甚至还支持在虚拟机中调用显卡。接下来,跟随我一步步去安装一个功能健全的虚拟机吧~
首先,需要在Windows 11家庭版中安装Hyper-V,大部分的Windows预装系统都是家庭版,默认是不带Hyper-V的,我们新建一个脚本,命名为“win11-home-hyperv.bat”,在脚本中输入以下内容:
pushd "%~dp0"
dir /b %SystemRoot%\\servicing\\Packages\\*Hyper-V*.mum >hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\\servicing\\Packages\\%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V -All /LimitAccess /ALL
pause
之后对文件点击右键,选择“以管理员身份运行”,安装完成后,重启电脑。
打开控制面板,选择“程序和功能”,点击“启用或关闭windows功能”,在弹窗里找到“Hyper-V”和“虚拟机平台”并勾选,点击确定后关闭弹窗。
点击开始菜单,找到并打开“Hyper-V管理器”。
创建虚拟机
点击“Hyper-V管理器”主界面的“新建”,进入创建虚拟机的流程。
首先,对虚拟机取个你喜欢的名字。
指定代数,对于 windows 11或者windows10,建议选择第二代。第一代是用于那些老版本的系统,Windows 10以后都建议选择第二代。
对虚拟机的内存进行分配,建议至少8G,不然可能运行不起来。
配置网络,下拉箭头选择Default Switch,否则即便安装成功,虚拟机也无法联网。
连接虚拟硬盘,也就是安装在主体计算机的盘符,建议不要放在C盘。硬盘大小取默认的127G即可,很够用了。
安装选项里,选择“从可启动的映像文件安装操作系统”,同时将映像文件选择上去。Windows的系统安装,直接从官网下载就可以了:
https://www.microsoft.com/zh-cn/software-download/windows11
点击下一步>完成,等待磁盘创建完成,接下来点击虚拟机的“设置”。
在“安全”这一步,将下图红框中的选项都勾选。
在“处理器”这一步,将虚拟处理器的数量设置为2。
在“检查点”这一步,取消勾选“启用检查点”选项。
在“内存”这一步,勾选“启用动态内存”,且需要把最小RAM调整成跟虚拟内存一样大。
至此,虚拟机安装配置项全部完成。
接下来,右键点击刚才新建的虚拟机,选择“连接”。
点击“启动”按钮,并不停按F2键。
成功进入Windows安装界面,之后一直点击下一步。
等待安装完成。
安装成功后,进入系统界面,按Windows + R键,并输入“compmgmt.msc”,打开计算机管理。选择显示适配器,可以看到只有一个默认的显卡。
在虚拟机中配置显卡
关闭虚拟机,回到主体机,在开始菜单找到“Windows PowerShell ISE”,并右键选择“以管理员身份运行”。
在打开的界面里,输入以下代码:
$vm = "计算服务器" #这个就是你的虚拟机的名字,注意双引号要有
Add-VMGpuPartitionAdapter -VMName $vm #这个命令是给虚拟机添加GPU
Set-VMGpuPartitionAdapter -VMName $vm -MinPartitionVRAM 1 #这一串命令都是设置虚拟GPU的参数,min都填1 MAX填1亿 optimalmax填9999万
Set-VMGpuPartitionAdapter -VMName $vm -MaxPartitionVRAM 100000000
Set-VMGpuPartitionAdapter -VMName $vm -OptimalPartitionVRAM 99999999
Set-VMGpuPartitionAdapter -VMName $vm -MinPartitionEncode 1
Set-VMGpuPartitionAdapter -VMName $vm -MaxPartitionEncode 100000000
Set-VMGpuPartitionAdapter -VMName $vm -OptimalPartitionEncode 99999999
Set-VMGpuPartitionAdapter -VMName $vm -MinPartitionDecode 1
Set-VMGpuPartitionAdapter -VMName $vm -MaxPartitionDecode 500000000000000000 #这个参数填5*10^17(5后面跟着17个0)
Set-VMGpuPartitionAdapter -VMName $vm -OptimalPartitionDecode 499999999999999999 #比上面少1(4后面跟着17个9)
Set-VMGpuPartitionAdapter -VMName $vm -MinPartitionCompute 1
Set-VMGpuPartitionAdapter -VMName $vm -MaxPartitionCompute 100000000
Set-VMGpuPartitionAdapter -VMName $vm -OptimalPartitionCompute 99999999
Set-VM -GuestControlledCacheTypes $true -VMName $vm #这个命令英文意思是 客户端控制缓存类型 具体作用估计是开启某个缓存功能吧
Set-VM -LowMemoryMappedIoSpace 1Gb -VMName $vm #最小内存映射空间 1Gb=128MB 我估计意思是最小占用物理机显卡的显存数量,即如果我的虚拟机使用显存不超的话,我这块4G显存的显卡能开32个虚拟机......(如果真的是这样的话,那一些企业可以节约大笔银子)
Set-VM -HighMemoryMappedIoSpace 32GB -VMName $vm #这个参数是最大值,应该只是设定个边界,并不会实际使用到 注意,这里一定要填32G 我之前自作主张改为了4G因为我的RX560D的显存是4G,结果虚拟机启动以后驱动是感叹号,提示资源不足,错误号4
其中第一行需要输入之前新建的虚拟机的名称,按F5即可运行上述代码。
之后,再将主体电脑中的驱动文件,复制到虚拟机中即可。直接双击点击虚拟机安装文件,即可访问虚拟机安装的C盘文件(会显示为新的一个盘)。
首先将主体机中,以下路径的文件
C:\Windows\System32\DriverStore\FileRepository\
复制到虚拟机中的相同路径(需要新建目录)。
然后将主体机中的以下文件C:\Windows\System32\nvapi64.dll,也复制一份到虚拟机的相同文件夹中。
至此,可使用显卡的虚拟机配置完成,可以看到虚拟机中的显示适配器里,已经可以看到跟主体机一致的GPU 4070Ti了。
在这种虚拟机中,不但可以运行显卡跑AI项目,打大型游戏一点问题也没有,从今往后,妈妈再也不用担心你的C盘不够用了。感兴趣的朋友,快去试试吧~
公众号回复【显卡虚拟机】,快速获得安装所需文件。
参考资料:
https://blog.csdn.net/T_an90/article/details/127023779
https://zhuanlan.zhihu.com/p/558063980
https://zhuanlan.zhihu.com/p/609626254
https://www.bilibili.com/video/BV1YK411Z7GF
往期精选
欢迎加入AI社群
跟我一起疯狂学习AI
求个三连“分享、点赞、在看”~