云平台网络——应用部署(一)

(可有可无的)引言

昨天完成了对学校集群的相关鉴权以后,大致理解了如何使用SSH登入教学集群,今天则是在此基础上进一步完成相关应用的部署,包括但不限于conda以及torch等和机器学习建模相关的软件安装,由于是第一次成功在云计算平台上尝试跑通Jupyter的工作空间,比较兴奋(赶快端上来罢),所以本篇文章仅作为开通一次任务的教程,更进一步的计算容量、机时上限、核心使用上限等细节还没有试验出来,留待进一步的NN建模时再予以验证。

队列工作模式介绍

同想象中开了个号就能随便浪不同,实际的集群使用场景下,需要对每个特定的计算任务分配合适的“核心数”、“工作时长”,也就是说在这种模式下,所有的软件配套都是围绕这一个任务进行的,你拿到的系统和可视化界面里基本是一片空白,除了你被作为一个用户账户(文件夹名是学号)设置在主机目录(hostname)下,这个文件夹之下的所有文件可以在SSH的命令行里产生,但是导入的模块在任务运行(RUNNING)及结束(ENDED)的意义下都是即设即销的。

举一个具体的例子,我们想要对一个61万行的数据训练一个LSTM模型,那么整个工作流程如下。

第一步:

开VPN,ssh连接HPC上的帐号,密码及口令鉴权;

第二步:

在终端命令窗口(连接了HPC帐号的窗口),“ module avail ”查询可拉取的科学计算模块(毕竟集群不单单用于AI方向,还有生信、工程设计啥的),一般直接进行如下操作:

# 查询集群下提供的可用conda版本
[xxx@jx2-login01 ~]$module avail conda
# 在本账户环境下装载该版本的conda
[xxx@jx2-login01 ~]$module load conda

之后为了确定conda安装成功可以直接运行“ conda --version ”或“ which conda ”命令查看,这里的conda默认都是anaconda而非miniconda,当然如果想换也是完全没问题的,相关的命令如下,不过本人为了省事没尝试:

# 获得最新的miniconda安装包;
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
# 安装到自己的HOME目录下software/miniconda3中,这个目录在安装前不能存在;
sh Miniconda3-latest-Linux-x86_64.sh -b -p ${HOME}/software/miniconda3
# 安装成功后删除安装包
rm -f Miniconda3-latest-Linux-x86_64.sh
# 将环境变量写入~/.bashrc文件中;
echo "export PATH=${HOME}/software/miniconda3/bin:\$PATH" >> ~/.bashrc
# 退出重新登录或者执行以下命令
source ~/.bashrc
conda --version

第三步:

有了conda以后先查询虚拟环境,如果没有就创建,如果有就进去蹭蹭,具体涉及以下的一些指令:

# 常规查询conda虚拟环境
conda info -e
# 创建虚拟环境,-n选项意味着“指定虚拟环境”,后接自定义的环境名
conda create -n LittleBoki

可以设置很多不同名字的虚拟环境用以隔离不同的项目,装载不同的包和库(packages),可以使用不同的python版本(尽管都是些直观且老生常谈的内容,不过之前对编程和计算机还没那么熟悉的时候理解这些概念还是费劲的,现在好很多咯吼吼~);

第四步:

进入特定的conda虚拟环境,安装需要的包,这里即可以直接命令行终端运行,也可以将相应的安装命令(bash命令)写成.sh文件形式保存到自己随便整出来的文件夹里:

# 在特定文件夹生成一个叫做“install_python_packages”的.sh文件
touch ./specific_file/install_python_packages.sh
# 使用vim对该.sh的空文件进行编辑,这样就会进入vim的编辑“插入”模式
cd specific_file
vim install_python_packages.sh

这种文件夹不会随着某次计算任务的结束(ENDED)而消失,其内的文件只要没销户也会一直保留,对.sh文件内容进行编辑/写则可以通过vim直接操作完成:

#!/bin/bash
pip install pandas torch statsmodels tqdm matplotlib sklearn scipy

