附录 A:使用 PKU 集群
本附录说明如何使用 PKU 集群(PKU Cluster)和北京大学高性能计算平台(High Performance Computing, HPC)运行课程 notebook 和预测实验。对于 TimeGPT 这类普通 API 调用和小规模示例,本地电脑通常足够 Garza et al., 2024;对于深度学习模型、长时间运行任务或 GPU 需求,集群会更合适。
我们还会强调另一类选择:本地个人 AI 算力设备。它们不替代集群,但补充了集群和云服务之间的空白。公开数据、大规模训练和多人共享任务仍适合放到集群;涉及病人、学生、企业经营或个人健康的敏感数据,或者需要反复快速试验的小模型,则可以优先考虑本地设备。选择运行环境时,不只看“有没有 GPU”,还要看数据能否外发、任务是否需要多人共享、模型文件是否能装入内存,以及结果是否需要长期复现。
学习目标¶
完成本附录后,你应该能够:
申请并登录 PKU 高性能计算平台账号。
使用 Web 界面创建 JupyterLab 交互式应用(interactive application)。
通过 SSH(Secure Shell)和 OTP(One-Time Password)登录集群。
在本地和集群之间传输文件。
在 Jupyter 所用 Python 环境中安装课程依赖。
账号申请¶
进入北京大学高性能计算平台页面:
https://hpc.pku.edu.cn按照“使用指南 - 账户申请”进入在线申请页面。我们建议申请教学系列的未名二号资源。申请完成后,记录你的用户名、登录入口和平台通知,不要把密码或动态验证码发给他人。
Web 登录与 JupyterLab¶
初学者优先使用 Web 界面。进入平台后,主要用两个功能:
Shell:打开服务器上的命令行。
交互式应用:创建 JupyterLab 等图形化应用。
创建 JupyterLab 应用时,可以从较小配置开始:
节点数:
1核心数:
2运行时间:
120分钟课程预留资源:按课程通知填写
reservation或其他调度参数
资源申请越大,等待时间可能越长。课程练习通常不需要一开始就申请大量 CPU、GPU 或长时间任务。先确认 notebook 能运行,再根据任务规模增加资源。
使用集群时不要把“资源越大越好”当成原则。核心数、节点数和运行时间都会影响排队和资源占用;课程练习应从小配置开始,确认 notebook、数据和 Python 环境都正确后再扩大。
我们建议的入门配置是单节点、2 个 CPU 核、120 分钟左右。这样足够完成多数入门 notebook,也不会过度占用教学节点。如果课程通知给出了专门的 reservation 字段,务必按原样填写;否则作业可能进入普通队列,等待时间会明显变长。
如果只是课程最后几十分钟做练习,可以把运行时间设成 30 或 60 分钟,减少排队和资源占用。进入 Jupyter 后如果发现没有网络、依赖装不上或 API 无法访问,先检查是否填写了课程 reservation;没有使用预留资源时,作业可能被分配到普通或无网络节点。平台临时不可用时,可以先在本地电脑跑同一个 notebook,但要记录使用的是哪个环境。
如果使用本地 AI 设备或实验室工作站,也要像使用集群一样记录环境:设备型号、可用内存、是否有 GPU、Python 路径、模型目录和关键包版本。很多新设备采用 CPU、GPU 和共享内存更紧密结合的架构,能缓解传统独立显卡显存不足的问题;但这不代表可以忽略环境记录。模型能否加载、推理速度多快、是否能并发使用,都和硬件与软件环境直接相关。
SSH 与 OTP¶
如果需要在终端中登录集群,需要先绑定手机动态令牌。可以使用 Microsoft Authenticator、Google Authenticator、FreeOTP 等 OTP 应用。绑定入口见平台文档:
https://hpc.pku.edu.cn/authotp/otp
https://hpc.pku.edu.cn/ug/guide/access/Windows 用户建议使用 Windows Terminal。macOS 和 Linux 用户可以直接使用系统 Terminal。SSH 命令形式如下:
ssh 你的学号@wmjx2-login.pku.edu.cn登录时终端输入密码通常不会显示字符,这是正常现象。输入完成后按回车,再根据提示输入 OTP 动态验证码。
第一次用 SSH 连接服务器时,终端可能会询问是否信任服务器指纹。确认地址来自学校平台文档后,可以输入 yes。注意,高性能计算平台的 OTP 或 verification code 可能和学校统一身份认证里的手机令牌不是同一套机制;如果密码、OTP 或账号状态不一致,需要按平台说明或联系助教处理。
还要区分登录节点和计算节点。SSH 直接连入时,通常先进入登录节点;登录节点适合查看文件、编辑脚本、提交作业,不适合直接运行重计算任务。通过 Web 界面创建 JupyterLab 交互应用时,平台会为你分配某个计算节点,在申请的时间内使用相应资源。理解这个区别,可以避免把大任务误跑在登录节点上,也能解释为什么 Web Jupyter 和 SSH 看到的环境有时不完全一样。
联网与安全¶
部分登录节点默认不联网,需要按学校平台说明开通网络。官方示例会包含账号、密码和网络命令。实际使用时要注意:
不要把真实密码写入 notebook、脚本、截图或 Git 提交。
不要在共享文档中保留包含密码的完整命令。
如果必须在终端输入密码,完成后不要复制到课程报告中。
优先使用平台 Web 功能或官方推荐方式完成联网。
联网成功后再安装依赖或下载公开数据。计算节点是否能联网取决于平台设置,不要假设所有节点都能直接访问外网。
还要区分密码、OTP 和 API key。集群登录需要账号密码和动态验证码,模型调用需要 API key,这些都不应该出现在 notebook 输出、截图、Git 提交或共享文档中。安全问题不是附加项,而是可复现实验的一部分。
文件上传与下载¶
图形化传输可以使用 FileZilla Client。配置时选择 SFTP(Secure File Transfer Protocol):
协议:
SFTP主机:按平台说明填写,例如数据节点地址
端口:
22登录类型:交互式
用户名:你的学号或平台账号
第一次通常输入门户密码,第二次输入 OTP 动态验证码。传输课程 notebook、数据文件和结果图时,注意不要上传含有密钥的 .env 文件或 notebook 输出。
如果熟悉命令行,也可以使用 scp 或 rsync。例如:
scp local_file.csv 你的学号@wmjx2-login.pku.edu.cn:~/forecasting/安装 Python 包¶
在 Jupyter 中先确认当前 notebook 使用的 Python:
import sys
sys.executable它会输出类似路径:
/nfs-share/software/anaconda/2020.02/bin/python在 Shell 中使用同一个 Python 安装包:
/nfs-share/software/anaconda/2020.02/bin/python -m pip install pandas这样安装的包才能被当前 Jupyter kernel(内核)找到。不要只输入 pip install ... 就假设安装到了正确环境。
记录运行环境也很重要。集群上的 Jupyter、Shell 和登录节点可能使用不同 Python;安装依赖前先看 sys.executable,运行实验后保留日志、输出图和评估表,才能让后续复查知道代码究竟在哪个环境中运行。
运行课程 notebook 的建议流程¶
登录平台并创建 JupyterLab 应用。
上传课程 notebook 和所需数据。
打开 notebook,确认 Python kernel。
运行环境检查单元,例如
import pandas、import numpy。安装缺失依赖。
从小样本开始运行预测代码。
保存输出图表和评估结果。
关闭不用的交互式应用,释放资源。
第一次使用时,可以先运行一个最小检查:
3 + 4
import sys
sys.executable如果这两步成功,再安装课程包或运行预测示例。不要一开始就直接跑完整深度学习任务;先确认服务器环境、路径和包安装位置都正确。
运行 Transformer 练习时,也应从最小 PyTorch 检查开始。先确认当前 kernel 能执行 import torch,再查看 torch.cuda.is_available() 和可见 GPU 数量。小型时间序列示例可以先在 CPU 上跑通;如果要增加序列数量、窗口长度、d_model、注意力头数或训练轮数,再申请 GPU 资源。这样可以避免把环境错误、路径错误和模型调参问题混在一起。
运行本地 Chronos-2 练习时,还要先确认模型文件位置。Chronos 类模型依赖本地 checkpoint、配置文件和推理环境,因此路径和依赖管理会直接影响能否复现实验 Ansari et al., 2024。示例模型通常以压缩包形式提供,解压后目录中应能看到 config.json 和 model.safetensors 等文件。notebook 里填写的是模型目录,而不是压缩包路径。Windows 用户可以把模型解压到当前用户目录或课程目录下;macOS 和 Linux 用户也应放在自己有读权限、路径不含奇怪空格的位置。
本地模型练习的排错顺序可以更具体:
先确认 notebook 使用的 Python 路径。
再确认
import pandas,import matplotlib,import torch能通过。检查模型目录是否存在
config.json和权重文件。先用一小段数据或少量序列测试 pipeline(推理流水线)。
再扩大到 M4 小时级数据或销售需求数据。
如果 Parquet 文件读取失败,可以切换到课程提供的 CSV 文件;如果 NumPy、PyTorch 或 Chronos 相关包版本冲突,先记录错误信息,再在当前 kernel 对应的 Python 中卸载并安装兼容版本。不要在多个终端和多个 kernel 之间反复安装,否则很容易出现“终端显示安装成功,但 notebook 仍然导入失败”的情况。
提交 notebook 时,如果直接导出 PDF 失败,可以先保存为 HTML,再用浏览器打开 HTML 并打印成 PDF。提交前检查输出图是否包含历史值、真实值、预测值和预测区间;如果作业要求比较协变量版本,也要保留两组图和简短解释。
常见问题¶
如果 Jupyter 能打开但无法导入包,通常是安装到了错误 Python 环境。回到 sys.executable 检查路径。
课程练习中最常见的错误,是在 notebook 里执行安装命令时没有装到当前 kernel。处理方式是先在 notebook 里查看 sys.executable,再用这个解释器执行 -m pip install;如果使用 notebook 魔法命令,也要确认它对应的是当前 Python 3.12 环境。不要只看到终端显示“安装成功”就认为 notebook 一定能导入。
如果 SSH 登录失败,先确认用户名、密码、OTP、登录地址和网络环境。OTP 和北京大学统一认证令牌不是同一个概念,不要混淆。
如果任务长时间排队,先减少核心数、节点数或运行时间。教学练习应从小资源开始。
如果下载数据失败,确认当前节点是否联网,以及是否需要先按平台说明开通网络。
如果 Web 界面已经打开但 notebook 运行很慢,先检查是否申请了过小或过大的资源。过小会导致运行慢,过大可能排队久。课程练习通常从 2 核短时任务开始最稳妥。
小结¶
集群不是预测方法本身,而是运行环境。使用集群时最重要的是三件事:使用正确账号和 OTP 登录,使用正确 Python 环境安装依赖,使用合适资源运行任务。先让一个小 notebook 跑通,再扩大实验规模。
练习¶
创建一个 2 核、120 分钟的 JupyterLab 应用,并记录使用的 Python 路径。
在 notebook 中运行
import sys; sys.executable,再用同一路径安装pandas。上传一个 CSV 文件到集群,在 notebook 中读取并显示前 5 行。
用 SSH 登录集群,运行
pwd、ls和whoami。写一段说明,解释为什么不能把密码或 API key 写入 notebook。
参考文献¶
- Garza, A., Challu, C., & Mergenthaler-Canseco, M. (2024). TimeGPT-1. 10.48550/arXiv.2310.03589
- Ansari, A. F., Stella, L., Turkmen, C., Zhang, X., Mercado, P., Shen, H., Shchur, O., Rangapuram, S. S., Arango, S. P., Kapoor, S., Zschiegner, J., Maddix, D. C., Wang, H., Mahoney, M. W., Torkkola, K., Wilson, A. G., Bohlke-Schneider, M., & Wang, Y. (2024). Chronos: Learning the Language of Time Series. 10.48550/arXiv.2403.07815