用超级计算机(超算)跑模型代码指南

本文详细介绍了如何在Linux系统上安装Tabby远程终端,配置SSH访问,以及在超算环境中安装Anaconda、创建虚拟环境和使用相关LINUX指令。重点包括Anaconda的安装步骤、虚拟环境管理和超算平台的特定操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有问题请在评论区留言。文章通俗易懂是我的风格

1、安装步骤

Tabby安装与打开的方法在此网页。这个程序是一个远程终端,你可以远程操作超级计算机。超级计算机就是很多个计算机组成的集群,老师给了我一个账号,其实就是给我分配了一台电脑,这个电脑的系统是linux的系统,远程操作电脑只能通过Linux命令行来操作。

本人安装tabby的步骤如下(当然还有其他的工具,不过这个已经非常好用了):

一个更现代的终端——Tabby_tabby设置中文-CSDN博客文章浏览阅读8.8k次。Tabby(以前称为Terminus)是一个高度可配置的终端仿真器、SSH 和串行客户端,适用于 Windows、macOS 和 Linux集成 SSH 和 Telnet 客户端和连接管理器集成串口终端主题和配色方案完全可配置的快捷键和多和弦快捷键拆分窗格记住你的标签PowerShell(和 PS Core)、WSL、Git-Bash、Cygwin、MSYS2、Cmder 和 CMD 支持通过 Zmodem 从/向 SSH 会话直接传输文件完整的 Unicode 支持,包括双角字符不会因_tabby设置中文https://blog.csdn.net/weixin_45965432/article/details/124090313

安装后就是登录账号,创建自己的配置。

2、使用

安装后登陆账号打开自己的配置,其实就相当于你输入了超算电脑的密码,你才就可以使用超算,用tabby远程到超算的命令行窗口,就是一个Linux操作系统的命令行界面(CLI)的输出指令界面,所有操作用linux指令进行(因为超算是linux系统的)。

然后安装anaconda。配置虚拟环境。运行项目。其他小细节介绍如下。不懂的请在评论区留言。

1、首先安装Anaconda
下载的网址:https://repo.anaconda.com/archive,找到自己对应要下载的版本,比如Anaconda3-2020.11-Linux-x86_64.sh,于是下载

下载命令:wget -c https://repo.anaconda.com/archive/Anaconda3-2020.11-Linux-x86_64.sh

下载完后的安装命令: sh Anaconda3-2020.11-Linux-x86_64.sh

之后输入yes和一大段空格的后会弹出一个让你输入路径的地方,需要时改目录,更换默认安装位置

之后等待安装结束即可。

安装完了,你刷新一下,就出现(base)环境了。或者使用 conda activate 命令让conda激活

命令行窗口就是可以conda管控的了,就相当于原来的命令行窗口多了conda的功能,你可以用conda。有基础环境了。然后创建虚拟环境,在虚拟环境里面装包,运行项目

 创建虚拟环境:

创建虚拟环境在虚拟环境可以把超算上自己的python环境和超算平台默认的python环境隔离开,避免冲突,同时也方便运行模型的代码。(创建虚拟环境的步骤和window下是一样的)

创建命令:conda create -n your_env_name python=3.6

创建python版本为3.6、名字为your_env_name的虚拟环境。your_env_name文件可以在Anaconda安装目录envs文件下找到。版本号和虚拟环境的名字自己可以更改。或者不安装python,之后再安装python

conda activate your_env_name(虚拟环境名称) 激活虚拟环境

conda deactivate 关闭虚拟环境

超算平台安装Anaconda和Tensorflow_超算安装anaconda-CSDN博客

在.bashrc文件里面加入全局变量可以快速激活虚拟环境。就是用你自己设置的环境变量代替激活虚拟环境的命令。这样我在命令行输入my_tf就可以直接激活我的环境(这一步没必要)

alias my_tf='conda activate your_env_name'

 换源前记得更新一下.bashrc文件,因为按照anaconda的时候会写入环境变量,更新后才能调用conda(这一步没必要)