值得一提的是HPC平台预装了vim,反倒是个人主机上一般得自己“ sudo apt install vim ”,vim的一些快捷键操作方式也有跟以前的windows快捷键操作习惯想冲突的地方,比如 ctrl + s 在vim里面是锁定,还需要 ctrl + q 才能解锁(这对不熟悉vim的人士多少带点逆天,微软你坏事做尽!),其他一些常规的vim命令行操作暂时就只需要记忆好 “ 写完文件内容 ” + “ Esc ” + “ : ” + “wq”(保存并退出) 的组合拳就好,其他内容以后现用现学即可;

第五步:

进入文档提供的scow可视化平台,由于文档中给的是mac的使用例,linux下看见的东西不完全一样,当然也有可能是后来人对这个交互页面做了些调整,反正只需要在相关栏目“创建应用”即可,初始时可以选定一些配置(计算或图形节点选择、Qos、MaxWall、MaxJobsPU、MaxTRESPA等),之后在ssh命令行中随时可以修改设置,这一步选用“ Jupyter ”就可以了,之后如果前面的几步不出错且配置没有超过管理员那边的要求,就会分配资源(状态: QUEUED),然后大概半分钟内就会分配好资源(状态: RUNNING),接下来就可以愉快地玩耍了,如果有错或者目前有其他优先级高的任务,那么就有可能触发 QUEUED / PENDING / ENDED 幸福三选一,如果看着不顺心也能命令行取消作业(作业号需要去可视化界面的作业栏目中查);

# 取消作业ID为123的作业
scancel 123

注:“图形节点”是指在计算集群中专门用于图形处理和可视化的节点或服务器,在教学二号上是没有滴,已经通过python torch.cuda.is_available()、nvidia -smi、nvcc --version三个方式予以充分的验证(悲),鼠鼠我啊,也只能选取“计算节点”(CPU核:终端命令 nproc )来搞搞训练了捏。

第六步:

如果是正在运行(状态: RUNNING)的“ Jupyter ”应用,刷新(10s一次自动刷新)完,首先在ssh命令行终端运行如下的激活指令:

# 激活虚拟环境,这里的例子是已经创建好的“LittleBoki”环境
source activate LittleBoki
# 也可以使用这个命令
conda activate LittleBoki
# 顺便给个“退出虚拟环境”的命令,以前用过,现在忘差不多了
deactivate LittleBoki

直接连接就可以进到普通的Jupyter Notebook交互空间中,然后就能开始 训练模型/摆烂/搞事/消耗计算资源 了,数据能上传能下载,可谓是大大的舒服。

SSH命令行、vim、bash

成功登入集群以后,在个人的云账户中,可以使用“ mkdir xxx ”创建相应的文件夹,基本可以走以下的疗程,这和前面讲的部分内容重合:

# 随便创建一个文件夹,好放乱七八糟东西
mkdir ikunBAD
# 如果嫌名字起得不好,可以修改文件夹名,该文件夹目录下的文件(如果有的话)不会被改变
mv ikunBAD ikunBEST
# 进入这个文件夹生成一些关键的可运行文件,比如.sh或.py文件,用vim进行内容编辑
cd ikunBEST
touch ikun_test.sh
vim ...
touch ikun_test.py
vim ...

接下重点要去介绍一些关于bash,sbatch的命令,.bashrc文件以及.sh文件的一些细节知识,知识点总体来说会比较细碎,想到哪写到哪。

.bashrc文件 / source命令

参考来源:ChatGPT

source ~/.bashrc

source ~/.bashrc是一个命令,用于在当前Shell会话中重新加载用户的.bashrc文件。

解释如下:

  • source: 这是一个Shell命令,用于在当前Shell环境中执行指定的脚本文件,并将其中的命令应用于当前Shell会话。
  • ~/.bashrc: 这是要执行的脚本文件的路径。~表示用户的主目录,/.bashrc表示用户主目录下的.bashrc文件。

当您运行source ~/.bashrc命令时,Bash会重新读取并执行.bashrc文件中的命令,以更新当前Shell会话中的配置和设置。这样,您可以在不关闭终端的情况下立即应用对.bashrc文件所做的更改,而无需重新登录系统。

常见的更改.bashrc文件后需要运行source ~/.bashrc的情况包括添加新的别名、环境变量、函数定义或自定义命令等。通过运行该命令,您可以使更改生效并立即在当前Shell会话中使用。

首先在命令行也有查看隐藏文件的方法,等效于Ubuntu图形界面的 ctrl + h ,命令行使用“ ls -a ”即可;另外,使用vim进入本机(不是HPC的虚拟机)的.bashrc中进行读写的效果如下:

