查看原文
其他

C盘爆满?!使用显卡虚拟机完美解决

Glen Glen 2023-10-10

大家在本地跑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.txtfor /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\\servicing\\Packages\\%%i"del hyper-v.txtDism /online /enable-feature /featurename:Microsoft-Hyper-V -All /LimitAccess /ALLpause

之后对文件点击右键,选择“以管理员身份运行”,安装完成后,重启电脑。

打开控制面板,选择“程序和功能”,点击“启用或关闭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 #这个命令是给虚拟机添加GPUSet-VMGpuPartitionAdapter -VMName $vm -MinPartitionVRAM 1 #这一串命令都是设置虚拟GPU的参数,min都填1 MAX填1亿 optimalmax填9999万Set-VMGpuPartitionAdapter -VMName $vm -MaxPartitionVRAM 100000000Set-VMGpuPartitionAdapter -VMName $vm -OptimalPartitionVRAM 99999999Set-VMGpuPartitionAdapter -VMName $vm -MinPartitionEncode 1Set-VMGpuPartitionAdapter -VMName $vm -MaxPartitionEncode 100000000Set-VMGpuPartitionAdapter -VMName $vm -OptimalPartitionEncode 99999999Set-VMGpuPartitionAdapter -VMName $vm -MinPartitionDecode 1Set-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 1Set-VMGpuPartitionAdapter -VMName $vm -MaxPartitionCompute 100000000Set-VMGpuPartitionAdapter -VMName $vm -OptimalPartitionCompute 99999999Set-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杀疯了 | 用Lora画你的初恋小姐姐

青春就是用来失败的 | 训练灌篮高手专属AI绘画模型

AI一键让照片说话,无限且免费!

AI一键换脸,无限且免费!


欢迎加入AI社群

跟我一起疯狂学习AI

求个三连“分享、点赞、在看”~

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存