VMware虚拟机部署深度学习训练环境:多系统开发指南

你是不是也遇到过这样的烦恼?想在自己的电脑上跑深度学习项目,但系统环境总是出问题,装了这个库那个库版本冲突,或者想同时用Windows和Linux系统,又不想来回切换电脑?今天我就来分享一个特别实用的解决方案——用VMware虚拟机搭建深度学习训练环境。

这个方法最大的好处就是环境隔离便携性。你可以在Windows系统里运行一个Linux虚拟机,或者反过来,甚至可以在同一台电脑上同时运行多个不同配置的虚拟机。想测试新框架?直接克隆一个虚拟机,随便折腾,搞坏了也不影响主系统。换电脑了?直接把虚拟机文件拷贝过去,环境原封不动地迁移。

我用了好几年虚拟机做开发,踩过不少坑,也总结了不少经验。这篇文章就是把我这些年积累的实用技巧整理出来,手把手教你从零开始搭建一个高性能的深度学习虚拟机环境。

1. 准备工作:选择合适的VMware版本和系统镜像

在开始之前,我们需要准备两样东西:VMware软件和操作系统镜像。

VMware有几个版本,对于个人学习和开发,我推荐用VMware Workstation Player,它是免费的,功能也足够用。如果你需要更高级的功能,比如快照管理、团队协作等,可以考虑VMware Workstation Pro,不过需要付费。

至于操作系统,对于深度学习来说,Ubuntu是最主流的选择。它社区支持好,软件包丰富,而且大多数深度学习框架都对Ubuntu有最好的支持。我建议选择Ubuntu 20.04 LTS或22.04 LTS,这两个都是长期支持版本,比较稳定。

下载Ubuntu镜像时,建议选择服务器版而不是桌面版。服务器版更轻量,资源占用少,而且我们主要是通过命令行操作,图形界面需求不大。如果你确实需要图形界面,也可以选择桌面版,但要做好心理准备,它会占用更多内存和存储空间。

这里有个小技巧:下载镜像时,选择离你地理位置近的镜像站点,下载速度会快很多。比如在国内,可以选择阿里云或清华大学的镜像源。

2. 创建虚拟机:关键配置一步到位

创建虚拟机看起来简单,但有几个关键配置会直接影响后续的使用体验。我建议按照下面的步骤来,避免走弯路。

2.1 基本配置

打开VMware,选择"创建新的虚拟机"。在安装来源这里,选择"稍后安装操作系统",这样我们可以先配置好虚拟机硬件,再安装系统。

接下来选择操作系统类型。如果你下载的是Ubuntu 22.04,就选择"Linux" -> "Ubuntu 64位"。给虚拟机起个有意义的名字,比如"DL-Training-Ubuntu-22.04",这样以后管理起来方便。

存储位置建议放在SSD硬盘上,因为虚拟机文件通常比较大(几十GB到几百GB),SSD的读写速度会快很多。如果放在机械硬盘上,启动和运行都会比较慢。

2.2 硬件配置要点

这是最关键的部分,配置好了后续用起来顺畅,配置不好可能会遇到各种性能问题。

处理器配置:建议分配2-4个CPU核心。如果你的电脑是8核的,分配4个给虚拟机比较合适。记得勾选"虚拟化Intel VT-x/EPT或AMD-V/RVI",这个选项对虚拟机性能提升很大。

内存分配:深度学习训练很吃内存。如果你的主机有16GB内存,建议给虚拟机分配8GB;如果有32GB,可以分配16GB。记住要留足够的内存给主机系统用,否则两边都会卡。

网络配置:选择"NAT模式"最方便。这样虚拟机可以上网,主机和虚拟机之间也能互相访问,而且虚拟机的IP地址不会和局域网内其他设备冲突。

磁盘配置:建议分配至少50GB空间。选择"将虚拟磁盘拆分成多个文件",这样迁移和备份都更方便。磁盘类型选"SCSI",性能更好。

创建完成后先别急着启动,我们还有几个重要设置要调整。

