浪潮计算平台之AI方向——AI_Station开发环境的使用总结
概览:

1. 开发环境
使用默认的设置,不改挂载路径:





可以看到在容器内对挂载的目录进行文件操作是可以真实记录到实际的文件目录内的。

对挂载路径的另一种设置:
不使用默认的设置,手动更改挂载路径:






在用户文件目录和组共享目录中可以看到容器内对其进行的操作:


挂载到容器里的文件目录都是可以在容器里面进行文件操作的,这时的操作会实时的体现在用户的文件管理上。比如我们将default_group文件目录挂载在容器上,新建两个目录aaa和bbb, 都是可以的,而我们在web管理界面上是没有权限对 default_group文件目录进行操作的。

如下,可以发现成功对 default_groupt文件目录进行操作。

可以说在设置容器的时候选择的挂载目录是可以在容器里面对其内的文件进行完全操作的,我们可以远程上传或下载文件、代码、数据集等到挂载文件中,这样我们在容器里面也是可以完全进行操作的,这样方便我们在计算的时候使用一些平台上没有原生给出的资源。
在对容器进行设置的时候我们可以看到有一个选项是数据集路径,数据路径可以指定为文件管理目录下的一个目录,但是这里不推荐指定用户的文件目录,这里就是 /xxxxxx , 该路径默认是挂载到容器里面的,如果再将该路径作为数据集目录挂载到容器里面容易产生错误,因此在设置数据集路径时候选择不是用户文件目录的路径。如下,将默认挂载的/xxxxxx路径同时设置为数据集目录则显示报错,提示缓存数据拉取错误。

注:平台给出挂载目录的目的就是为了提供一个路径使容器和外界文件能够得到交互,是一个双向的过程,而数据集路径的设置是一个单方向的设置,其目的就是多个用户可以共享一些共同使用的文件,这样可以减少磁盘空间的浪费和数据多次重复上传的问题,这里面就要求这个数据集路径的内容是只读的,每个用户对容器设置数据集路径后只是从平台管理数据的磁盘上复制这个路径的内容到计算磁盘上,可以说容器里面看到的数据集路径里面的内容是原文件的影子,我们对其总任何更改也不会影响到原始数据。
挂载目录和数据集目录示意图:


如:将存储磁盘上的 /default_group作为数据集路径挂载容器a上,并在容器a上做修改,建立文件 /default_group/x , /default_group/xx , /default_group/xxx 。在存储磁盘上建立目录 /default_group/aaa , /default_group/bbb ,将 /default_group/aaa 作为容器b的数据集,将/default_group/bbb 作为容器c的数据集,此时在容器b上建立目录 /default_group/aaa/x, /default_group/aaa/xx, /default_group/aaa/xxx ,此时在容器c上建立目录 /default_group/bbb/1, /default_group/aaa/2, /default_group/aaa/3 。然后在容器d上建立数据集路径 若为 /default_group 那么容器d的/default_group 和容器a是同一文件,如果建立容器d的时候没有选择更新,那么容器d上/default_goup下也是x,xx,xxx文件,如果选择更新那么容器a和容器d的/default_group目录下内容会和存储磁盘目录下保持一致,也就是/default_group/aaa , /default_group/bbb ,并且aaa和bbb下面是空的。
1.1 运算中断问题:
开发环境下有Jupter和Shell两种模式,其中Jupter下分为:Notebook、Control和Terminal。
Notebook适合开发和最终展示,Termianl适合做运算,Shell适合做文件操作。
1.1.1 Shell终端下:
开发环境下运行的代码只要用户退出(包括网络突然中断)就会自动终止。

注意:只要网络不中断和用户不退出(页面不能刷新和退出)的情况下运算是不会中断的,这一点和SSH登录远程主机进行运算一样。
1.1.2 Jupyter下的Terminal:
Jupyter下的Terminal不会因为网络中断或者用户退出而导致运算中断。



1.1.3 Jupyter下的Notebook 和 Control :
可以看到Notebook和Control的当前目录都是容器所挂载的目录,即根目录下的和账户名相同的目录,这里是 “ /xxxxxx ” 。


这里有一点需要注意:Notebook和Control在网络断开或用户退出时,正在运行运算的计算也将被中断,同时Control不会保存开发的记录,而Notebook回保存开发的记录:


