前言

在构建好高性能计算集群后,如何降低用户的入门门槛?对于数据科学家和工程师而言,如果能像操作网盘一样提交作业、像浏览网页一样查看可视化结果,工作效率将大幅提升。

本篇将深入 IBM Spectrum LSF Suite 的应用中心(Application Center),手把手教您如何集成两大类典型应用:

领域 应用 功能
AI TensorFlow + Tensorboard 深度学习训练 + 实时监控
HPC OpenFOAM + ParaView 流体仿真 + 远程可视化

一、AI 应用集成:TensorFlow 与 Tensorboard

LSF Suite 内置了 DeepLearning 模板,利用 Docker 集成技术,可以让用户轻松启动 TensorFlow 训练任务并拉起 Tensorboard 界面。

1. 准备工作

在开始配置模板前,需确保底层环境满足以下条件:

准备项 要求
Docker 环境 集群中的 Docker 机器已安装 Docker,且 lsfadmin 用户有权限访问
共享存储 所有 Docker 机器需要一个共享目录(MLDL_TOP),lsfadmin 需有读写权限
镜像准备 拉取 TensorFlow 镜像,如 tensorflow/tensorflow:latest-gpu
1
2
3
4
5
# 拉取 TensorFlow 镜像
docker pull tensorflow/tensorflow:latest-gpu

# 或 Power 平台使用
docker pull ibmcom/tensorflow-ppc64le:1.13.1

2. 发布模板

步骤

  1. 登录控制台:以 lsfadmin 身份登录 LSF Suite Web 界面
  2. 发布应用:导航至 WorkloadDefinitionsTemplatesDeepLearning
  3. 选择模板:选择 Tensorboard 并点击 Publish
  4. 指定目录:系统会提示选择下载教程数据的目录,指定 MLDL_TOP

发布成功后,该目录下会自动生成以下结构:

1
2
3
4
5
MLDL_TOP/
├── scripts/           # 集成脚本
├── images/            # 容器镜像配置
├── tutorials/         # 教程数据
└── tmp/               # 临时文件(需手动创建)

3. 关键避坑:脚本权限修正

集成脚本默认假设 lsfadmin 可以写入作业提交用户的 Home 目录,但这在很多生产环境中是被禁止的。

最佳实践:修改 MLDL_TOP/scripts/dockerPasswd.sh 脚本,将临时目录指向共享存储而非用户 Home 目录。

修改代码

1
2
3
4
5
6
7
8
9
10
11
12
# 注释掉原有的 JOBTMPDIR 设置
#JOBTMPDIR=$LS_EXECCWD 

# 指向共享目录下的 tmp 文件夹
MLDL_TOP=/nfs/mldl  # 您的实际共享路径

# 创建临时目录
mkdir -p ${MLDL_TOP}/tmp 2>&1
if [ ! -d ${MLDL_TOP}/tmp/${USER} ]; then
  mkdir -p ${MLDL_TOP}/tmp/${USER}
fi
JOBTMPDIR=${MLDL_TOP}/tmp/${USER}

4. 用户体验

1
2
3
4
5
6
7
8
9
10
11
12
13
14
┌─────────────────────────────────────────────────────────────┐
│              TensorFlow + Tensorboard 工作流                 │
├─────────────────────────────────────────────────────────────┤
│                                                              │
│  1. 用户登录 ───→ New Workload ───→ 选择 Tensorboard        │
│                           ↓                                  │
│  2. 填入作业名和目录 ───→ 点击提交                           │
│                           ↓                                  │
│  3. 作业运行中... ───→ 点击 Job Link 图标                   │
│                           ↓                                  │
│  4. 浏览器弹出 Tensorboard Web 界面                          │
│     (实时查看训练曲线、网络结构等)                           │
│                                                              │
└─────────────────────────────────────────────────────────────┘

预置模板

除了 Tensorboard,LSF Suite 还预置了多个深度学习模板:

模板名称 功能
MNIST_Training MNIST 手写数字识别训练
Classify_Image 图像分类推理
Tensorboard 训练可视化监控

二、HPC 应用集成:OpenFOAM 流体仿真

OpenFOAM 是通用的开源 CFD 软件。我们将通过容器方式运行 OpenFOAM,并配置作业提交模板。

1. 配置 OpenFOAM 模板

准备工作

准备项 说明
Docker 镜像 openfoam/openfoam6-paraview54 或自定义镜像
共享目录 JOB_REPOSITORY_TOP 用于存放算例数据
案例文件 将 OpenFOAM 教程案例复制到共享目录
1
2
3
4
5
6
# 拉取 OpenFOAM 镜像
docker pull openfoam/openfoam6-paraview54