3. 性能优化:让虚拟机跑得更快

默认创建的虚拟机配置可能不是最优的,特别是对于深度学习这种计算密集型任务。下面这些优化设置能让你的虚拟机性能提升一个档次。

3.1 内存和CPU优化

在虚拟机设置里,找到"处理器"选项,开启"虚拟化CPU性能计数器"和"虚拟化IOMMU"。这两个选项能提升虚拟机的计算性能。

在"内存"选项里,如果你分配了8GB以上内存,建议开启"预留所有客户机内存"。这样虚拟机启动时就会锁定这些内存,避免在训练过程中因为内存不足而频繁交换到硬盘。

3.2 显示设置调整

如果你不需要图形界面,可以在"显示器"设置里,将"加速3D图形"关闭,把显存调到最小。这样可以节省资源。

如果需要图形界面,建议把显存调到128MB或256MB,够用就行。虚拟机里的图形性能本来就不如物理机,调太高也没太大意义。

3.3 其他实用设置

在"选项"标签页里,找到"高级",确保"为启用了侧通道缓解的客户机启用"是选中的。这个安全设置对性能影响不大,但能提高虚拟机的安全性。

还有一个很有用的功能是"共享文件夹",我们稍后会详细讲怎么设置。

4. 安装Ubuntu系统:快速且正确

现在可以开始安装系统了。把下载的Ubuntu镜像加载到虚拟机的光驱,启动虚拟机。

安装过程大部分按照默认选项就行,但有几点需要注意:

分区:如果你对Linux分区不熟悉,就选择"清除整个磁盘并安装Ubuntu",让安装程序自动分区。这样最简单,也不会出错。

用户名和密码:设置一个容易记住的。我通常用"dluser"作为用户名,密码设置得复杂一些,毕竟这是开发环境。

安装OpenSSH服务器:在软件选择界面,一定要勾选"安装OpenSSH服务器"。这样安装完成后,我们就可以用SSH从主机连接到虚拟机,比在虚拟机窗口里操作方便多了。

安装过程大概需要20-30分钟,取决于你的电脑性能。安装完成后重启,用刚才设置的用户名密码登录。

5. GPU穿透配置:让虚拟机也能用显卡

这是深度学习环境搭建中最关键也最复杂的一步。VMware支持GPU穿透(也叫GPU直通),就是让虚拟机直接访问主机的物理显卡。不过这个功能需要主机CPU和主板都支持VT-d/AMD-Vi技术。

首先在主机上,需要进入BIOS,找到虚拟化相关设置,确保"VT-d"(Intel)或"IOMMU"(AMD)是开启的。

然后在虚拟机关机状态下,编辑虚拟机设置,在"硬件"里添加一个新设备,选择"PCI设备",找到你的显卡。注意这里可能会看到两个显卡设备,一个是你的独立显卡,一个是集成显卡。选择独立显卡那个。

添加后启动虚拟机,在虚拟机里安装NVIDIA驱动:

# 首先更新系统
sudo apt update
sudo apt upgrade -y

# 添加NVIDIA驱动PPA
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update

# 查看可用的驱动版本
ubuntu-drivers devices

# 安装推荐的驱动版本
sudo apt install nvidia-driver-535 -y  # 版本号根据上面命令的输出选择

# 重启虚拟机
sudo reboot

重启后,在虚拟机里运行nvidia-smi,如果能看到显卡信息,说明GPU穿透配置成功了。

6. 深度学习环境安装:一站式搞定

有了GPU支持,接下来就可以安装深度学习环境了。我推荐用Miniconda来管理Python环境,它比Anaconda更轻量。

6.1 安装Miniconda

# 下载Miniconda安装脚本
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

# 运行安装脚本
bash Miniconda3-latest-Linux-x86_64.sh

# 按照提示安装,建议安装在默认位置
# 安装完成后,重启终端或者运行:
source ~/.bashrc

6.2 创建深度学习环境

# 创建一个新的conda环境
conda create -n dl-env python=3.9 -y

