5. AI For Science 加速库介绍

5.1. PhysicsNeMo

PhysicsNeMo 是一个开源深度学习框架,用于构建、训练、微调和推理物理 AI 模型,使用最先进的 AI4Science 与工程领域的 SciML 方法。

PhysicsNeMo 提供 Python 模块,用于构建可扩展且优化的训练和推理管道,以探索、开发、验证和部署结合物理知识与数据的 AI 模型,实现实时预测。

无论是在探索神经算子、GNN 或转换器的使用,还是对物理知情神经网络或介于两者之间的混合方法感兴趣,PhysicsNeMo 都为您提供了优化的技术栈,使您能够大规模训练模型。

镜像使用方法:

参考 7 容器化安装部署 章节获取PhysicsNeMo镜像及启动镜像。

  1. 环境搭建:

    export MACA_GRAPH_LAUNCH_MODE=0
    export PYTORCH_DISABLE_CUDA_CUDNN_TF32=1
    export TORCH_ALLOW_TF32_CUBLAS_OVERRIDE=0
    
  2. 测试方法:

    cd /root/physicsnemo && ./run_pytest.sh
    

二进制包使用方法:

参考 7 容器化安装部署 章节获取PyTorch版本镜像及启动镜像,在沐曦开发者社区的AI For Science分区中下载二进制包。

  1. 环境搭建:

    export MACA_VERSION=3.3.0.3  //实际的MACA_VERSION请根据二进制包版本号进行替换。
    export MACA_PATH=/opt/maca
    export CUCC_PATH=$MACA_PATH/tools/cu-bridge
    export CUDA_PATH=$CUCC_PATH
    export PATH=${CUCC_PATH}/bin:${CUCC_PATH}/tools:${MACA_PATH}/bin:${CUDA_PATH}/bin:$PATH
    export LD_LIBRARY_PATH=${CUCC_PATH}/lib:${MACA_PATH}/lib:${MACA_PATH}/ompi/lib:${MACA_PATH}/ucx/lib:$LD_LIBRARY_PATH
    
    export PYTORCH_DEFAULT_NCHW=1
    export CUBLAS_WORKSPACE_CONFIG=:4096:16
    export MACA_GRAPH_LAUNCH_MODE=0
    export PYTORCH_DISABLE_CUDA_CUDNN_TF32=1
    export TORCH_ALLOW_TF32_CUBLAS_OVERRIDE=0
    

    上传二进制包到root 目录下:

    cd /root/ && tar -xJf maca-physicsnemo-1.0.1-py310-${MACA_VERSION}-ubuntu22.04-amd64.tar.xz //解压二进制包到root
    export PYTHONPATH=/root/maca-physicsnemo-1.0.1-${MACA_VERSION}/physicsnemo //设置PYTHONPATH
    apt-get update && apt-get install -y wget libx11-6 libgl1-mesa-glx libxrender1 xvfb libcurl4 perl
    cd /root/maca-physicsnemo-1.0.1-${MACA_VERSION}/physicsnemo  //进入解压后的二进制包目录
    pip install onnxruntime==1.18.0 ../wheel/*.whl //安装whl包,onnxruntime 为CPU版本
    
  2. 测试方法:

    cd /root/maca-physicsnemo-1.0.1-${MACA_VERSION}/physicsnemo && pytest test/
    

5.2. DeepXDE

DeepXDE 是一个面向科学计算的深度学习开源库,以物理信息神经网络(PINN)为核心,支持求解常/偏微分方程、积分微分方程及分数阶方程的正反问题,并内置复杂几何建模、多保真度学习、自适应采样等算法,兼容 TensorFlow、PyTorch 等主流后端,代码简洁、配置灵活,广泛用于流体力学、热传导、逆问题优化等数值模拟场景。

镜像使用方法:

首先参考 7 容器化安装部署 章节获取DeepXDE镜像及启动镜像。

  1. 环境搭建:

    运行 echo $DDE_BACKEND 检查后端镜像,与当前使用的镜像(Paddle/Pytorch)是否一致,不一致请根据以下命令切换后端:

    Paddle 镜像后端设置: export DDE_BACKEND=paddle

    PyTorch 镜像后端设置: export DDE_BACKEND=pytorch

  2. 测试方法:

    cd /opt/deepxde-1.14.0/examples/
    python3 [example]
    

5.3. Warp

Warp 是一个用于编写高性能仿真和图形代码的 Python 框架。Warp 可以将普通的 Python 函数通过 JIT 转换为高效的内核代码,能够在 CPU 或 GPU 上运行。Warp 让开发者能够轻松编写物理仿真、感知、机器人以及几何处理等领域的程序。 此外,Warp 的内核是可微分的,可以无缝集成到 PyTorch、JAX 和 Paddle 等机器学习框架的训练流程中。API 和语言参考请见官方网站

镜像使用方法:

参考 7 容器化安装部署 章节获取Warp镜像及启动镜像。

  1. 环境搭建:

    镜像环境中已经包含有环境变量的对应设置。

  2. 测试方法:

    python -m warp.tests.test_examples
    

二进制包使用方法:

参考 7 容器化安装部署 章节获取PyTorch版本镜像及启动镜像,在沐曦开发者社区的AI For Science分区中下载二进制包。

  1. 环境搭建:

    在基础镜像中配置环境变量:

    export MACA_PATH=/opt/maca
    export CUCC_PATH=/opt/maca/tools/cu-bridge
    export CUDA_PATH=/opt/maca/tools/cu-bridge
    export PATH=${CUCC_PATH}/bin:${CUCC_PATH}/tools:${MACA_CLANG_PATH}:${MACA_PATH}/bin:${CUDA_PATH}/bin:$PATH
    export LD_LIBRARY_PATH=${CUCC_PATH}/lib:${MACA_PATH}/lib:${MACA_PATH}/ompi/lib:${MACA_PATH}/ucx/lib:$LD_LIBRARY_PATH
    export MACA_DIRECT_DISPATCH=1
    

    上传二进制包到当前目录下,解压二进制包,并进入解压后的目录,安装whl包:

    pip install warp_lang*.whl
    
  2. 测试方法:

    python -m warp.tests.test_examples
    

5.4. DGL

Deep Graph Library(DGL)是一个 Python 包,旨在现有深度学习框架(目前支持 PyTorch、MXNet 和 TensorFlow)之上轻松实现图神经网络模型系列。 它提供了灵活的消息传递控制、通过自动批处理和高度优化的稀疏矩阵内核实现速度优化,以及多 GPU/CPU 训练,可扩展到包含数亿个节点和边的图。

镜像使用方法:

首先参考 7 容器化安装部署 章节获取DGL镜像及启动镜像。

  1. 环境搭建:

    export TORCH_ALLOW_TF32_CUBLAS_OVERRIDE=0
    
  2. 测试方法:

    export DGL_HOME=/root/dgl
    export TORCH_ALLOW_TF32_CUBLAS_OVERRIDE=0
    export LD_PRELOAD=/opt/hpcc/lib/libhcblas.so
    pip3 install /root/dgl/python/dist/*.whl
    cd /root/dgl
    bash scripts/run_pytest_modifed.sh -g tests/python_modifed/common
    bash scripts/run_pytest_modifed.sh -g tests/python_modifed/pytorch
    

5.5. PyG

PyG 是一个基于 PyTorch 构建的库,旨在让用户能够轻松编写和训练图神经网络,适用于处理与结构化数据相关的各种应用。 他继承了来自多篇已发表论文的、针对图和其他不规则结构进行深度学习的方法。此外,PyG 还提供了:

  • 易于使用的迷你批处理加载器,可处理大量小图或者单个巨型图。

  • 更好的硬件与分布式支持;支持多 GPU 训练并可通过 mcGraph 实现分布式图学习。

  • 内置大量通用的基准数据集,并提供简单的接口供用户创建自定义数据集。

镜像使用方法:

参考 7 容器化安装部署 章节获取PyG镜像及启动镜像。

  1. 环境搭建:

    镜像环境中已经包含有环境变量的对应设置。

  2. 测试方法:

    cd /src/pyg-lib && pytest
    

二进制包使用方法:

参考 7 容器化安装部署 章节获取PyTorch版本镜像及启动镜像,在沐曦开发者社区的AI For Science分区中下载二进制包。

  1. 环境配置:

    export MACA_PATH=/opt/maca
    export CUCC_PATH=$MACA_PATH/tools/cu-bridge
    export CUDA_PATH=$CUCC_PATH
    export PATH=$(CUCC_PATH)/bin:$(CUCC_PATH)/tools:$(MACA_PATH)/bin:$(CUDA_PATH)/bin:$PATH
    export LD_LIBRARY_PATH=$(CUCC_PATH)/lib:$(MACA_PATH)/lib:$(MACA_PATH)/ompi/lib:$(MACA_PATH)/ucx/lib:$LD_LIBRARY_PATH
    export PYTORCH_DEFAULT_NCHW=1
    export CUBLAS_WORKSPACE_CONFIG=:4096:16
    
    apt update && apt install libmetis-dev
    

    上传二进制包到当前目录下,解压二进制包,并进入解压后的目录,安装whl包:

    pip install ./wheel/*.whl
    
  2. 使用方法/测试方法:

    git clone https://github.com/pyg-team/pyg-lib.git
    cd pyg-lib && pytest