← 工具与方法

港科广二期HPC使用

Jiangshan He · 工具与方法 · 阅读与实践记录

优先浏览港科广HPC用户手册

目录

  • 0.新手配置
    • 0.1 Linux指令
    • 0.2 Anaconda 安装
  • 1.使用资源
    • 1.1 推荐使用方式:作业提交
    • 1.2 分配(可交互式)资源
    • 1.3快速调试
    • 1.4 Vscode+Easyconnect校外连接
  • 附录:(我遇到的)常见问题

0.新手配置

0.1 Linux指令

参考科广教程——常见linux指令

0.2 Anaconda安装

Anaconda是管理Python环境的工具。 安装流程参考csdn博客

wget https://repo.anaconda.com/archive/Anaconda3-2025.06-1-Linux-x86_64.sh
chmod +x Anaconda3-2025.06-1-Linux-x86_64.sh 
./Anaconda3-2025.06-1-Linux-x86_64.sh 

source ~/.bashrc

#创建环境
conda create -n env_name python=x.x 
# 删除环境
conda remove -n env_name --all
# 激活环境 
conda activate env_name 
# 退出环境
conda deactivate

1.使用资源

1.1 推荐使用方式:作业提交

  • sbatch能够让大家按队列动态地使用资源,避免资源占用和浪费。
  • 参考港科广作业提交与管理
  • 以下为参考模版script.sh,运行指令是sbatch script.sh。使用指令squeue -u username即可看所有作业的运行情况。
#!/bin/bash
#SBATCH -p i64m1tga800u       # 指定GPU队列
#SBATCH -o output_%j.txt  # 指定作业标准输出文件,%j为作业号
#SBATCH -e err_%j.txt    # 指定作业标准错误输出文件
#SBATCH -n 8            # 指定CPU总核心数
#SBATCH --gres=gpu:1    # 指定GPU卡数
#SBATCH -D /apps       # 指定作业执行路径为/apps
 
# --- 作业执行的命令 ---

echo "Job started at $(date)"
#激活conda环境
conda activate init
conda activate swift

python run.py

echo "Job ended at $(date)"

1.2分配(可交互式)资源

  • 使用之前最后使用screen和tmux等指令开启可恢复窗口,避免电脑断点无法连接。(screen教程博客和tmux科广教程)
  • 申请GPU使用指令salloc -p xx -n 4 --gres=gpu:1。xx是对应资源(GPU/CPU)分网站](https://hpc.hkust-gz.edu.cn/docs/hpc12/slurm/queue)
    • 随后可以使用srun python xx.py直接运行
    • 或者使用srun --pty bash调出计算节点的终端,之后可以正常使用nvidia-smi和python xx.py
    • 常用的分区指令是salloc -p i64m1tga800ue -n 4 --gres=gpu:1
  • [!] 适合需要利用GPU展示交互效果的程序,如果是普通的程序建议使用作业提交。
  • [!] GPU占用率不满20%超过3个小时会警告,9个小时会停。停三回这个月就不能用。每个月超过十个作业被停就会冻结HPC。推荐估计一下程序运行时间。
  • [!] 注意如果是先salloc 再srun --pty bash,退出时候第一次使用exit 是退出srun但是GPU还是在占用,要再次使用exit取消任务才算彻底释放

1.3 快速调试

srun -p debug -n 4 --gres=gpu:1 --time=00:30:00 --pty bash

  • debug分区有8卡40G,每个人最多使用30min,适合快速调试,同时分配等待时间很短。

1.4 Vscode+Easyconnect校外连接

  • HKUST(GZ) Easyconnect安装使用手册
  • 如果遇到报错WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!,可能是因为不同的网络路径 + 服务器密钥本身会更新。
    • 可以在终端使用指令ssh-keygen -R hpc2login.hpc.hkust-gz.edu.cn来彻底清除关于这个服务器的所有旧密钥记录。重新连接,选择continue就可以输入密码了。
    • 开启Easyconnect后仍然无法通过Vscode连接HPC,报错:`could not resolve hostname
      • 考虑将系统的DNS设置为自动,同时关闭网络的IPv6服务。
      • Mac的设置在WIFI-详细信息-代理-自动配置代理打开,同时WIFI-详细信息-TCP/IP-配置IPv6-从自动改为仅本地链接(这一步会关闭网络的IPv6服务,可能原因是easyconnect不支持IPv6)。之后在终端使用sudo killall -HUP mDNSResponder清空一下代理缓存再尝试。

        附录:(我遇到的)常见问题

        出现找不到slrum指令

        修改环境变量export PATH=$PATH:/opt/slurm/bin

  • 想用开机自启使用vim ~/.bashrc修改启动设置,将export PATH=$PATH:/opt/slurm/bin添加到最后一行

    nvcc –version 没有找到这个指令

    /usr/local也没有对应的CUDAx.x的文件夹,是因为HPC(High-Performance Computing)/服务器通常使用“模块(module)”来管理软件环境。

  • 运行命令 module avail,看看列表里有没有类似 cuda 或 cudatoolkit 的条目。
  • 从上面的列表里选择一个版本进行加载。例如,加载 12.1 版本:module load cuda/12.1
  • 取消load是使用module unload xx

卡死

squeue -u <username> 找到自己的job id ,然后使用scancel <jobid>直接中断作业

  • 目前遇到卡死的情况,是在运行module avail之后使用ctrl+C。

持续监测GPU使用情况

正常的多终端应该使用:watch -n 1 nvidia-smi 在slurm系统可用sgview -j <作业号> 相当于使用一次

缺乏ffmpeg,不一定要从module加载

也可以使用conda install -c conda-forge ffmpeg在环境下安装,同样可以使用。

修改transformer找缓存的路径

export TRANSFORMERS_CACHE=/hpc2hdd/home/$user_name$/.cache/huggingface/hub

下载数据集文件

一般是使用wget 网址下载文件,如果下载速度太慢,考虑以下:

  • 找国内镜像源
  • 先下载到本地,后使用filezilla软件上传到服务器。这种软件可以看到上传进度并使用多线程,我觉得应该会比VScode传递快。