# 激活环境
conda activate dl-env

# 安装PyTorch(根据你的CUDA版本选择)
# 访问pytorch.org获取最新的安装命令
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia

# 或者安装TensorFlow
pip install tensorflow[and-cuda]

# 安装常用的数据科学库
conda install numpy pandas matplotlib scikit-learn jupyter -y

6.3 验证安装

# 测试PyTorch是否能识别GPU
python -c "import torch; print(torch.cuda.is_available())"
# 应该输出True

# 测试TensorFlow
python -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"
# 应该显示GPU设备信息

7. 共享文件夹设置:主机虚拟机文件互通

在虚拟机里做开发,经常需要在主机和虚拟机之间传输文件。用共享文件夹是最方便的方法。

首先在虚拟机关机状态下,在VMware设置里添加共享文件夹。选择主机上你想共享的目录,给它起个名字比如"shared",勾选"映射为网络驱动器"。

启动虚拟机后,共享文件夹会自动挂载。在Ubuntu里,共享文件夹通常挂载在/mnt/hgfs/目录下。如果没有自动挂载,可以手动挂载:

# 安装VMware Tools(如果还没安装)
sudo apt install open-vm-tools open-vm-tools-desktop -y

# 创建挂载点
sudo mkdir -p /mnt/hgfs

# 挂载共享文件夹
sudo mount -t fuse.vmhgfs-fuse .host:/shared /mnt/hgfs -o allow_other

# 设置为开机自动挂载
echo '.host:/shared /mnt/hgfs fuse.vmhgfs-fuse allow_other 0 0' | sudo tee -a /etc/fstab

现在你就可以在/mnt/hgfs目录下访问主机上的文件了。我通常把项目代码放在共享文件夹里,这样既可以在主机的IDE里编辑,又可以在虚拟机里运行。

8. 网络配置:让虚拟机访问更顺畅

默认的NAT模式对于大多数情况都够用了,但如果你需要从局域网其他设备访问虚拟机,或者虚拟机需要固定的IP地址,可以配置桥接模式。

在虚拟机设置里,把网络适配器从NAT改为桥接模式。这样虚拟机会获得一个和主机同网段的IP地址,就像局域网里的一台独立电脑一样。

如果需要静态IP,可以在Ubuntu里配置:

# 编辑网络配置文件
sudo nano /etc/netplan/00-installer-config.yaml

# 添加类似这样的配置(根据你的网络情况调整)
network:
  ethernets:
    ens33:  # 网卡名称,用ip a命令查看
      dhcp4: no
      addresses: [192.168.1.100/24]  # 静态IP
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]
  version: 2

# 应用配置
sudo netplan apply

9. 日常使用技巧和问题解决

用了这么多年虚拟机,我总结了一些实用技巧,能让你用得更顺手。

快照功能:这是虚拟机最大的优势之一。在安装好基础环境后,创建一个快照,起名"Base Setup"。以后无论怎么折腾,搞坏了系统,一键就能恢复到干净状态。

资源监控:在虚拟机里安装htop,可以实时监控系统资源使用情况:

sudo apt install htop
htop

性能调优:如果感觉虚拟机卡顿,可以尝试这些方法:

  • 关闭虚拟机的图形界面:sudo systemctl set-default multi-user.target
  • 减少不必要的服务:sudo systemctl disable bluetooth.service
  • 使用轻量级桌面环境(如果确实需要图形界面)

常见问题解决

  1. 虚拟机启动慢:检查是否给了足够的内存,是否放在SSD上。
  2. GPU无法识别:确认BIOS里VT-d/IOMMU已开启,主机驱动安装正确。
  3. 共享文件夹无法访问:重新安装open-vm-tools,检查挂载命令。
  4. 网络连接问题:尝试重启VMware网络服务,或者切换网络模式。

备份策略:虚拟机文件很大,全盘备份不现实。我建议只备份重要的配置文件和数据。可以把/etc/home目录定期备份到主机,或者用版本控制系统管理配置文件。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