Skip to content

[toc]

23年5月规划

基于12张GPU,6颗CPU,以及100T硬盘,基于docker 配置深度学习开发环境。虚拟化17个**独立计算机Independent computer(IC),其中有15台**独立开发计算机Independent development computer(IDC),2台 独立训练计算机Independent training computer(ITC)

每台IDC 规划了3套工具:Winscp+Putty-SSH 终端、Jupyter工具、Jenkins 训练服务器任务管理工具,进行深度学习开发任务。

每台ITC 可以完整复制IDC 的环境,启动训练任务。

集群逻辑结构

image-20240131152717730

向ITC推送IDC环境进行深度学习训练原理

在这里插入图片描述

23年10月规划

每台ITC 增加两个独立端口用于TensorBoard 访问。

动画5

23年11月规划

新增规划 20个 Desktop VNC 端口桌面访问。

vnc

演示

Putty-SSH 终端演示动画

putty

Jupyter演示动画

image-20240131153708380

Jenkins演示动画

功能1:SSH 的Tunnle端口映射服务

功能2:向ITC推送IDC镜像,进行训练服务

功能3:统计IDC的资源占用情况,手动重启IDC等功能

功能4:IDC的自定义功能,例如启动深度学习评估,启动tensorboard面板,启动可视化渲染结果

功能5:启动仿真镜像

jenkins

补充说明

  • 内网镜像源 http://10.x.x.x:x
    deb http://10.x.x.x:xx/ubuntu/ bionic main restricted universe multiverse
    deb http://10.x.x.x:x/ubuntu/ bionic-security main restricted universe multiverse
    deb http://10.x.x.x:x/ubuntu/ bionic-updates main restricted universe multiverse
    deb http://10.x.x.x:x/ubuntu/ bionic-backports main restricted universe multiverse
    
  • 配置统一的pubkey(var/id_rsa.pub)。
  • slaver 节点的apt 源设置为 内网镜像服务器 。
  • slaver 节点安装miniconda(/root/miniconda3/bin/conda, py38_23.3.1),并设置源为 清华。
  • slaver 节点安装最新nvidia-470驱动(关闭自动更新)。
  • slaver 节点安装cuda11.4.4,训练资源 nvidia-smi。
  • slaver 节点未安装cudnn,自行在conda里面安装。
  • slaver 节点共享挂载NFS目录。
  • slaver节点的 修改DNS (未实施)
    sudo vi  /etc/resolv.conf                                                                                           
    nameserver 114.114.115.115    
    
  • slaver节点安装conda create –name openmmlab python=3.8 -y
  • slaver节点的conda openmmlab 环境安装 jupyter ,jupyter 工作目录为/var
    conda install -y jupyter
    jupyter notebook --generate-config
    
  • slaver节点的 pip
     ~/.pip/pip.conf
     [global]
    index-url = https://pypi.tuna.tsinghua.edu.cn/simple
    [install]
    trusted-host= pypi.tuna.tsinghua.edu.cn
    
  • slaver节点的conda openmmlab 环境的安装mmcv,测试mmdet 通过 (https://github.com/open-mmlab/mmdetection/blob/main/docs/zh_cn/get_started.md)

  • slaver节点配置了一个统一的初始化脚本。

echo "ssh starting"
service ssh start 

echo "starting jupyter..."
pid=`ps -ef|grep "jupyter-notebook --allow-root"| grep -v "grep"|awk '{print $2}'`

if [ "$pid" != "" ]
then
        echo "jupyter notebook already run, needn't to start again"
else
    echo "starting now..."
    conda activate openmmlab && nohup jupyter notebook --allow-root > jypyter.out 2>&1 &
    pid=`ps -ef|grep "jupyter-notebook --allow-root"| grep -v "grep"|awk '{print $2}'`
    echo ${pid} > pid.out
    echo "jupyter started at pid: "${pid}
fi