Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

附录 A:使用 PKU 集群

北京大学光华管理学院

本附录说明如何使用 PKU 集群(PKU Cluster)和北京大学高性能计算平台(High Performance Computing, HPC)运行课程 notebook 和预测实验。对于 TimeGPT 这类普通 API 调用和小规模示例,本地电脑通常足够 Garza et al., 2024;对于深度学习模型、长时间运行任务或 GPU 需求,集群会更合适。

我们还会强调另一类选择:本地个人 AI 算力设备。它们不替代集群,但补充了集群和云服务之间的空白。公开数据、大规模训练和多人共享任务仍适合放到集群;涉及病人、学生、企业经营或个人健康的敏感数据,或者需要反复快速试验的小模型,则可以优先考虑本地设备。选择运行环境时,不只看“有没有 GPU”,还要看数据能否外发、任务是否需要多人共享、模型文件是否能装入内存,以及结果是否需要长期复现。

学习目标

完成本附录后,你应该能够:

账号申请

进入北京大学高性能计算平台页面:

https://hpc.pku.edu.cn

按照“使用指南 - 账户申请”进入在线申请页面。我们建议申请教学系列的未名二号资源。申请完成后,记录你的用户名、登录入口和平台通知,不要把密码或动态验证码发给他人。

Web 登录与 JupyterLab

初学者优先使用 Web 界面。进入平台后,主要用两个功能:

创建 JupyterLab 应用时,可以从较小配置开始:

资源申请越大,等待时间可能越长。课程练习通常不需要一开始就申请大量 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 看到的环境有时不完全一样。

联网与安全

部分登录节点默认不联网,需要按学校平台说明开通网络。官方示例会包含账号、密码和网络命令。实际使用时要注意:

联网成功后再安装依赖或下载公开数据。计算节点是否能联网取决于平台设置,不要假设所有节点都能直接访问外网。

还要区分密码、OTP 和 API key。集群登录需要账号密码和动态验证码,模型调用需要 API key,这些都不应该出现在 notebook 输出、截图、Git 提交或共享文档中。安全问题不是附加项,而是可复现实验的一部分。

文件上传与下载

图形化传输可以使用 FileZilla Client。配置时选择 SFTP(Secure File Transfer Protocol):

第一次通常输入门户密码,第二次输入 OTP 动态验证码。传输课程 notebook、数据文件和结果图时,注意不要上传含有密钥的 .env 文件或 notebook 输出。

如果熟悉命令行,也可以使用 scprsync。例如:

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 的建议流程

  1. 登录平台并创建 JupyterLab 应用。

  2. 上传课程 notebook 和所需数据。

  3. 打开 notebook,确认 Python kernel。

  4. 运行环境检查单元,例如 import pandasimport numpy

  5. 安装缺失依赖。

  6. 从小样本开始运行预测代码。

  7. 保存输出图表和评估结果。

  8. 关闭不用的交互式应用,释放资源。

第一次使用时,可以先运行一个最小检查:

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.jsonmodel.safetensors 等文件。notebook 里填写的是模型目录,而不是压缩包路径。Windows 用户可以把模型解压到当前用户目录或课程目录下;macOS 和 Linux 用户也应放在自己有读权限、路径不含奇怪空格的位置。

本地模型练习的排错顺序可以更具体:

  1. 先确认 notebook 使用的 Python 路径。

  2. 再确认 import pandas, import matplotlib, import torch 能通过。

  3. 检查模型目录是否存在 config.json 和权重文件。

  4. 先用一小段数据或少量序列测试 pipeline(推理流水线)。

  5. 再扩大到 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 跑通,再扩大实验规模。

练习

  1. 创建一个 2 核、120 分钟的 JupyterLab 应用,并记录使用的 Python 路径。

  2. 在 notebook 中运行 import sys; sys.executable,再用同一路径安装 pandas

  3. 上传一个 CSV 文件到集群,在 notebook 中读取并显示前 5 行。

  4. 用 SSH 登录集群,运行 pwdlswhoami

  5. 写一段说明,解释为什么不能把密码或 API key 写入 notebook。

参考文献

References
  1. Garza, A., Challu, C., & Mergenthaler-Canseco, M. (2024). TimeGPT-1. 10.48550/arXiv.2310.03589
  2. 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