Post

Internal Servers Tutorial

Internal Servers Tutorial

在外网登录内网服务器的方式

固定 IP 服务器

  • 南京服务器:146.56.207.178,该服务器用以支持国内服务器跳转
  • 该 IP: 146.56.207.178,支持直接登录到旧神马

ASIPP 内网服务器通用登录方式

  1. 生成 ed25519 key 对,给公钥发给 chgwan
  2. 添加下列语句到 ~/.ssh/config 末尾,对于 Windows 用户也有类似的文件,请自行搜索。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
     Host PublicJump1
         HostName 146.56.207.178
         Port 40000
         User publicuser
     Host PublicJump2
         HostName 127.0.0.1
         Port 60002
         User publicuser
         ProxyJump PublicJump1 
    
  3. 登录到 ASIPP 内网服务器 ssh -J PublicJump2 <username>@<ip> -p port

登录海外服务器

  • 不同服务器不同方式不同,具体服务器见下文

ssh key pair 的基本用法

  1. 在 HOME 目录运行,ssh-keygen -t ed25519 -C "<email_addr>"
  2. 所有设备的 key pair 设置成一致的。即通过复制已生成的 private and public keys 的方法,将不同设备的 key pair 设置成相同的,这样可以避免每个不同设备都需要专门设置一遍 key,技术细节可以自行搜索。
  3. 在非生成 key pair 对的设备上,通过复制粘贴设置 key pair 的时候,在Linux系统下需要设置 ~/.ssh~/.ssh/<private_key> 的权限分别为 700 和 600,Windows 则可以直接复制粘贴。

USTC 瀚海

使用入门

参考瀚海 22 使用手册

登录方式

  1. 在 ASIPP 的时候,可以直连。
  2. 岛外连接, 在 .ssh/config 中添加下列代码,随后执行 ssh HanHai
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
     Host PublicJump1
         HostName 146.56.207.178
         Port 40000
         User publicuser
     Host HanHai
         HostName 211.86.151.113
         # HostName 211.86.151.115
         User chgwan
         ProxyJump PublicJump1
    

Slurm 的使用提交

1
2
# the below submit
sbatch --job-name=ert-dist --gres=gpu:8 -n64 -N1 slurm_sub.sh --script=<script-path> --config=<config_path>

其中,slurm_sub.sh 为提交模板,可以自行查看或修改,本模板仅提供 pytorch 环境支持,其他问题请自行解决。

gpu:8 -n64 修改为 gpu:1 -n8 即为调试模式

一些有用命令

sinfo 查看所有队列状态

scontrol show node 查看节点信息

sacctmgr show | grep qos 查看任务优先级,是否能很快被执行

其他事项

  • 瀚海的存储是收费的,所以建议及时清理不用的文件,特别是训练完毕之后无用的模型文件
  • 不允许在登录节点运行大代码
  • 不允许直接 ssh 到计算节点进行计算,必须通过slurm登录

海外特别服务器,计算资源充足

服务器简介

  1. NSCC:sg超算中心服务器,由很多A100的计算节点,每个A100 40GB内存,可以通过不同脚本实现不同数量的A100调用,每个节点节点最多4个A100
  2. sgGPU NTU H200 和 A100 服务器,4*H200 + 4*A100,每个A100 80GB内存,H200 140GB内存

开通和登录

  1. 生成 ed2519 key 对,给公钥发给 chgwan,开通后可直接登录
  2. 给下列内容,写在自己的 .ssh/config 配置文件的末尾,如果还是无法登录,可以修改配置文件,使其直接指定 private_key 的位置。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
     Host PublicJump1
         HostName 146.56.207.178
         Port 40000
         User publicuser
    
     Host PublicJump2
         HostName 127.0.0.1
         Port 50000
         User publicuser
    
     Host sgGPU
         HostName 127.0.0.1
         Port 60001
         User chenguang.wan
         ProxyJump PublicJump2 
    
     Host NSCC
         HostName aspire2antu.nscc.sg
         Port 22
         User chenguan
         ProxyJump sgGPU
    
  3. NSCC 登录: ssh sgGPU
  4. sgGPU 登录: ssh NSCC

