从一无所有的服务器到建立容器,安装jupyter并远程启动,安装MMdetection过程记录

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 配置环境:conda+pytorch 1.8.1+cuda 11.1+cudnn 8.0.5jupyter notebookmmcv-full 1.4.6+mmdet 2.19.0

1. 登录服务器

使用MobaXterm软件,根据ip地址,端口,账号用户名,密码登录。

98c6b6d02f016f74b405fbb8355c627.png


2. 创建拉取镜像

  • 注意:以下操作如果出现如下报错,则说明需要root权限,sudo -i即可。

0d9f68cbd9d8e36e92861594c27e4b1.png


网址:https://registry.hub.docker.com/,直接搜索拉取即可。

022206343e9394c5bc01591233f4a42.png


  • 拉取镜像:

docker pull pytorch/pytorch:1.8.1-cuda11.1-cudnn8-devel

镜像拉取后也许可以选择删除镜像,清理内存,不过楼主没有进行这个操作,不知是否会影响后续建立容器

  • 查找镜像,找到IMAGE ID

docker images

d17e439a8dd36752f0c0c0391d88f02.png


  • 删除镜像

docker rmi IMAGE ID

3. 创建容器

  • 新建容器

docker run -itd --gpus all --shm-size 24g --name mmdet222  -p 20201:22 -p 20202:6006 -p 20203:8888 -p 20204:80  -v /home/docker/user/zhangwenhui/:/workspace pytorch/pytorch:1.8.1-cuda11.1-cudnn8-devel

-itd:以交互模式运行容器,为容器重新分配一个伪输入终端,后台运行容器,并返回容器ID

--gpus all:表示使用--gpus选项指定GPU设备,例如--gpus all,--gpus '"device=1,2"'

--shm-size(重要):docker共享内存大小,默认为64M,如果不设置会出现RuntimeError(楼主成功踩坑,文                     末说明补救方法),设置的大小可以使用df -h命令查看服务器shm的大小进行调整

--name:docker名字

-p:将容器的端口映射到本地的端口,例如20201:22是将容器的22端口映射到本地的20201端口(因为本地的22端口肯定是已经被占用了,需要进行映射)

-v:容器的位置映射,“/home/docker/user/zhangwenhui/”为本地目录,“workspace”为容器目录,表示将“/home/docker/user/zhangwenhui/”挂载到容器的“workspace”目录pytorch/pytorch:1.8.1-cuda11.1-cudnn8-devel:“pytorch/pytorch”为镜像的名字,“1.8.1-cuda11.1-      cudnn8-devel”为镜像的TAG。表示根据该镜像生成容器;

  • 打开容器,红框为容器编号CONTAINER ID

docker ps

ed2758c8e77891ab734d5fbb56982dd.png


  • 进入容器

docker exec -it 486af478a5d7 bash

  • 安装必须软件

apt-get update apt-get install sudo apt-get install -y openssh-server wget vim screen

apt-get是一条linux命令,适用于deb包管理式的操作系统,主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。(在此之前楼主几乎没怎么接触过,不过不妨碍它很强大,在此之前楼主遇到没有的东西习关于pip install,但这是基于python的)

因此在linux系统如果使用某个指令报错:command not found,建议使用apt-get install,apt install也行

ab42a12d6ac7288dfe8465627bb5f9d.png


  • 推荐安装locate,可以查找文件位置

apt-get install mlocate sudo updatedb                                                          ## 更新数据库,不然仍会报错

  • 允许通过ssh登录容器

echo "PermitRootLogin yes" >> /etc/ssh/sshd_config

  • 重启ssh服务

service ssh restart

  • 设置登录密码

passwd root

e62e1ac4ff1086a1eb9c78811b3cc56.png


e62e1ac4ff1086a1eb9c78811b3cc56.png

  • 退出容器

exit

  • 通过ssh进入容器,端口号不是22,而是容器的22端口号映射到本地的端口号。

dc5a973c9946c2e97f360cf9ab5588c.png


4. 安装mmcv-full,mmdet