安装完后可换源:(换源后使用pip下载模块默认使用清华源,下载会快很多)

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
 
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
 
conda config --set show_channel_urls yes

安装完可以输入python看看默认的版本有没有发生变化。 之后的操作就是跑你的代码了,将本地的文件传到超算运行,超算的文件传到本地。——看我关于深度学习conda常用指令那篇文章。

然后就是下载深度学习需要的工具了。因为有了镜像源,下载会快一些。还不能用pip,因为我没安pip。所以接下来就是安装pytorch、cuda啥的、然后其他的你需要用到的包

要将超级计算机(超算)到本地文件复制上,您可以使用以下方法

你点开右上角SFIP就知道了

Tabby 使用指南:一个高度可配置的现代化终端模拟器 - 知乎 (zhihu.com)

如果您的本地系统是 Windows,而远程超算机是 Linux 系统,您可以使用以下方法将本地文件复制到远程超算机:

3、常用的你需要用到的LINUX指令

不知道的命令就GPT搜索比较快,但是可能会错,还是CSDN靠谱

sinfo//这是 Linux 或类 Unix 操作系统的命令行界面(CLI)的输出,用户正在执行命令 "sinfo"。"sinfo" 是 Slurm(Simple Linux Utility for Resource Management)集群管理工具的一个命令,用于显示有关集群当前状态的信息。

lscpu  //查看电脑运算能力

sudo lshw -C display  //lshw命令可用于获取系统硬件的详细信息,包括显卡。

lspci | grep -i vga   //lspci命令用于显示PCI总线设备信息,包括显卡。可以通过筛选"VGA"相关的信息来查看显卡的详细信息。

ll   //是 ls -l 的简写形式,它用于在Linux命令行界面(CLI)中显示当前目录中的文件和子目录的详细信息列表。比ls要详细

wget -c https://repo.anaconda.com/archive/Anaconda3-2023.03-1-Windows-x86_64.exe

//下载网页文件

sh 文件名   //安装文件

salloc -p gpu_128G -N 1 -w gpu4 //分配GPU

ssh gpu4//分配GPU

yppasswd //修改密码

1.ls:列出当前目录中的文件和子目录。

示例:ls - 显示当前目录中的文件和文件夹列表。

2.cd:更改当前工作目录。

示例:cd /home/user/Documents - 切换到 "/home/user/Documents" 目录。

3.pwd:显示当前工作目录的完整路径。

示例:pwd - 显示当前所在的目录路径。

4.cp:复制文件和目录。

示例:cp file1.txt file2.txt - 将 "file1.txt" 复制为 "file2.txt"。

5.mv:移动文件和目录,或重命名文件和目录。

示例:mv file.txt newfile.txt - 将 "file.txt" 重命名为 "newfile.txt"。

6.rm:删除文件和目录。

示例:rm file.txt - 删除名为 "file.txt" 的文件。

7.mkdir:创建目录(文件夹)。

示例:mkdir myfolder - 创建名为 "myfolder" 的文件夹。

8.rmdir:删除空目录。

示例:rmdir myfolder - 删除名为 "myfolder" 的空文件夹。

9.touch:创建空文件或更新文件的时间戳。

示例:touch file.txt - 创建名为 "file.txt" 的空文件。

10.cat:显示文件的内容。

示例:cat file.txt - 显示名为 "file.txt" 的文件的内容。

11.grep:在文件中搜索匹配的文本。

示例:grep "keyword" file.txt - 在 "file.txt" 中搜索包含 "keyword" 的行。

12.chmod:修改文件或目录的权限。

示例:chmod 755 file.txt - 将 "file.txt" 文件的权限设置为 rwxr-xr-x。

13.chown:更改文件或目录的所有者。

示例:chown user file.txt - 将 "file.txt" 的所有者更改为 "user"。

14.man:查看命令的帮助手册。

示例:man ls - 查看 "ls" 命令的帮助文档。

1 基本指令(在登录地址上操作):

# 登入: 
ssh xxx
# 登出: 
exit
 