sgGPU使用方法 H100 卡

  1. 创建个人文件夹,不要修改 ~/.bashrc,ss
  2. 使用方法类似于135,108,DCU等自有服务器。唯一的区别是 userhome 目录有 quota 限制,所以除代码和配置文件外的所有数据都需要存储于 userhome/DATABASE 文件夹而不能直接放在 home 的根目录。
  3. 该服务器可以用vscode
  4. 通过该服务器可以访问三个不同的服务器:
    1. 直接登录完毕便是 H100 服务器
    2. 登录到 A100 见下文 A100 80GB (Sg), 该服务器与本服务器为直接连接,共享所有的数据访问
    3. NSCC 该服务器与本服务器数据不共享。

注意事项

  1. 在直接登录的服务器 H100 最好不要用超过 2 个卡,因为这个也是一堆人用。
  2. 在 slurm 管理的 A100 使用无任何限制,可以用全部的 4 个卡。

A100 80GB (Sg) 基于 Slurm 的提交方式,可认为类似于瀚海

  1. Sample PBS scripts are available at /usr/local/templates/. Copy any script to your directory and modify as needed.
  2. List submission scripts: ls -l /usr/local/templates/*.pbs
  3. Copy a sample script: cp /usr/local/templates/lammps.pbs .
  4. Submit a job: qsub matlab.pbs
  5. Check job status: qstat
  6. View your jobs: qstat -u $USER
  7. View job details: qstat -f JobID
  8. Kill a job: qdel JobID
  9. Check available nodes: pbsnodes -aSj
  10. Launch interactive mode: qsub -I -l select=1:ncpus=8:mpiprocs=8 -l walltime=04:00:00 -P cradle -q qcradle

NSCC 基于 Torque 资源管理, A100 卡

  1. 使用的 Torque 资源管理器的,类似于老神马
  2. 可以用 qsub_I 或者 qsub_I 2 实现代码的交互式运行,唯一需要注意的是,如果退出 Terminal 则代码自动终止运行。所以这种方式非常适合于调试代码。
  3. 由于 NSCC 的设置无法使用基于 ray 的自动调优,所以修改至基于 optuna 的调优,具体使用方法见 $HOME/Papers/WestD0/v2/run_model_dist.py 中的 tune 操作。其他操作请同样参见该脚本。
  4. 提交脚本例子位置 $HOME/templates, 其中 gpu 支持的时间为 walltime 为 02,24 和 120h,即 02:00:00, 24:00:00, 120:00:00,单节点最多支持 4 个 gpu,目前使用的是 A100 * 4, 内存为 40GB 和常用的 80GB 不同,使用的时候要考虑是否会超内存
  5. 其他个性化的提交脚本操作见 torque 使用和 https://help.nscc.sg/

NSCC注意事项

  1. userhome 目录有 quota 限制,所以除代码和配置文件外的所有数据都需要存储于 userhome/DATABASE 文件夹而不能直接放在 home 的根目录。
  2. 不建议使用 userhome/DATABASE 文件夹存储代码,因为这个文件夹属于数据文件夹,读取速度有限,所以代码应该存在 home 目录,该文件夹用以保存数据,可以创建一个个人数据文件夹给所有数据都放在该文件夹,然后通过符号链接的方式实现不同的项目数据均保存于该处。
  3. 总结来说:代码放 userhome/ 下自己的文件夹中,数据和模型等文件保存至 userhome/DATABASE 下自己的文件夹中
  4. 不允许在登录节点运行大代码,单次运行代码要≤2个cpu核。该服务器可以用vscode

ASIPP 服务器

189 和 161 服务器简介

账号名:cgwan, 登录请联系: chgwan,通过添加 public key 实现登录

161 单卡 A800,ip: 202.127.205.161: 长久支持,不支持数据映射,可以用来练手不建议大跑

189 双卡 A800,ip: 202.127.204.189:长久支持,已映射数据。

数据共享,共享账号

数据位置:$HOME/DATABASE,或者通过调用环境变量 “DATABASE_PATH” 来实现多个服务器的代码统一。

其他用法类似于 135 和 108,但是由于是共享账号,请大家使用的时候,不要一个人创建多个文件夹, 每个人都自己创建单独的文件夹,所有操作都在自己的文件夹内进行。除非必要一般不要修改 .bashrc 文件。

环境可以自己创建,也可以用共享环境 torch

新神马DCU使用教程

内部使用,不许分享

  • 官方链接:https://www.scnet.cn/help/docs/mainsite/ai/

  • chgwan 不提供除跑通 benchmark 代码外的其他任何支持,包括不限于 vscode 登录,是否支持免密等。这种东西请自行搜索 !!
  • 数据库位置: /data/share/chenguang_wan/DataBase, 只读权限

    常用命令

lscpu, rocm-smi, hy-smi, hy-smi --showpids

ssh <username>@202.127.205.70 -p 6021

具体 DCU 教程

  1. 联系刘晓娟老师,开通对应的DCU权限, 其中主要要给用户加入到 render 组和 chenguang_wan 组,之后才有调用 DCU 的权限。如果没有新神马账号,即可直接使用公共账号。
  2. 登录到新神马DCU 381/382
  3. 创建并激活 python 3.11 环境,例 conda create -n torch python==3.11,
  4. 安装 numpy 且其需小于2.0,即1.X 版本,目前是推荐1.26.x,可自行决定版本。
  5. cp -r /data/share/chenguang_wan/Backups/torch_2.4.1_dcu/* ~
  6. ssh shenmagpu38[1-3],其中 shenmagpu383 为最新的 dcu
  7. module use .modulefiles, ps:这个可以写到 .bashrc 中,这样可以不每次都打该命令
  8. module load mydtk/dtk-25.04.1
  9. cd dcu_whl, pip install *.whl :切换到 dcu_whl 文件夹中安装所有的 *.whl
  10. 测试torch是否能工作 python torch_benchmark.py

DCU flashAttn 支持,该方法由于 K100 阉割了部分特性,使得用起来效果不佳

安装方法

1
2
3
4
5
pip install triton
# install flashAttn
git clone git@github.com:Dao-AILab/flash-attention.git
cd flash-attention
FLASH_ATTENTION_TRITON_AMD_ENABLE="TRUE" python setup.py install

python 代码块测试

1
2
3
4
5
# using
import os
os.environ['FLASH_ATTENTION_TRITON_AMD_ENABLE']='TRUE'
os.environ['FLASH_ATTENTION_TRITON_AMD_AUTOTUNE']='TRUE' # comment out, if the code can not work
from flash_attn import flash_attn_qkvpacked_func, flash_attn_func # no warnings and errors

DCU 其他支持

  • 2025-09-20:DCU 安装的是基于 AMD,ROCm的技术方案,ROCm 版本为 6.3.25211, 目前大多数框架均支持 ROCm, 其中以 OpenAI, triton 为基础蓝本,可以在此技术基础上调试
  • AMD 模型加速: https://rocm.docs.amd.com/en/latest/how-to/rocm-for-ai/inference-optimization/model-acceleration-libraries.html
  • DCU 其他安装环境支持: https://cancon.hpccube.com:65024/4/main, 这个为曙光 DCU 的官方解决方案,目前已经支持了 flash-attn 等,如果缺少某些库,可以优先检索这个地方
  • 最后请大家多多尝试,如果非 DCU 版 PyTorch 官方 API 问题,一般均有对应的解决方案,不要一味等待,更不要武断的下结论。

DCU 网络环境 hacking 方案,请不要分享,该方法仅为了方便使用,官方不支持

执行下列命令,出现ip则为有网络,其他服务请自行搜索如何设置代理服务器。

1
2
3
4
# set internet access in dcu node. 
export http_proxy="socks5h://localhost:7070"
export https_proxy="socks5h://localhost:7070"
curl ifconfig.me

新神马小集群

  • 登录ip:202.127.205.186, port 5074
  • 目前由于网络问题没有解决,暂时只有 P100 * 4 可用

使用要求

  • 本地/home 目录不要超过20GB
  • 安装大程序的目录为 /data/没有就自己创建一个,包括不限于 conda 等,这也是本地盘,总计1.5T,所以每个人一般不要超过200GB
  • 超大数据,放在 /mnt/UsersData/ 没有就 自己创建一个,用以存放数据文件
  • 除非必要,否则的话不要重启。很多服务都挂在这个服务器上

TODOs

  • 数据访问
  • 外网直连

一些建议:

  • conda / mamba: Do not install anything into the base environment as this might break your installation
This post is licensed under CC BY 4.0 by the author.

Trending Tags