可谓是花花绿绿,好不热闹,但是重点在于对“.bashrc”文件和“source”命令的介绍。

参考来源:ChatGPT

.bashrc是一个针对Bash(Bourne Again SHell)的配置文件,它位于用户的主目录下(通常是/home/username/.bashrc)。它是一个用于存储用户自定义的Bash配置和设置的文件。

.bashrc文件的作用如下:

  1. 环境变量设置:通过在.bashrc文件中定义PATHLD_LIBRARY_PATH等环境变量,可以指定系统在执行命令时搜索可执行文件和共享库的路径。
  2. 别名和函数定义:可以在.bashrc文件中创建自定义别名(例如,将alias ll='ls -alF'定义为ll的别名)和函数,以简化命令的输入和操作。
  3. 提示符设置:通过修改PS1环境变量的值,可以自定义终端提示符的外观和内容。
  4. 自定义命令和行为:可以在.bashrc文件中添加自定义的Shell命令和行为,例如设置终端启动时执行的命令、定义Shell函数和脚本等。
  5. 导入其他配置文件:在.bashrc文件中可以使用source命令或.命令来导入其他的配置文件,以进一步定制和扩展Bash的功能。

每当用户打开一个新的终端窗口或登录到系统时,Bash会自动读取并执行用户的.bashrc文件,以应用其中的配置和设置。这样,用户可以通过编辑.bashrc文件来个性化和定制他们的Shell环境。

source命令:会读取指定的脚本文件,并在当前Shell环境中执行其中的命令,这意味着脚本中的变量、函数、别名和环境变量等都将在当前Shell中生效;使用source命令的一种常见用途是加载或激活虚拟环境,在某些虚拟环境中,为了在当前Shell中正确设置相关的环境变量和路径,需要运行相应的脚本(例如Anaconda虚拟环境)。

然后介绍一下这个命令,涉及环境变量编辑的:

# 将环境变量写入~/.bashrc文件中;
echo "export PATH=${HOME}/software/miniconda3/bin:\$PATH" >> ~/.bashrc

参考来源:ChatGPT

这个命令是将一条指令附加到用户的.bashrc文件中。解释如下:

  • echo: 这是一个用于在终端输出内容的命令,效果如下:

  • "export PATH=${HOME}/software/miniconda3/bin:\$PATH": 这是要输出的内容。它是一个环境变量设置的命令,用于将${HOME}/software/miniconda3/bin目录添加到当前用户的PATH环境变量中。
  • ${HOME}表示用户的主目录;
  • $PATH表示当前PATH环境变量的值;
  • >>~/.bashrc: 这是将输出内容追加到用户的.bashrc文件的命令。>>符号表示追加操作,~/.bashrc表示用户主目录下的.bashrc文件。

综合起来,这个命令的作用是将一条设置环境变量的命令追加到用户的.bashrc文件中。这样,每次用户登录时,该环境变量设置命令都会被执行,将${HOME}/software/miniconda3/bin目录添加到PATH环境变量中,以便可以在终端中直接运行Miniconda安装的命令和程序。

.sh文件 / sbatch命令

SBATCH(Slurm Batch)是一个用于在高性能计算(HPC)集群上提交和管理作业的作业调度系统。它提供了一种标准化的方法来提交作业、分配计算资源、管理任务并监控作业的执行,SBATCH系统的主要目的是管理集群中的计算资源,以确保作业在可用资源上高效地运行。

登录后,编写作业脚本,并通过sbatch命令将作业提交到“计算节点”上执行。假设我们的计算过程为:在计算节点上运行hostname指令,那么就可以这么编写作业脚本:

#!/bin/bash
#SBATCH -o job.%j.out
#SBATCH --partition=C032M0128G
#SBATCH -J myFirstJob
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=1hostname

假设上面作业脚本的文件名为job.sh,通过在终端以此命令提交:“ sbatch job.sh ”。在该“.sh”文件的注释行“!/bin/bash”方面有一个细节需要予以阐释,具体内容如下,不过在.bashrc文件中就用不着这个注释了,毕竟在优先级上可以认为是.bashrc文件定义了shell命令的行为。

参考文章:「关于#!/bin/bash-CSDN博客」

