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 搭建自己的实验环境——解决很多小伙伴论文复现环境搭建难题相关推荐

  1. nvidia docker容器不支持中文的解决办法_用docker搭建深度学习实验环境

    tensorflow和pytorch官方都维护了不同版本的docker镜像.借助docker我们可以方便的搭建起深度学习实验环境. 但是想要在同一个容器内同时拥有tensorflow.pytorch. ...

  2. 《Windows PowerShell实战指南(第2版)》——1.4 搭建自己的实验环境

    本节书摘来自异步社区<Windows PowerShell实战指南(第2版)>一书中的第1章,第1.4节,作者:[美]Don Jones(道·琼斯) , Jeffery Hicks(杰弗瑞 ...

  3. Argo CD系列视频图文版之手把手教你搭建Argo CD 实验环境

    开篇 本期视频,我们一起来手把手的搭建实验环境.为了节省资源,我们部署 All-In-One K8S环境,也就是所有 kubernetes 资源,运行在一台服务器上. 视频直达 第一部分视频 第二部分 ...

  4. 【实验1:RT-Thread环境搭建+IIC光线传感器实验】

    [实验1:RT-Thread环境搭建+IIC光线传感器实验] 1. RA 开发环境搭建 1.1 必备工具 1.2 环境搭建 1.2.1 灵活配置软件包 (FSP) 1.2.2 CPK-RA6M4 板级 ...

  5. ESP32在Adruion IDE上的环境搭建,以及疑难杂症的解决办法(亲测有效)

    本着学习的兴趣,笔者也开始学习江湖上流传已久的ESP32单片机.学习单片机的第一步肯定是搭建相关的编程环境,在这个过程中笔者也遇到了许多的坑.本着时间充足,和以后重装环境方便,将此办法保存到网上,与君 ...

  6. 内网渗透初探(靶场环境搭建+web层面实验+内网基本操作)

    靶场环境搭建 在此我使用的是红日安全的环境 下载地址(红日安全) 图片取自互联网,ip地址以实际地址为准 操作系统 IP地址 攻击者 kali IP地址:192.168.3.10 攻击者 Window ...

  7. python软件包自带的集成开发环境-实验一 熟悉Python的集成开发环境

    实验一 熟悉Python的集成开发环境 一.实验目的与要求 1.了解什么是Python: 2.了解Python的特性: 3.掌握下载和安装Python的方法: 4.学习执行Python命令和脚本文件的 ...

  8. Pwn环境配置(三)——ubuntu环境搭建

    Pwn环境配置(三)--ubuntu环境搭建 目录 Pwn环境配置(三)--ubuntu环境搭建 PWN python2安装 安装setuptools pip安装 2021.10.7补充 安装相关依赖 ...

  9. android切环境插件,Android Studio下Flutter环境搭建图文教程

    一.Flutter介绍 Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面.Flutter可以与现有的代码一起工作.在全世界,Flutter正在被越来越多的 ...

最新文章

  1. 指尖大冒险、跳一跳升级版html5游戏全代码
  2. 算法-----买卖股票的最佳时机(Java 版本)
  3. java12小时制的时间转换为24小时制
  4. hdu 5182 PM2.5
  5. oracle like 条件拼接
  6. Quest 公司的Shareplex 与 GoldenGate比较
  7. AbstractAutowireCapableBeanFactory 类对容器生成的Bean 添加后置处理器
  8. Android ADB
  9. linux终端如何打开文件夹,如何从终端打开文件夹(带GUI)?
  10. 【BZOJ2149】拆迁队,分治+斜率优化DP
  11. 普通人学python有啥用-普通人为什么要学习Python
  12. 认识接口(Interface)设计
  13. IOS客户端Coding项目记录导航
  14. 2022华为软件精英挑战赛比赛经历
  15. 深入浅出学习CAN系列-了解CAPL编程语言
  16. DLAN 连接和使用体验——Twonky
  17. Visual Studio2019出现“ 激活远程语言服务器 c#/Visual Basic 语言服务器客户端出错”请运行devenv/log...…“的解决办法
  18. python实现中文情感分析与可视化
  19. 技术人人都是好的需求评审专家- 如何需求评审,需求评审评什么.
  20. 分时线的9代表什么_一位血亏百万股民血泪史告诉你:为什么要打板?

热门文章

  1. Vue-node.js,Webpack-kuang 略
  2. kettle 宕机后报错
  3. mysql datetime to varchar_SQL中DateTime转换成Varchar样式
  4. 学习烂到留级,却凭着正经发表的第一篇论文,优雅斩获诺贝尔奖
  5. mysql8 学习笔记
  6. N1单词 —— 不可望文生义单词整理
  7. 域名怎么买:一口价购买!
  8. Sun Solaris 用户手册
  9. 一个简单的HTML篮球网页【学生网页设计作业源码】
  10. 全国高等学校计算机水平考试二级证书打印,全国高等学校计算机水平考试二级.doc...