# 拷贝本地文件到远程服务器:(别登远程服务器!)
scp -r /Users/mengdanfan/PycharmProjects/cc2vec 1901110655@wm1-data.pku.edu.cn:~/
# 拷贝远程服务器文件到本地: 
scp -r 1901110655@wm1-data.pku.edu.cn:/gpfs/share/home/1901110655/snapshot/2021-06-28_20-29-08 ./
 
# 查看作业:
squeue -u 学号
 
# 查看分区:
sinfo
 
# 查看输出结果:
cat xxx.out
 
# module查看命令(查看有哪些环境):
module avali
 
# load conda 环境命令:
module load anaconda/3.7.1
 
# 提交作业:
sbatch ***.sh

2 环境配置(在传输地址上操作)

# 加载基本环境
module load anaconda/3.7.1
 
# 安装虚拟环境
conda create -n FMDpython python=3.7
source activate FMDpython
 
# 在虚拟环境下加载模块
module load cudnn/9.0-v7.6
module load cuda/11.1
 
备注:还需要 在虚拟环境里安装 自己代码所需的安装包。 每次不用重新安装包,只需要加载虚拟环境即可。但是主机环境每次都会被重置。
 
# 查看所有的虚拟环境
conda info --envs
 
# 查看虚拟环境中安装了哪些python包
pip list

3 提交作业的脚本(在登录地址上操作)

#!/bin/bash
#SBATCH -o job.FMD1.%j.out
#SBATCH -p GPU
#SBATCH --qos=normal
#SBATCH -J FMD1
#SBATCH --get-user-env
#SBATCH --mail-type=FAIL
#SBATCH --mail-user=fanmengdan@pku.edu.cn
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=8
#SBATCH --gres=gpu:1
 
 
python /gpfs/share/home/1901110655/cc2vec/bfp/bfp_PNExtended.py
 
备注:代码中所有路径必须是绝对路径,pwd查看当前绝对路径。且每一轮的输出要到程序运行结束才会一次性输出到.out文件中。

3. 调用Anaconda模块
module load anaconda/2021.05
4. 创建Python3.7的虚拟环境(不是必须。不需要的话可以使用默认安装的环境)
conda create -n my_name python=3.7 # my_name 是虚拟环境名字
5. 虚拟环境下安装CUDA11.6+Pytorch1.12.1
sources activate my_name # 如果创建了虚拟环境,先激活虚拟环境。没创建则跳过
pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu116
# 安装成功,但通过print(torch.cuda.is_available())返回False,主要是未向云服务器请求分配GPU的原因
# 则需要申请GPU分配后才可以使用GPU
GPU分配申请:

1、salloc   --gpus=1    抢占一个计算节点
2、squeue    查看节点名,最后一列
3、ssh   gxxx   登录计算节点
此时,配置Pytorch环境完成!
.sh 文件的配置模板如下:(编辑器,编辑脚本中第三行,将xxx改为实际用conda创建的虚拟环境名,最后一行python命令后xxx.py修改为自己的代码文件或完整命令即可)

#!/bin/bash
module load anaconda/2021.05
source activate xxx 
export PYTHONUNBUFFERED=1
python xxx.py

        