#!/bin/bash 是一个比较特殊的注释行,根据ChatGPT老师的回答,即便写入这个注释的文件被放置在了~/bin以外的路径中,这一行还是得写上,因为它的作用在于“确保脚本能够在bash解释器下执行”,因此无论脚本文件(i.e. “.sh”文件)是储存在新路径下还是默认路径中,该注释行都是必须的,且需要放在第一行的位置上。


大前天做完latex简历模板,结果前天文件系统突然无法打开,着实吓到了,以为硬件、磁盘啥的出问题了,后来发现cd还是能进文件夹,命令行运行文件也没问题,排查过后发现是nautilus自己的问题,换Thanos(图标帅啊)搞定,不由感叹“操统真神奇~”

成文的今天,基本上可以在几个平台上(LCPU/openbayes/PKUHPC)创建能用的Jupyter工作站环境了,心情变得放松了不少,虽然目前暑期的下家还没着落,但是沉浸在新技术和(promising)算力海洋中的快乐也基本让我忘记了还得焦虑一下这个事儿(捂脸)。

苹果在北京时间6月6日发布的新产品 Vision Pro 效果实在惊艳,它的生态现在有点吸引我了,未来如何值得期待,也希望我能早点对那个领域进行探索,游戏和娱乐的新范式也许就藏身其间...至于目前这不上不下的日子,先凑合过着吧hhh

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/22593.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用小学数学带你感受人工智能的魅力

AI因你而升温,记得加个星标哦! 大家好,我是泰哥。在ChatGPT火爆出圈后,越来越多的人对人工智能、深度学习、神经网络等名词更加好奇,身边的朋友最近也频繁的问我,AI究竟为什么如此强大? 偷个懒&…

精选| 2023年1月R新包推荐(第72期)

译:黄小伟,目前就职于杭州有赞 知乎专栏:中国R语言社区 |30,000关注、300万阅读 2023年1月,165个R包收录于CRAN,环比增长42.4%,本月Top 40 R包分为14个类别,详细介绍如下&#xff1a…

我用Echarts图表分析巴西队历年战绩,预测卡塔尔世界杯能否夺冠

🐱 个人主页:不叫猫先生 🙋‍♂️ 作者简介:前端领域新星创作者、阿里云专家博主,专注于前端各领域技术,共同学习共同进步,一起加油呀! 💫系列专栏:vue3从入门…

陶哲轩甩出调教GPT-4聊天记录,点击领取大佬的研究助理!

Datawhale干货 方向:GPT-4高级调教,来源:量子位 鹅妹子嘤,天才数学家陶哲轩搞数学研究,已经离不开普通人手里的“数学菜鸡”GPT了! 就在他最新解决的一个数学难题下面,陶哲轩明确指出自己“使用…

ESP8266还可以这样玩

作者:晓宇,排版:晓宇 微信公众号:芯片之家(ID:chiphome-dy) 01 巨型ESP8266 ESP8266几乎无人不知,无人不晓了吧,相当一部分朋友接触物联网都是从ESP8266开始的&#xff…

笑死!推特限流,微博赢麻了;使用ChatGPT撰写简历;SD电脑配置推荐;斯坦福67门AI课程学习路径 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🤖 因 Twitter 限流,大量海外画师涌入微博哈哈哈哈 7月3日,马斯克突然发推宣布用户浏览数量限制,新账…

想要成为 NLP 领域的大牛?从 ChatGPT 的 5 大自然语言模型开始了解吧(LM、Transformer、GPT、RLHF、LLM)——小白也能看得懂

目录 前言ChatGPT基础科普——知其一点所以然1. LM2. Transformer3. GPT4. RLHF5. LLM 参考资料其它资料下载 前言 如果想在自然语言处理(Natural Language Processing,NLP)领域内脱颖而出,那么你一定不能错过 ChatGPT 的 5 大自然…

浏览器工作原理和实践

1.介绍 见正文3 2.应用背景 参透了浏览器的工作原理,可解决80%的前端难题. 帮助高效快速安全开发web前端项目. 3.学习 课程目录 开篇词 (1讲) 开篇词 | 参透了浏览器的工作原理,你就能解决80%的前端难题 宏观视角下的浏览器 (6讲) 01 | Chrome架构…

