资源包配置
首先便是conda虚拟环境创建了,这里我们便不一一赘述了,大家可以参考博主先前的文章。
然后就是pytorch的安装了,这里可以使用conda命令或者是pip命令
首先是conda命令,博主在第一个服务器时的安装方式就是这个,很正常,但到第二次安装时却总是出错
conda install pytorch==1.12.0 torchvision==0.13.0 torchaudio==0.12.0 cudatoolkit=11.3 -c pytorch
报错:CondaError: Downloaded bytes did not match Content-Length。
网上的解决方法是添加清华源的镜像,但我的已经是清华源镜像了,所以解决方法是把timeout放大,600还是不行,把时间延长到1000.0就成功安装了。命令如下:
conda config --set remote_read_timeout_secs 1000.0
但博主改了好几次,甚至一度将时间设置为6000,但还是失败了,无奈使用了pip的安装方式。这次就按照成功了。
pip install torch==1.12.0+cu113 torchvision==0.13.0+cu113 torchaudio==0.12.0 --extra-index-url https://download.pytorch.org/whl/cu113
所需其他资源包及安装命令:
sudo apt-get install python3-matplotlib
pip install scipy
pip install tqdm
pip install opencv-python
环境部署:
依次执行就可以,本次博主又换了一个服务器,这次在安装过程中遇到了一些问题,最终也解决了,实验数据集换成了CADCD,输入尺寸为1280x1024,很明显此时的显存占用要比640x640的大了很多,下面是本次GPU使用情况:batch-size为16,迭代次数为200次。
然而还没高兴太久就出问题了:
CUDA out of memory. Tried to allocate 2.50 GiB (GPU 0; 15.75 GiB total
capacity; 5.88 GiB already allocated; 479.62 MiB free; 14.15 GiB
reserved in total by PyTorch) If reserved memory is >> allocated
memory try setting max_split_size_mb to avoid fragmentation. See
documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF
由于计算累计最终爆显存了,代码中已经使用了torch.no_grad(),但没有用,那么就只能修改批次大小或者是图片大小了,最终把批次大小降为12。
在开始时占用只有11G,但随着训练继续,达到了15G。
这次应该不会有问题了吧,保佑!
云硬盘挂载问题
在使用这个服务器的过程中意识到每次更换服务器需要重新上传项目和数据集,这让人很苦恼,因此可以采用加装一个云硬盘的方式,这样就不需如此频繁更换了,然而也是刚刚意识到该问题,博主的GPU服务器是硅谷二区的,但并未找到可用区的硬盘,呜呜呜
以下是博主咨询腾讯云客服时给的回复,即云硬盘不支持跨区挂载,也不支持跨账户挂载。
根据这个要求那么我们在购买云硬盘时一定要注意使用与服务器相同地区的云硬盘。这里我们点击自己购买的云硬盘选择自己的服务器后即可完成挂载。一台服务器可以挂载多个云硬盘,一个云硬盘只能给一台服务器使用。
挂载完成后,我们还需要对服务器进行初始化
根据实际使用场景选择初始化方式:
- 若整块硬盘只呈现为一个独立的分区(即不存在多个逻辑盘,如 vdb1 和 vdb2 ),强烈推荐不使用分区,直接在裸设备上构建文件系统。
- 若整块硬盘需要呈现为多个逻辑分区(即存在多个逻辑盘),则您需要先进行分区操作,再 在分区上构建文件系统。
首先需要切换到root用户:
1、执行【sudo passwd root】命令;
2、设置root用户的密码;
3、执行【su root】命令,这样就可以自由地切换到root用户了
以 root 用户执行以下命令,查看磁盘名称
fdisk -l
回显信息类似如下图,表示当前的云服务器有两块磁盘,“/dev/vda” 是系统盘,“/dev/vdb” 是新增数据盘。
执行以下命令,对 “/dev/vdb” 裸设备直接创建文件系统格式。
命令格式:
mkfs -t <文件系统格式> /dev/vdb
我们可以看下自己的文件系统格式:
df -T
不同文件系统支持的分区大小不同,需要根据实际需求合理选择文件系统。可以看到我们的时EXT4类型,我们便以设置文件系统为 EXT4 为例。
mkfs -t ext4 /dev/vdb
执行以下命令,新建挂载点。
mkdir <挂载点>
我们以新建挂载点 /data 为例:
mkdir /data
执行以下命令,将新建分区挂载至新建的挂载点。
mount /dev/vdb <挂载点>
以新建挂载点 /data 为例:
mount /dev/vdb /data
执行以下命令,查看挂载结果。
df -TH
如此我们的云硬盘便挂载成功了。
随后我们只需要将自己的项目直接上传到这个文件夹中便可以了。
当然这里需要注意一个问题我们在使用该云盘上传文件时要么你需要使用root用户登录,要么就将当前的data文件所有者改为我们常用的用户,并退出root用户状态,否则会无法上传。
修改所属用户:
chown ubuntu data
随后在使用过程中博主看到自己的云硬盘一直空间占用一直没有变化,便很是奇怪,后来才发现博主一直使用的是home/ubuntu/data,将这个data文件当作自己挂载云盘时创建的文件夹了,而博主真正的云硬盘的data文件为/data随后使用cp命令将文件迁移到了云硬盘中便正常了。