<think>好的,我现在需要解决用户在SCNET超级计算机上运行Python代码时遇到的'killed'问题。首先,我得理解用户的问题背景。根据用户提供的引用内容,这个问题通常是由于内存不足导致的,特别是在处理大数据或者递归操作时。比如引用[4]提到Linux下Python进程被OOM Killer终止,因为内存不够,虚拟内存和常驻内存使用过高。 接下来,我需要整理可能的解决步骤。首先应该确认是否确实是内存问题。用户可以使用dmesg命令查看系统日志,看看是否有OOM Killer的记录,如引用[4]中的例子。这一步很重要,因为如果是内存不足,优化内存使用才是根本。 然后,考虑内存优化的方法。比如检查代码中是否有内存泄漏,或者是否有不必要的变量长期占用内存。引用[2]和[3]提到在处理大量数据时分批处理可能有效,用户可以将大数据分成小块处理,及时释放不再使用的变量。例如,使用生成器而不是列表,或者在循环内部及时清理内存。 另外,调整超算平台的资源配置也很重要。用户可能需要申请更多内存或使用分布式计算,如引用[1]中提到的换机器。同时,设置内存限制参数,比如使用resource模块限制Python进程的内存使用,避免被系统强制终止。 还有代码层面的优化,比如使用更高效的数据结构,避免深度递归(改用迭代),或者利用多进程处理任务,分散内存压力。例如,引用[1]中的YOLOPX可能在内存管理上更优,值得参考。 最后,用户需要结合具体代码进行分析,使用内存分析工具如memory_profiler,定位高内存消耗的部分,并针对性优化。如果问题依然存在,可能需要联系超算平台的技术支持,确认是否有其他限制或配置问题。 总结下来,解决步骤是:确认内存问题→优化代码内存使用→调整资源配置→代码重构→必要时的技术支持。需要一步步排查和验证,确保每个措施有效。</think>### 分步解决方案:解决Python程序在SCNET超算平台被终止(Killed)的问题 #### 1. **确认问题根源** - **检查系统日志** 使用命令 `dmesg | grep -i "killed"` 或 `journalctl -k --since "1 hour ago"`,查看是否触发OOM Killer(内存溢出终止机制)。 若出现类似 `Out of memory: Killed process [PID] (python)` 的记录,说明内存不足是主因[^4]。 - **监控内存使用** 在代码中插入内存监控模块,例如: ```python import psutil def print_memory(): process = psutil.Process() print(f"Memory used: {process.memory_info().rss / 1024**2:.2f} MB") ``` #### 2. **优化内存使用** - **分批次处理数据** 若处理大规模数据(如解析465个网页),避免一次性加载全部数据。改用逐行读取或分块处理[^3]: ```python chunk_size = 100 # 分块大小 for i in range(0, len(data), chunk_size): process_chunk(data[i:i+chunk_size]) del process_chunk # 及时释放内存 gc.collect() # 主动触发垃圾回收 ``` - **使用生成器替代列表** 对于循环中的迭代操作,使用生成器(`yield`)减少内存占用: ```python def read_large_file(filename): with open(filename) as f: for line in f: yield line.strip() ``` - **避免全局变量和冗余拷贝** 优先使用局部变量,及时删除不再需要的大对象: ```python def process_data(): temp_data = load_huge_data() # 大对象 # 处理数据 del temp_data # 处理完成后立即删除 ``` #### 3. **调整超算平台资源配置** - **申请更大内存节点** 在提交作业时指定更高的内存需求(具体参数取决于超算调度系统),例如使用SLURM调度器时: ```bash #SBATCH --mem=16G # 申请16GB内存 ``` - **启用内存限制** 在Python中设置内存软限制,避免进程突然被终止: ```python import resource resource.setrlimit(resource.RLIMIT_AS, (8 * 1024**3, 16 * 1024**3)) # 限制8GB~16GB ``` #### 4. **代码级优化** - **替换高内存消耗的数据结构** 例如使用稀疏矩阵(`scipy.sparse`)替代密集矩阵,或使用`numpy`数组替代Python原生列表。 - **避免递归深度过大** 若代码包含递归调用(如示例中的快速排序),改用迭代实现: ```python def quick_sort_iterative(arr): stack = [(0, len(arr)-1)] while stack: low, high = stack.pop() # 迭代实现分区操作 ``` - **使用多进程并行处理** 将任务拆分到多个进程,分散内存压力(需注意进程间通信开销): ```python from multiprocessing import Pool with Pool(4) as p: # 4个进程 results = p.map(process_data, chunked_data) ``` #### 5. **进一步排查工具** - **使用内存分析工具** 通过 `memory_profiler` 定位内存泄漏点: ```python pip install memory_profiler ``` 在代码中添加装饰器: ```python @profile def memory_intensive_function(): # 目标函数 ``` 运行 `python -m memory_profiler script.py` 生成详细报告。 - **联系超算平台技术支持** 若上述方法无效,可能存在平台配置限制(如用户内存配额),需提交工单并提供错误日志。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值