前言
在构建好高性能计算集群后,如何降低用户的入门门槛?对于数据科学家和工程师而言,如果能像操作网盘一样提交作业、像浏览网页一样查看可视化结果,工作效率将大幅提升。
本篇将深入 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. 发布模板
步骤
- 登录控制台:以
lsfadmin身份登录 LSF Suite Web 界面 - 发布应用:导航至 Workload → Definitions → Templates → DeepLearning
- 选择模板:选择 Tensorboard 并点击 Publish
- 指定目录:系统会提示选择下载教程数据的目录,指定
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(摩托车外流场)算例为例:
- 用户在 Application Input 界面浏览并选中
motorBike文件夹 - 系统自动识别并填入部分参数
- 配置并行任务数(如 4 CPU)
- 点击提交,作业进入 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 | 导航至 Workload → Data | 显示作业数据文件列表 |
| 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 的深度融合》中,我们将探讨这两个世界的融合方案。