在安装之前,会出现一个小问题,root前没有(base),说明此时并没有进入conda环境 尝试conda activate base,结果是conda :command not found,说明conda无法使用 原因是没有将conda路径加入./bashrc文件中,因此需要进入./bashrc文件中,添加conda路径

d9a583ef78a6ac17b5509066229522f.png


因为conda为指令,所以用whereis定位,bashrc为文件,用locate定位。

  • 定位conda,找到conda位置

whereis conda

6f5952e14d0c88cfd884c8c3a8ce04e.png


  • 定位bashrc,找到./bashrc文件位置,为/root/.bashrc

locate "bashrc"

f6a742b664a11cbb8ab769b5d8a6eaa.png


  • 进入./bashrc文件,将conda路径"/opt/conda/bin/"加入./bashrc文件末尾

vim /root/.bashrc

969c642b1f3c6bf13e52f202e106788.png


  • 在修改./bashrc文件之后,需要激活

source ~/.bashrc

至此,conda命令可以使用,用conda activate base进入base环境,如果报错,可以conda init,然后重启ssh即可。


官方文档提供了好几种方法安装mmdetection,其中有两种比较简洁好用

  • 使用openmim,该方法最为简洁,但是在用mim时如果网速不佳,或者因为其他问题导致下载速度很慢,就不提倡使用(楼主深受其害,VPN也不行,会报错节点不对,咱也不懂,mim也不能用镜像源)

pip install openmim  mim install mmdet

  • 使用pip,这也是楼主最后选择使用的,该方法也很简洁,并且因为是pip,所以可以使用清华源(啥也不说了,清华源yyds)。注意:在安装之前,一定要去MMCV官方文档查看pytorch与cuda的版本是否匹配,然后去MMdet官方文档(附带安装教程)查看MMdet与MMCV的版本匹配。建议加清华源,不然速度会很慢。

# 加清华源之前pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.8.0/index.htmlpip install mmdet==2.19.0 # 加清华源之后pip install -i https://pypi.tuna.tsinghua.edu.cn/simple mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.8.0/index.htmlpip install -i https://pypi.tuna.tsinghua.edu.cn/simple mmdet==2.19.0

安装完成,查看conda环境里的包,也可以通过这个命令查看pytorch与cuda的版本

conda list

37cef56af5916137e22d1ebec762e73.png


5. 安装jupyter,远程登录

jupyter notebook是楼主认为比较好用的编程软件,重在轻量化,界面简单(楼主喜欢简洁) 安装问题不大,主要在于设置登录密码,修改配置文件

  • 安装jupyter和conda扩展

conda install jupyter nb_conda

  • 设置密码

# 终端进入pythonfrom notebook.auth import passwdpasswd()# 会让你设置密码,输入两次,之后得到密令,引号里面的就是

  • 生成jupyter配置文件,进入配置文件

jupyter notebook --generate-config --allow-root vim /root/.jupyter/jupyter_notebook_config.py

  • 找到以下代码,进行修改

c.NotebookApp.allow_root =True c.NotebookApp.ip = '*' c.NotebookApp.password = '密令'                                                      c.NotebookApp.port = 8888 c.NotebookApp.allow_remote_access = True

  • 打开jupyter

# 正常启动jupyter notebook --no-browser --port=8888 --ip=0.0.0.0 --allow-root # 后台启动(即使关闭ssh,jupyter也能一直运行)nohup jupyter notebook --no-browser --port=8888 --ip=0.0.0.0 --allow-root & ### 此处的8888端口号为容器的8888端口,在使用浏览器登录时需要使用本地映射端口,比如楼主的是20203。 ### 假如ssh的ip为10.10.10.1:22,登录IP为10.10.10.1:20203


最后,因为在建立容器时没有设置shm-size参数,所以在跑代码时报错:

RuntimeError: DataLoader worker (pid XXX) is killed by signal: Bus error