Control:


开发环境是为开发设计的,不过由于这个中断问题所以更适合做测试,开发环境下唯一可以不被外界原因中断的只有Teminal ,因此Teminal下适合做最终运算,但是Teminal下不能尽量历史输入的查询因此不是很适合做文件操作。Notebook能够保存开发记录并能做到图片展示等可视化功能,开发使用OK,但是由于会被外界中断所以不适合做最终的运算操作。Shell下面更适合做数据文件操作,如文件的创建、重命名、删除等功能,由于不能进行图片展示,不能保存开发记录,能够被外界中断,因此不适合开发和运算,更适合做数据文件操作。
1.2运行效率对比:
第一组(非科学计算类,效率影响主要为CPU和内存性能):
运行代码:(https://gitee.com/devilmaycry812839668/cliff_walking)(设置实验次数1000)

个人电脑运行(4.8G主频,i7-10700k CPU单核心, 2666频率内存)平均时间为511.5秒。
AI_Station平台(单核心CPU)平均运行时间为558.8秒。
平台与个人电脑的运算效率比可以到达91.5%。(对于大型计算平台来讲效率已经非常高了)
第二组(科学计算类,效率影响主要为CPU(浮点型矢量计算)和内存性能):

个人电脑运行(4.8G主频,i7-10700k CPU 物理核心为8并开启超线程, 2666频率内存)运行时间为488.77秒。
AI_Station平台(16核心CPU)平均运行时间为881.11秒。
平台与个人电脑的运算效率比可以到达55.47%。
考虑可能有内存IO的影响,于是测试内存性能(空间申请测试):
大数据块:

个人主机时间:110.66秒。
平台运行时间:151.96秒。
平台与个人电脑的运算效率比可以到达72.82%。
小数据块:

个人主机时间:80.38秒。
平台运行时间:80.09秒。
平台与个人电脑的运算效率比可以到达 100.36%。
使用空间内存较小的对象进行科学计算:

个人主机时间:35.66秒。
平台运行时间:80.17秒。
平台与个人电脑的运算效率比可以到达 44.48%。
1.3 使用ftp工具上传文件:


1.4 使用SSH工具远程登入容器:

可以看到我们能够成功的登入到磁盘存储主机(管理主机)上,这时我们进入的是物理主机。

可以看到 我们的用户文件目录在物理机上实际为 /home/inspurfs/user-fs/xxxxxx, 同时应该也存在另一个账户为xxx 。虽然我们可以登录到管理主机的物理实体上,都是由于我们的账户权限太低并没有什么可以操作的权限,除了在自己的用户文件路径下增删改一些文件。
我们现在有两个容器在运行:


这两个容器的IP并不是校园网IP,而是私有IP, 那我们能否通过已经登入的管理主机跳转进容器系统内呢?
使用ifconfig命令查看网络配置,在众多网卡中发现有一个网卡配置IP为14.14.14.100,这说明容器所运行在的主机(计算节点)正是这台磁盘存储主机(也是管理主机)。

Ping一下:

发现此时网络包没有经过一跳路由的损失直接到达目的地,即64跳,说明容器其实运行在这个物理主机的同网段主机上,说明此时我们可以在这台主机上通过ssh跳转到正在这台主机运行的容器里面,并且本主机物理网卡IP正好是14.14.14.100,这说明容器的IP或者说入口就是这个物理主机上。发现可以成功登入到两个容器系统里面:


并且两个容器也是可以相互跳转到的:

1.5 计算节点的物理配置:
登录物理主机:

可以发现物理主机上的内存总量为321G,现已用21G。

可以看到物理实体主机上CPU核心数为30个核心,这里应该是实体物理CPU数不为一的原因,查看CPU信息又显示有96个CPU:

查看主机的域名解析:

可以看到该实体主机IP为14.14.14.100,同时它还连接五个GPU主机分别为gpu01,02,03,04,05 ,IP为14.14.14.1, 14.14.14.2,14.14.14.3,14.14.14.4,14.14.14.5。
也就是说这里的AI_station其实是有五台实体电脑的,一个管理电脑负责内外的文件传输和数据存储功能,其它的五台GPU主机是提供GPU计算服务的。
通过网络ping和IP设置知道物理本主机和五个GPU主机是同网段互联的:

注:虽然登录docker的IP正好是提供存储服务和管理的主机,但是有可能docker是个集群,这台电脑只是负责调度和一部分计算服务的,docker是否是运行在这台主机上还不能下决定。
在docker内申请300G内存:

Docker监控:

14.14.14.100物理主机内存:

可以看到物理主机14.14.14.100上内存使用只有21GB,也就是说docker所申请的物理内存并不是在这个物理主机上,而是课程有集群在其他主机上申请的。
如果我们在这个物理主机上申请大量内存,此时该物理主机内存情况:


直接对物理主机进行内存申请测试:

个人主机(4.8G主频,i7-10700k CPU 单核心, 2666频率内存)运行时间:78.09秒。
14.14.14.100物理主机运行时间:393.39秒。
Docker容器内运行时间:94.59秒。
可以容易的看到不论管理节点(14.14.14.100,物理实体主机)还是docker系统在CPU和内存方面的效率都不是很高,慢的情况下是个人主机的50%性能,快的话也就是80%到90%多,但是这个计算平台的总资源很高,如果进行支持集群计算的话可以获得较高加速比,当然这需要你本身任务支持集群计算,还有你还得会做这样的code改写,平台总资源:

但是如果你的任务不支持集群计算或者你本身不会改写code和使用平台那么只使用平台上的单机CPU计算性能确实不及个人主机。当然这还和平台的CPU配置有关,这里的平台使用的是性价比较高的服务器CPU至强系列,Intel Xeon Platinum 8168拥有至强二十四核心48线程。

一般服务器平台会有两个CPU实体,那么一个实体CPU有24个物理核心按照超线程的方式会显示为48核心,两个物理CPU实体就是显示为96核心,正好符合:

2. 训练管理
注意事项:1.提交的代码中不要有中文字符,因为docker镜像中很可能没有设置UTF-8字符集。

2.提交的python代码中主文件不要有#!/usr/bin/python或#!/usr/bin/env python
这样的外部解释器路径的指定,因为镜像系统中很有可能没有这个路径,即时有也很可能你没有权限调用,于是就会报错。如下:

在设置训练管理时需要注意选择启动文件时最好重新手动指定一下,不然通过历史访问有可能选择的是缓存中的文件,如果这个路径文件被修改过就会报错无法预知的错误。

使用训练管理时相当于把计算任务托管给平台,这时如果是长时间运行的任务你不必一直守着web端,都是也有不好的地方,那就是你不像开发环境选项那样可以在容器里面进行设置,托管给系统的环境是默认的镜像,没有一点的改变,如果你的镜像中没有设置UTF-8,如果再开发环境中你可以手动的设置一下,但在这种托管的训练管理中是无法手动设置的。

保存的运行结果:


浪潮计算平台之AI方向——AI_Station开发环境的使用总结的更多相关文章
- Eclipse平台下配置Go语言开发环境(Win7)
<Go语言编程>中写到:“从功能和易用性等方面考虑, Eclipse+GoEclipse.LiteIDE这两个环境在所有IDE里面是表现最好的”,所以笔者打算采用Eclipse+GoEcl ...
- windows平台CodeBlocks MinGW C++11开发环境搭建
前言: 本文是以单独下载codeblock编辑器跟MinGW编译器这种方式进行安装,下载带MinGW编译器的codeblocks版本安装配置方式跟这个类似. 一: 下载并安装MinGW 这个参考我写的 ...
- Windows平台cocos2d-x 3.0 android开发环境
cocos2d-x升级到3.0后变化不小,除了API的变化(主要是函数和类名称变化,以及使用了C++11的不少特性.function/bind, lamda, std::thread-),创建和编译p ...
- 兔起鹘落全端涵盖,Go lang1.18入门精炼教程,由白丁入鸿儒,全平台(Sublime 4)Go lang开发环境搭建EP00
Go lang,为并发而生的静态语言,源于C语言又不拘泥于性能,高效却不流于古板,Python灵活,略输性能,Java严谨,稍逊风骚.君不见各大厂牌均纷纷使用Go lang对自己的高并发业务进行重构, ...
- Python科学计算(二)windows下开发环境搭建(当用pip安装出现Unable to find vcvarsall.bat)
用于科学计算Python语言真的是amazing! 方法一:直接安装集成好的软件 刚开始使用numpy.scipy这些模块的时候,图个方便直接使用了一个叫做Enthought的软件.Enthought ...
- Andriod学习笔记3:Mac 平台下搭建 CLion 集成开发环境
1. 安装Xcode 通过App store或者下载安装Xcode. 安装完成之后,最好启动一下Xcode,否则可能会报"Error:The C compiler "/usr/bi ...
- 配置linux平台下基于vim的开发环境
一.vim的基本配置 1.配置文件的位置在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效.而在每个用户的主目录($HOME)下,都可以自己建立私有的 ...
- 在Windows平台搭建轻巧的Python开发环境——面向工程和科研的扩展包配置
首先,下载最新版本的Python. 为什么强调最新版本呢,因为新版本的漏洞通常会少得多,而且反映了未来的趋势. 既然要学,何不起点高一点? 官方下载地址:https://www.python.org/ ...
- cocos2d-x 2.1.4学习笔记01:windows平台搭建cocos2d-x开发环境
cocos2d-x的大致开发流程是,首先使用win32版进行代码编写并完成游戏,然后将代码迁移到对应的开发环境上进行交叉编译完成游戏打包,如iphone上是mac+xcode,android是ecli ...
- 「C语言」在Windows平台搭建C语言开发环境的多种方式
新接触C语言,如何在Windows下进行C语言开发环境的搭建值得思考并整理. 以下多种开发方式择一即可(DEV C++无须环境准备). 注:本文知识来源于 Windows 平台搭建C语言集成开发环境 ...
随机推荐
- java怎样把两个list里边相同的数据取出
1 import java.util.ArrayList; 2 import java.util.List; 3 4 public class I { 5 6 public static void m ...
- Diffusers实战
Smiling & Weeping ---- 一生拥有自由和爱,是我全部的野心 1. 环境准备 %pip install diffusers from huggingface_hub impo ...
- Asp.net core Swashbuckle Swagger 的常用配置
背景 .net core Swashbuckle Swagger 官方文档:https://github.com/domaindrivendev/Swashbuckle.AspNetCore 我们发现 ...
- 【BUG记录】Cause: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x90\xA6' for column 'name' at row 1
大家好呀,我是summo,这次的文章标题是一个Mysql数据库的SQL错误,遇到的同学自然懂,没遇到的同学希望你永远也不要遇到. 一.错误说明 Cause: java.sql.SQLException ...
- AT24C02、04、08、16 操作说明
我们这里介绍一下常见的EEPROM,ATMEL的AT24x系列中的AT24C02,学会了这个芯片,其他系列的芯片也是类似的. AT24C02的存储容量为2K bit,内容分成32页,每页8Byte ( ...
- Java模拟高并发测试
线程类,设置有一个公共资源 package cn.org.chris.concurrent; import java.util.concurrent.locks.Lock; import java.u ...
- “国产双系统”出炉,RK3568J非对称AMP:Linux+RTOS/裸机
"非对称AMP"双系统是什么 AMP(Asymmetric Multi-Processing),即非对称多处理架构."非对称AMP"双系统是指多个核心相对独立运 ...
- 【价格全面下调】一片含税79元,双核A7@1.2GHz,-40℃~85℃真工业级!
自9个月前,创龙科技全志T113-i核心板(SOM-TLT113)推出之后,受到广大工业用户的高度关注,且超过300家企业已选用创龙科技T113-i核心板用于终端产品开发. 为了让更多用户轻松选择T1 ...
- C语言的简单学习
C语言是编译型语言,先编译再运行,通常用gcc进行编译,于是安装了Ubuntu操作系统.至于编辑器,VS Code也能用,先sudo apt install build-essential gdb,再 ...
- React Router 6
路由的概念,可以想像一下路由器,当来了一个请求时,路由器做了什么事情?它会把请求的IP地址和路由表进行匹配,匹配成功后,进行转发,直到目标主机.可以看到路由有三部分组成,一个是请求,一个是路由表,一个 ...