使用 docker 搭建自己的实验环境——解决很多小伙伴论文复现环境搭建难题
1. 问题描述
对于论文复现,大多数小伙伴都会遇到很多很多各种各样的问题。尽管我已经尽力回答所有人的留言,甚至为一些小伙伴免费提供了我自己购买的云服务器,但是依然很难解决 “如何让这些代码在我本地运行” 的问题。经过多次尝试,以及其他小伙伴的帮助,我开始将很多实验都移到docker中进行,并且搭建好环境,完成实验以后,将镜像导出并开源,以供更多人使用。
当然,不得不说,我做的只是非常小的一部分工作,最主要的内容还是论文开源作者提供。
2. 方案描述
每次实验都是基于 docker 进行的操作,使用 anaconda3 的合适的版本,配置合适版本的 tensorflow 或者 pytorch,并且安装论文算法的依赖,并且添加论文使用到的数据集(如果数据集公开的话)完成论文实验。并且将 docker 环境导出,以供更多小伙伴的使用。
方案依赖:
- 需要具有一定的 docker 基础;
- 需要具有一定的 python 基础。
3. 实操例子
目前研究论文源码地址来自 https://github.com/NetManAIOps/OmniAnomaly ,现在需要搭建环境,运行这个代码。
3.1 检查 docker 是否安装完成
$ docker --version
3.2 下载 tensorflow 1.15 镜像
前往 tensorflow docker 镜像 找到合适的版本镜像。我们这里选择的是低版本的,1.15.5
,对应的链接为 https://hub.docker.com/r/tensorflow/tensorflow/tags?page=1&name=1.15 。
$ docker pull tensorflow/tensorflow:1.15.5-jupyter
pull 完成以后,查看镜像如下:
3.3 docker 本地启动 jupyter
为了方便我们新建一个文件夹专门存储 jupyter notebook,并在启动 docker 的时候指定路径,方便我们本地与docker镜像之间传输文件,保存环境等等。
我自己本地路径为 ~/smileyan/docker-notebooks/
,也就是说启动 jupyter 的时候默认显示的 notebooks 对应的就是这个目录。
现在启动命令如下:
注意
需要根据自己的实际路径修改一下路径,并且根据自己喜好设置端口,这里使用的是 10086 端口。
$ docker run -it --rm -v $(realpath ~/smileyan/docker-notebooks):/tf/notebooks -p 10086:8888 tensorflow/tensorflow:1.15.5-jupyter
3.4 本地浏览器访问 10086 端口
第一次访问会要求输入token。
如上图所示,两个文件夹,其中 notebooks 就是我们前面启动镜像的时候配置的自己的本地路径,而 tensorflow-tutorials 是这个镜像自带的。感兴趣的自行查看。
这里我们在 notebooks 下新建一个 jupyter notebook ,并且输入以下代码,查看效果:
到目前为止我们确定已经搭建好了 python3,6 + tensorflow 1.15.5 的环境。
3.5 下载实验源码
在自己的本地浏览器上下载实验源码,然后移动到前面我们配置好了的 docker_notebooks
的文件夹下面,并解压。
接下来我们在刚刚解压的源码目录下新建一个 notebook,以方便运行源码。
3.6 安装 git
为了避免出现如下错误,得安装一下 git。
apt-get updateapt-install git
3.7 编辑 requirements.txt
去除用不上的比如 GPU 相关的,更改为不带 GPU 版本的,当然,对于拥有GPU的,而且驱动什么的都安装好了,需要根据自己情况调整。
更改版本不合理的,比如 matplotlib 和 six 。
更改完成以后,我们的 requirement.txt 如下:
six
matplotlib
numpy
pandas
scipy == 1.2.0
scikit_learn == 0.20.2
tensorflow == 1.12.0
tensorflow_probability == 0.5.0
tqdm
imageio
fs == 2.3.0
click == 7.0
git+https://github.com/thu-ml/zhusuan.git
git+https://github.com/haowen-xu/tfsnippet.git@v0.2.0-alpha1
3.8 预处理以及运行
如图所示,我们在刚刚新建的这个notebook 下面输入如下命令启动预处理脚本。
! python data_preprocess.py SMD
预处理完成以后就可以开始训练与检测了。
!python main.py
接下来就是一个漫长的等待过程,具体时间长短需要根据不同的机器情况而定。
经过这个过程,证明我们的环境已经完全配置好了,足以让这个算法自由奔跑了。
OmniAnomaly运行过程视频录制
4. 保存docker镜像
尽管个人认为,最好根据上面详细的介绍内容,自动动手实验实验,了解整个配置环境的过程,遇到的问题以及对应的处理方法,但是如果希望自己直接跑我这个镜像的话也是可以的,我已经将我的当前镜像环境导出,需要的小伙伴可以自行下载,并导入 docker ,启动后查看运行效果等等。
如果需要的小伙伴,欢迎从 docker hub 中下载我的资源,并且docker 加载,并运行。
已经搭建好上面说的所有内容,前去查看 https://hub.docker.com/r/smileyan9/omnianomaly_docker_runner
5. 总结
一切才刚刚开始 ~ 接下来的时间里,闲时一定补充这方面内容,对其他的算法进行实现,并且总结整个过程,导出为 镜像以供更多小伙伴们使用。
Smileyan
2022.10.30 23:11
使用 docker 搭建自己的实验环境——解决很多小伙伴论文复现环境搭建难题相关推荐
- nvidia docker容器不支持中文的解决办法_用docker搭建深度学习实验环境
tensorflow和pytorch官方都维护了不同版本的docker镜像.借助docker我们可以方便的搭建起深度学习实验环境. 但是想要在同一个容器内同时拥有tensorflow.pytorch. ...
- 《Windows PowerShell实战指南(第2版)》——1.4 搭建自己的实验环境
本节书摘来自异步社区<Windows PowerShell实战指南(第2版)>一书中的第1章,第1.4节,作者:[美]Don Jones(道·琼斯) , Jeffery Hicks(杰弗瑞 ...
- Argo CD系列视频图文版之手把手教你搭建Argo CD 实验环境
开篇 本期视频,我们一起来手把手的搭建实验环境.为了节省资源,我们部署 All-In-One K8S环境,也就是所有 kubernetes 资源,运行在一台服务器上. 视频直达 第一部分视频 第二部分 ...
- 【实验1:RT-Thread环境搭建+IIC光线传感器实验】
[实验1:RT-Thread环境搭建+IIC光线传感器实验] 1. RA 开发环境搭建 1.1 必备工具 1.2 环境搭建 1.2.1 灵活配置软件包 (FSP) 1.2.2 CPK-RA6M4 板级 ...
- ESP32在Adruion IDE上的环境搭建,以及疑难杂症的解决办法(亲测有效)
本着学习的兴趣,笔者也开始学习江湖上流传已久的ESP32单片机.学习单片机的第一步肯定是搭建相关的编程环境,在这个过程中笔者也遇到了许多的坑.本着时间充足,和以后重装环境方便,将此办法保存到网上,与君 ...
- 内网渗透初探(靶场环境搭建+web层面实验+内网基本操作)
靶场环境搭建 在此我使用的是红日安全的环境 下载地址(红日安全) 图片取自互联网,ip地址以实际地址为准 操作系统 IP地址 攻击者 kali IP地址:192.168.3.10 攻击者 Window ...
- python软件包自带的集成开发环境-实验一 熟悉Python的集成开发环境
实验一 熟悉Python的集成开发环境 一.实验目的与要求 1.了解什么是Python: 2.了解Python的特性: 3.掌握下载和安装Python的方法: 4.学习执行Python命令和脚本文件的 ...
- Pwn环境配置(三)——ubuntu环境搭建
Pwn环境配置(三)--ubuntu环境搭建 目录 Pwn环境配置(三)--ubuntu环境搭建 PWN python2安装 安装setuptools pip安装 2021.10.7补充 安装相关依赖 ...
- android切环境插件,Android Studio下Flutter环境搭建图文教程
一.Flutter介绍 Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面.Flutter可以与现有的代码一起工作.在全世界,Flutter正在被越来越多的 ...
最新文章
- 指尖大冒险、跳一跳升级版html5游戏全代码
- 算法-----买卖股票的最佳时机(Java 版本)
- java12小时制的时间转换为24小时制
- hdu 5182 PM2.5
- oracle like 条件拼接
- Quest 公司的Shareplex 与 GoldenGate比较
- AbstractAutowireCapableBeanFactory 类对容器生成的Bean 添加后置处理器
- Android ADB
- linux终端如何打开文件夹,如何从终端打开文件夹(带GUI)?
- 【BZOJ2149】拆迁队,分治+斜率优化DP
- 普通人学python有啥用-普通人为什么要学习Python
- 认识接口(Interface)设计
- IOS客户端Coding项目记录导航
- 2022华为软件精英挑战赛比赛经历
- 深入浅出学习CAN系列-了解CAPL编程语言
- DLAN 连接和使用体验——Twonky
- Visual Studio2019出现“ 激活远程语言服务器 c#/Visual Basic 语言服务器客户端出错”请运行devenv/log...…“的解决办法
- python实现中文情感分析与可视化
- 技术人人都是好的需求评审专家- 如何需求评审,需求评审评什么.
- 分时线的9代表什么_一位血亏百万股民血泪史告诉你:为什么要打板?