# 准备共享目录
mkdir -p /nfs/openfoam/cases
cp -r $FOAM_TUTORIALS/incompressible/simpleFoam/motorBike /nfs/openfoam/cases/

作业提交表单

在 LSF Web 界面中,用户可以通过图形化表单配置以下参数:

参数 说明 示例
Case Directory 算例目录 /nfs/openfoam/cases/motorBike
Mesh Command 网格处理命令 blockMesh
Application 求解器命令 simpleFoam
CPU Cores 并行核数 4

2. 提交实战

以经典的 motorBike(摩托车外流场)算例为例:

  1. 用户在 Application Input 界面浏览并选中 motorBike 文件夹
  2. 系统自动识别并填入部分参数
  3. 配置并行任务数(如 4 CPU)
  4. 点击提交,作业进入 LSF 调度队列
1
2
3
# LSF 后台实际执行的命令
bsub -n 4 -R "span[hosts=1]" -app openfoam \
    "cd /nfs/openfoam/cases/motorBike && ./Allrun"

三、远程可视化:ParaView 与 VNC 集成

计算完成后,下载巨大的结果文件到本地查看既耗时又麻烦。LSF Suite 允许直接在浏览器中启动 ParaView 对服务器端数据进行可视化。

1. 启用 ParaView 模板

在发布 ParaView 模板时,管理员需要指定 job top directory

重要:务必将其设置为与 OpenFOAM 相同的共享目录,以便 ParaView 能直接读取计算结果。

1
JOB_REPOSITORY_TOP = /nfs/openfoam/cases

2. “一键”可视化工作流

这是 LSF Suite 最惊艳的功能之一:数据驱动的应用启动

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
┌─────────────────────────────────────────────────────────────┐
│              OpenFOAM + ParaView 可视化工作流                │
├─────────────────────────────────────────────────────────────┤
│                                                              │
│  1. OpenFOAM 作业完成                                        │
│     └── 自动生成 motorBike.foam 触发文件                     │
│                           ↓                                  │
│  2. 用户在 Workload → Data 中找到数据文件                    │
│     └── 选中 motorBike.foam                                  │
│                           ↓                                  │
│  3. 点击 "Open with application" → 选择 ParaView            │
│                           ↓                                  │
│  4. LSF 自动提交可视化作业,启动 VNC 会话                    │
│                           ↓                                  │
│  5. 浏览器中弹出 ParaView 图形界面                           │
│     └── 自动加载计算数据,可旋转/缩放/查看云图               │
│                                                              │
└─────────────────────────────────────────────────────────────┘

详细步骤

步骤 操作 结果
1 等待 OpenFOAM 作业完成 生成 *.foam 触发文件
2 导航至 WorkloadData 显示作业数据文件列表
3 选中 motorBike.foam 高亮选择
4 点击 Open with application 弹出应用选择菜单
5 选择 ParaView LSF 提交可视化作业
6 等待 VNC 会话启动 浏览器弹出 ParaView 窗口
7 在浏览器中操作 旋转模型、查看网格和流场云图

优势

  • 零数据传输:所有数据保留在服务器端
  • 浏览器访问:无需安装本地客户端
  • 资源按需使用:可视化作业同样受 LSF 调度管理

应用集成最佳实践总结

应用类型 集成方式 关键配置 用户体验
TensorFlow Docker 模板 MLDL_TOP 共享目录 Web 提交 + Tensorboard 链接
OpenFOAM Docker 模板 JOB_REPOSITORY_TOP 图形化参数表单
ParaView VNC 集成 共享目录一致 浏览器内远程桌面
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
┌─────────────────────────────────────────────────────────────┐
│            LSF Application Center 集成架构                   │
├─────────────────────────────────────────────────────────────┤
│                                                              │
│   用户浏览器 ──────────→ LSF Web Portal (8080)              │
│        ↑                       │                            │
│        │                       ↓                            │
│   VNC/noVNC  ←───── LSF 调度作业 ──→ Docker 容器            │
│        │                       │                            │
│        └───── ParaView ←──────←┘                            │
│                    ↓                                         │
│              共享存储 (NFS)                                  │
│              └── 计算结果数据                                │
│                                                              │
└─────────────────────────────────────────────────────────────┘

下期预告:

随着云原生技术的兴起,传统的 HPC 调度器如何与 Kubernetes 共存?LSF 能否调度 K8s 的 Pod?在下一篇《IBM Spectrum LSF Suite 最佳实践 (6):打破边界——LSF 与 Kubernetes 的深度融合》中,我们将探讨这两个世界的融合方案。

参考资料

  1. IBM Spectrum LSF Suite - Installation Best Practices Guide (Redbooks)
  2. TensorFlow Docker Images
  3. OpenFOAM Docker Images
  4. ParaView Documentation