【行业大数据分析技术】大作业:Docker中复现项目代码

这是行业大数据分析技术课程期末大作业的使用说明,请先跳至文末,有一段免责声明。

课程作业要求:

请在这些题目中任意选择一题,要求:

  • 写出论文的摘要,论文的创新点,论文的基本思想,介绍数据集以及实验结果。
  • 在容器镜像dorowu/ubuntu-desktop-lxde-vnc中调试好论文中给的代码,生成新的镜像。并写出使用说明。
  • 运行镜像的代码,运行后可以通过浏览器访问该容器

本文介绍第二三项



一、了解、下载和安装Docker

这一步是很多同学认为最劝退人的一步,连教程都看不懂,环境都装不上。实际上,这是假象。 有一说一,感觉这一步难以看懂最大的原因其实是老师给的教程人为把这一步弄复杂了,原本其实并不复杂的。

要弄清楚我为什么这么说,首先就要弄清楚老师到底是想要我们做什么。

而首先的首先,需要有最最基础的知识储备量,至少要弄懂什么叫物理机,什么叫虚拟机,什么叫Docker。

  • 物理机的资源和组件不会在多个用户之间共享。每个物理机都包括内存、处理器、网络连接、硬盘驱动器和用于运行程序和应用程序的操作系统。换言之,你可以简单理解为,你手中的笔记本或者台式机这种有实体硬件的电脑就是一台物理机。
  • 虚拟机是用作模拟实际物理计算机的软件计算机。在这种情况下,物理机的计算资源被虚拟化并在其上运行的所有虚拟机之间共享。简单理解,如果机器以文件形式存储,并且共用了所在物理机的物理硬件的话,这就是虚拟机。虚拟机我们接触得比较早,大一下就有课程需要使用到VMWare了。
  • Docker 是一个开源的应用容器引擎,是一种LXC技术中的佼佼者,是目前用处最为广泛的内核虚拟化架构之一。不太理解的话,你就把这项技术看成一个迷你版的虚拟机就好了。

有了这些知识储备后,我们来看看老师给我们的任务:

我这里画了一个简图,充分说明了老师给我们的任务书中的步骤有多么麻烦

在这里插入图片描述
在这种方案下,用物理机访问Docker容器相当于在虚拟机下又建了一个虚拟机。当然麻烦得很,其实完全不必。

前面啰里啰唆说了这么一大堆,就是想引出我改进方案,那就是摈弃掉中间那一层的虚拟机,直接在Windows上安装Docker容器,这省了第一步全部与第二步的部分步骤。但是,由于Docker基于的是Linux内核,故不能直接安装,好在,总有高人能解决我们的问题。

这个高人就是Docker Desktop,一款让你能在Windows上直接开发Docker的神器。

关于这个软件的安装,这里不多介绍,一来网上教程非常多,二来傻瓜式安装实在没什么好说的,推荐B站视频。

2022最新Windows docker安装方法

这个视频看到03:48的位置就可以了,还有,关于国内镜像,有人说阿里的最快,这里给出文章链接,自行配置。

那么到现在为止Docker就算安装完成了。其实还可以更取巧,所有训练等等过程都在Windows本地进行得了,最后把文件打包往镜像里一传交差了事这是最方便的。


二、拉取ubuntu镜像

老师给我们的要求是拉取镜像dorowu/ubuntu-desktop-lxde-vnc,并在这个镜像中加以开发。这个镜像是一个低配版的Ubuntu,具体之后再介绍,这里给出步骤。

这是这个作业最最最最最矛盾的一个点,搞得这个作业麻烦得要死。因为据文档,这个镜像是不支持GPU的,一般的小数据拿到这个里面还能跑一跑,大数据(尤其是这个项目的数据,后文介绍的)这种超大型的数据集,放到这里面跑一万年也跑不出来。而且其实其他的官方是有支持GPU的镜像的,比如pytorch官方就给了若干个已经装好深度学习环境的Docker镜像,但那种又只能命令行访问,并不能在浏览器中显示,所以……唉只能说这个作业布置得很莫名其妙。【而且,从没见过谁做深度学习服务器设备还搞这么花里胡哨的可视化的,这算开了眼了】

Win+R打开运行窗口,输入cmd,打开控制台,输入

docker run -p 6080:80 -v /dev/shm:/dev/shm dorowu/ubuntu-desktop-lxde-vnc

稍等片刻,既可以显示下载进度,待下载成功时,如图:

在这里插入图片描述
打开浏览器,地址栏输入http://localhost:6080/,在弹出的浏览器渲染片刻之后,就可以看到一个崭新的Ubuntu系统了,接下来我们像操作正常电脑一样操作这个虚拟电脑就行了

在这里插入图片描述