SpringBoot自动配置的模版引擎

文章目录 目录 一、Thymeleaf 1.什么是Thymeleaf? 2.什么是模版引擎? 3.JAVA中的SPI(Service Provider interface)机制? 4.META-INF目录是干嘛用的? 总结 前言 一、Thymeleaf 1.什么是Thymeleaf? hymeleaf是试用于Web和独立环境的现代服务器端Java模版引擎 目的:…

chatgpt赋能Python-python_lirc

Python-LIRC:让Python与遥控器无缝连接 介绍 Python-LIRC是一个Python语言的模块,它提供了一种接口,用于与Linux Infrared Remote Control(LIRC)系统进行通信。有了Python-LIRC,你可以轻松地将红外线遥控…

重磅!牛客笔试客户端可防ChatGPT作弊

上线俩月,月活过亿。 爆火的ChatGPT能代写文,撕代码,善玩梗,秒答题,几乎“无所不能”,争议也随之而来。 调查显示,截至2023年1月,美国89%的大学生利用ChatGPT应付作业,53…

学生用ChatGPT拿下全班最高分,教授惊呆

【导读】ChatGPT爆火两个月,整个教育系统都被颠覆了。学生用得不亦乐乎,而老师们迫不得已,纷纷打响了ChatGPT反击战。 ChatGPT已经让大学老师们受到惊吓了。 摸出门道的学生们,开始使用ChatGPT生成论文,得到了A的分数…

自然语言处理(NLP)之跳字(元)模型<skip-gram>与连续词袋模型<continuous bag of words>

自然语言处理(Natural Language Processing, NLP)是AI里的一个非常重要的领域,比如现在很火爆的ChatGPT,首先就需要很好的理解输入内容的意思才能够做出合理的回复。 自然语言处理应用非常广泛,比如机器翻译、问题回答、文本语义对比、语音识…

DeepMind:用 GNN 学习通用推理算法

文 | 智商掉了一地 小孩子才做选择,我的模型全!都!要! 近年来,基于深度神经网络的机器学习系统取得了巨大进步,尤其是在以感知为主的任务上。这一领域表现突出的模型通常要在分布中进行泛化,意味…

GPT-4发布:人工智能新高度,以图生文技术震撼,短时间内挤爆OpenAI模型付费系统

“GPT-4,起飞!”今日凌晨1点,OpenAI正式推出史上最强大的GPT-4文本生成AI系统 GPT-4:人工智能的新里程碑 你可能已经听说过GPT-3,它是一种能够生成自然语言文本的强大模型,可以用来回答问题、写文章、编程…

从BERT到ChatGPT,9大研究机构全面综述:「预训练基础模型」

来自:新智元 编辑:LRS 【导读】2023年了,还有人从头开始训模型吗?追踪一下从Bert以来的那些预训练模型。 ChatGPT在few-shot和zero-shot场景下展现出的惊人性能,让研究人员们更坚定「预训练」是一条正确的路线。 预训练…

【AI项目实战】某语言模型-stable diffusion-vits-cqhttp 实现能对话能语音能绘画的Q群机器人

好久没写文章了,终于想起来我有个博客账号系列。。 项目已开源在github上。 文章已滤敏,一切涉及语言模型名字的内容都以某语言模型代替 提示:AI绘画部分建议6G显存以上。 cqhttp 用于接收群友消息,并回复消息。 某语言模型 基于…

微信PC端各个数据库文件结构与功能简述 - 根目录

异想之旅:本人原创博客完全手敲,绝对非搬运,全网不可能有重复;本人无团队,仅为技术爱好者进行分享,所有内容不牵扯广告。本人所有文章仅在CSDN、掘金和个人博客(一定是异想之旅域名)…

springboot+vue集成websocket实现聊天功能

1、添加pom依赖 <!-- websocket --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dependency> 2、创建一个config文件夹&#xff0c;在config文件夹中创建…

广州租房房价分析

利用八爪鱼爬链家网上广州市租房房源数据&#xff0c;网址为https://gz.lianjia.com/zufang/&#xff0c;爬取字段为价格、租赁方式、房型、楼层、面积、朝向、地铁、小区、位置、经度、纬度等&#xff0c;保存到E盘数据分析课程设计文件夹下&#xff0c;存为“gz_zufang.csv”…