解决方法(手动更改shm大小):

  1. 使用服务器账号,进入服务器,sudo-i获取root权限,使用docker ps查找容器ID
  2. 使用locate查找包含容器ID的所有路径,找到一个类似/home/docker/containers/容器ID的目录
  3. 在该目录下进入hostconfig.json文件,修改shmsize,该处的shmsize单位为bit,1G=2^30
  4. 在修改文件前,需要停止容器:docker stop 容器ID
  5. 修改文件之后,开启容器,并重启ssh:docker start 容器ID,service ssh restart
  6. 如果在修改结束,重启容器后,发现配置文件又回到修改前,则需要在修改文件前关闭容器服务:service docker stop,在修改完后开启容器服务,service docker start。完成此操作的同时,仍需进行4,5操作
相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
目录
相关文章
|
25天前
|
监控 Java Linux
Linux系统之安装Ward服务器监控工具
【10月更文挑战第17天】Linux系统之安装Ward服务器监控工具
49 5
Linux系统之安装Ward服务器监控工具
|
1月前
|
网络安全 Docker 容器
VScode远程服务器之远程 远程容器 进行开发(五)
VScode远程服务器之远程 远程容器 进行开发(五)
27 1
|
1月前
|
人工智能 安全 大数据
ARM 服务器上安装 OpenEuler (欧拉)
openEuler 是华为于2019年开源的操作系统,支持多种处理器架构,包括X86和鲲鹏。截至2020年底,openEuler 拥有3万社区用户、2万多个拉取请求、2000多名贡献者和7032款软件。openEuler 提供高效、稳定、安全的系统,适用于数据库、大数据、云计算和人工智能等场景。本文介绍了在神州鲲泰 R522 服务器上安装 openEuler 的详细步骤,包括下载镜像、配置 RAID 和 BIOS 设置等。
184 0
ARM 服务器上安装 OpenEuler (欧拉)
|
1月前
|
Ubuntu TensorFlow 算法框架/工具
NVIDIA Triton系列05-安装服务器软件
本文介绍了NVIDIA Triton推理服务器的安装方法,涵盖源代码编译、可执行文件安装及Docker容器部署三种方式。重点讲解了在NVIDIA Jetson AGX Orin设备上的安装步骤,适合Ubuntu 18及以上系统。通过检查HTTP端口状态确认服务器运行正常,为后续客户端软件安装做准备。
42 0
NVIDIA Triton系列05-安装服务器软件
|
1月前
|
Ubuntu 安全 Linux
云服务器安装宝塔教程
云服务器安装宝塔教程
|
28天前
|
前端开发 Docker 容器
主机host服务器和Docker容器之间的文件互传方法汇总
Docker 成为前端工具,可实现跨设备兼容。本文介绍主机与 Docker 容器/镜像间文件传输的三种方法:1. 构建镜像时使用 `COPY` 或 `ADD` 指令;2. 启动容器时使用 `-v` 挂载卷;3. 运行时使用 `docker cp` 命令。每种方法适用于不同场景,如静态文件打包、开发时文件同步及临时文件传输。注意权限问题、容器停止后的文件传输及性能影响。
119 0
|
30天前
|
弹性计算 应用服务中间件 网络安全
ECS服务器使用:SSL证书安装、配置和问题定位指南
本文简要介绍了SSL证书的生成与部署方法,包括使用OpenSSL生成自签名证书和从CA获取证书的步骤,以及在Apache和Nginx服务器上的配置方法。此外,还提供了测试证书是否生效的方法和常见问题的解决策略,帮助确保证书正确安装并解决调试过程中可能遇到的问题。
136 0
|
1月前
|
域名解析 安全 网络安全
阿里云服务器WordPress环境上安装SSL证书
阿里云服务器WordPress环境上安装SSL证书
|
1月前
|
Ubuntu Linux Windows
Ubuntu 14.04安装samba服务器
Ubuntu 14.04安装samba服务器
23 0
|
5天前
|
机器学习/深度学习 人工智能 弹性计算
什么是阿里云GPU云服务器?GPU服务器优势、使用和租赁费用整理
阿里云GPU云服务器提供强大的GPU算力,适用于深度学习、科学计算、图形可视化和视频处理等多种场景。作为亚太领先的云服务提供商,阿里云的GPU云服务器具备灵活的资源配置、高安全性和易用性,支持多种计费模式,帮助企业高效应对计算密集型任务。