三、运行GitHub中项目

对于这一部分,每一个题目一定不同。这里我给出我的题目的思路

我的题目:

Accelerating DETR Convergence via Semantic-Aligned Matching(通过语义对齐匹配加速 DETR 收敛)
paper:https://arxiv.org/abs/2203.06883
code:https://github.com/ZhangGongjie/SAM-DETR

一般能到CVPR2022这种级别的论文,README一定是非常详细的,所以直接照着步骤运行就好了。

(一开始我天真地是这么想的)

在这里插入图片描述

然后问题就来了,我这个项目的说明文件中说,跑这个代码需要8个 32G V100 GPU。这是什么概念呢?

不说32G,我们来看看一张16G的该系列显卡多少钱:

在这里插入图片描述
32G的,还要八张,这把我剁碎了按熊掌的价格往出卖也没有啊。所以我只能降低数据集的标准,这是后话。

注意,由于一开始这个环境里什么都没有,连解压ZIP的程序都没有,为了安装一些基础库
我们查看Ubuntu的版本,输入lsb_release -a
在这里插入图片描述

apt更改国内镜像源,首先我们需要备份原来的软件源文件(防止改错),然后删除掉 sources.list (因为我们要直接添加内容)

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

使用你喜欢的文本编辑器,打开 sources.list 并加入如下内容:

deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security multiverse

刷新软件源信息,输入

sudo apt update && sudo apt full-upgrade

下载解压工具,输入

sudo apt install unzip

其余的依据README中的步骤,具体参照各自GitHub网站,以下是我的步骤,不要照着我的敲,你的和我不一样

下载代码ZIP,解压至桌面

在这里插入图片描述
安装Anaconda,添加环境变量,具体请自行搜索,关键词“Ubuntu安装Anaconda”、“添加环境变量”。

在这里插入图片描述

安装conda虚拟环境

conda create -n sam_detr python=3.8 pip

激活conda虚拟环境

conda activate sam_detr

然后,安装PyTorch和TorchVision:

最好使用推荐的设置;CUDA版本需要与自己的本地环境相匹配

conda install pytorch=1.8.1 torchvision=0.9.1 cudatoolkit=10.1 -c pytorch

接下来,安装一些其他的依赖,原文github那条路被墙了,换一种方法

conda install cython scipy tqdm
# pip install -U 'git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI'
conda install -c conda-forge pycocotools

然后这里下一步他说巴拉巴拉巴拉,如果你不需要巴拉巴拉,就可以跳过这一步,所以直接跳过下一步。

在这里插入图片描述
【咱也不知道他说的是啥】

接下来就是最最恶心的一步了,为什么之前交代需要这么贵的计算资源呢?大家看看这个数据集,大名鼎鼎的COCO,2017版本,有多大呢?压缩了之后20多个G。说实话我很少见压缩了之后还有这么大的文件(夹)。

文档里说:

在这里插入图片描述

我根本没有资源算这么大的数据集,所以退而求其次,使用自己另一个项目的数据集,通过脚本转换成上述目录结构和格式。下面我把我的数据集上传,说不定用得上。点击下载数据,按照该结构解压到文件夹。


可能看到这里也发现了,这个电脑一点都不好用,中文中文打不了,复制粘贴还得专门左点一下右点一下,最关键的是,它检测不到我的GPU,除了恶心我之外简直一无是处。

鉴于此,做一个大胆的决定,按照上述标准在Windows本地新建环境,把代码跑通再贴到这个电脑里面交个作业了事。


接下来是复现论文的脚本,由于我的数据集跟论文不同,所以这一步跳过,直接进入训练环节

直接使用它的main函数,编辑参数

parser.add_argument('--epochs', default=1, type=int)

然后运行main.py,截图

经过一番鼓捣,终于成功,至此模型训练过程结束。

在这里插入图片描述
在这里插入图片描述
把这个项目打包,丢进docker,交作业。

注意,模型一定不准,因为数据集文件除了名字之外和COCO没有任何关系。会被pycocotools检测出Results do not correspond to current coco set,没有关系,把这两行注释掉。这也是我之前为什么把epoch设为1的原因,因为跑再多遍反正也不准。
在这里插入图片描述
只要我看不到报错,就没有报错-_-


这篇博客是笔记性质的,很多点考虑得并不周到。其实一开始这作业我是真的很想认真做的,文章中间原本还有一大半内容我全删了,因为问题实在是太多,写到后半段写得我一肚子脾气,一套操作下来发现给的这个Docker环境压根就没办法用GPU。现有条件加作业环境限制实在是没办法完成要求,那就随意了。如果能够帮到大家,感谢。如果给大家的作业完成带来了困扰,见谅。

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

远哥挺乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值