用于AI驱动多物理系统的深度学习框架
项目描述
NVIDIA Modulus
什么是Modulus?
NVIDIA Modulus是一个开源深度学习框架,用于使用最先进的SciML方法构建、训练和微调深度学习模型,以用于AI4科学和工程。
Modulus提供工具和优化管道,以开发结合物理知识和数据的AI模型,实现实时预测。
无论您是在探索使用神经算子、GNN或transformer,还是对物理信息神经网络或两者之间的混合方法感兴趣,Modulus都为您提供了一个优化的堆栈,使您能够大规模地训练模型。
更多关于Modulus的信息
在细粒度级别,Modulus提供了一些关键组件的库
组件 | 描述 |
---|---|
modules.models | 一组优化、可定制和易于使用的模型,如傅里叶神经网络算子、图神经网络等 |
modulus.datapipes | 数据管道和数据加载库,包括基准数据管道、天气数据管道和图数据管道 |
modulus.distributed | 一个基于 torch.distributed 的分布式计算库,只需几步即可实现并行训练 |
modulus.sym.geometry | 一个库,用于处理深度学习训练中的几何,使用构造实体几何模型和 STL 格式的 CAD 文件。 |
modulus.sym.eq | 一个库,使用偏微分方程(PDEs)在您的深度学习训练中,具有几种常见方程的实现和易于定制的简单方法。 |
有关完整列表,请参阅 Modulus Core 和 Modulus Sym 的 Modulus API 文档。
通常,Modulus 可以用作
- 探索 AI for SciML 和 AI4Science 应用时 PyTorch 的补充工具。
- 一个深度学习研究平台,提供在 NVIDIA GPU 上的可扩展性和最佳性能。
进一步阐述
可扩展的GPU优化训练库
Modulus 提供了一个高度优化和可扩展的训练库,以最大化 NVIDIA GPU 的性能。通过几行代码即可实现从单个 GPU 到多节点 GPU 集群的效率扩展,确保可以快速且有效地训练大规模的物理信息机器学习(ML)模型。该框架包括对高级 优化工具、定制数据管道、验证工具 的支持,以增强端到端训练速度。
一套物理信息机器学习模型
Modulus 提供了一组专门为物理-ML 应用设计的最先进的模型库。模型库包括通用的模型架构,如 傅里叶神经网络算子(FNOs)、DeepONet、物理信息神经网络(PINNs)、图神经网络(GNNs),以及生成式 AI 模型如 扩散模型,以及如 深度学习天气预报(DLWP) 和 超分辨率网络(SrNN) 等特定领域模型。这些模型针对各种物理领域进行了优化,如计算流体动力学、结构力学和电磁学。用户可以下载、定制和构建这些模型以满足他们的特定需求,显著减少开发高保真模拟所需的时间。
无缝PyTorch集成
Modulus 建立在 PyTorch 之上,为熟悉 PyTorch 的用户提供熟悉且友好的体验。这包括简单的 Python 接口和模块化设计,使 Modulus 与现有的 PyTorch 工作流程易于使用。用户可以利用广泛的 PyTorch 生态系统,包括其库和工具,同时受益于 Modulus 的物理-ML 专用功能。这种无缝集成确保用户可以快速采用 Modulus 而无需陡峭的学习曲线。
有关更多信息,请参阅 将 PyTorch 模型转换为 Modulus 模型
易于定制和扩展
模组设计得高度可扩展,用户可以以最小的努力添加新功能。该框架提供Pythonic API,用于定义新的物理模型、几何形状和约束条件,使扩展其功能以适应新的用例变得容易。通过诸如ONNX支持等关键特性,模组的适应性得到了进一步增强,该特性提供了灵活的模型部署方式;强大的日志工具用于简化错误处理;以及高效的检查点机制,简化了模型加载和保存。
这种可扩展性确保了模组能够适应研究人员和工程师不断变化的需求,从而促进物理学-机器学习领域创新解决方案的发展。
有关功能和能力的详细信息,请参阅模组文档。
参考样本涵盖了广泛的物理约束和数据驱动工作流程,适用于科学和工程学科中的各种用例。
[!TIP] 关于模组如何帮助您的问题?尝试我们的[实验性]聊天机器人模组指南以获取答案。
你好,世界
您可以使用以下简单示例在您的PyTorch代码中开始使用模组
python
>>> import torch
>>> from modulus.models.mlp.fully_connected import FullyConnected
>>> model = FullyConnected(in_features=32, out_features=64)
>>> input = torch.randn(128, 32)
>>> output = model(input)
>>> output.shape
torch.Size([128, 64])
AI4Science库
- Modulus Symbolic:该算法和实用工具库允许SciML研究人员和开发人员为模型训练和模型验证提供物理信息。它还为领域专家提供了科学和工程本地的更高层次抽象。
特定领域包
以下是为特定社区领域专家定制的包,以满足他们独特的探索需求。
- Earth-2 Studio:开源项目,旨在使气候研究人员和科学家能够探索和实验天气和气候的AI模型。
研究包
以下是在稳定后打包到模组中的研究包。
- Modulus Makani:实验性库,旨在使基于机器学习的天气和气候模型的研究和开发成为可能。
- Earth2 Grid:实验性库,包含用于在各种网格上定义地理数据的实用工具。
- Earth-2 MIP:实验性库,包含用于天气和气候模型模型比较的实用工具。
谁在使用和贡献模组
模组是一个开源项目,并从SciML和AI4science领域的学者那里获得贡献。虽然模组团队在优化底层软件栈,但社区正在协作并贡献模型架构、数据集和参考应用程序,以便我们在开发可推广的模型架构和算法的追求中实现创新。
社区贡献者的最新例子包括惠普实验室3D打印团队、斯坦福心血管研究团队、UIUC团队、CMU团队等。
使用模组的最新研究团队示例包括ORNL团队、慕尼黑工业大学CFD团队等。
请访问此页面以获取利用模组的完整研究工作列表。有关使用模组的企业列表,请参阅此处。
使用模数,并希望在 NVIDIA 博客 展示您的工作?请填写此 提案表,我们将与您联系!
他们为什么使用模数?
以下是 Modulus 在 SciML 模型开发中的关键优势:
SciML 基准测试和验证 | 轻松使用异构数据集的通用 SciML 菜谱 | 即插即用性能和可扩展性 |
Modulus 允许研究人员将他们的 AI 模型与经过验证的标准基准问题的架构进行基准测试,并使用详细的领域特定验证标准。 | Modulus 允许研究人员从 SOTA SciML 架构中选择,并使用内置的数据管道来处理其用例。 | Modulus 提供了即插即用的训练管道,包括用于异构工程和科学数据集的优化 ETL 管道,以及多 GPU 和多节点 GPU 的即插即用扩展。 |
看看您的 SciML 同行研究人员对 Modulus 的评价(即将推出)。
入门指南
以下资源将帮助您了解如何使用 Modulus。最佳做法是从参考示例开始,然后根据您的用例进行更新。
资源
- 入门指南网络研讨会
- AI4Science Modulus 训练营
- Modulus 预训练模型
- Modulus 数据集和补充材料
- 自定步调 Modulus DLI 训练
- 带有 Modulus 的科学和工程深度学习讲座系列
- 视频教程
安装
PyPi
安装 Modulus 最新版本的建议方法是使用 PyPi
pip install nvidia-modulus
可以通过运行此处演示的“hello world”示例来验证安装:这里。
可选依赖项
Modulus 有许多可选依赖项,用于特定组件。当使用 pip 时,可以安装 Modulus 中使用的所有依赖项,使用 pip install nvidia-modulus[all]
。如果您正在开发 Modulus,可以使用 pip install nvidia-modulus[dev]
安装开发依赖项。否则,可以逐个安装额外的依赖项。有关安装可选依赖项的详细信息,请参阅 入门指南。
NVCR 容器
建议的 Modulus docker 镜像可以从 NVIDIA 容器注册表 中拉取
docker pull nvcr.io/nvidia/modulus/modulus:24.04
在容器内部,您可以克隆 Modulus git 仓库,并从该仓库运行示例。下面的命令显示了启动 modulus 容器并从该仓库运行示例的说明。
docker run --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 --runtime nvidia \
--rm -it nvcr.io/nvidia/modulus/modulus:24.04 bash
git clone https://github.com/NVIDIA/modulus.git
cd modulus/examples/cfd/darcy_fno/
pip install warp-lang # install NVIDIA Warp to run the darcy example
python train_fno_darcy.py
对于企业支持的 NVAIE 容器,请参阅 Modulus Secured Feature Branch
从源代码
软件包
要从源代码构建 Modulus Python 软件包,请使用以下命令:
git clone git@github.com:NVIDIA/modulus.git && cd modulus
pip install --upgrade pip
pip install .
源代码容器
要构建 Modulus docker 镜像
docker build -t modulus:deploy \
--build-arg TARGETPLATFORM=linux/amd64 --target deploy -f Dockerfile .
或者,您也可以运行 make container-deploy
要构建 CI 镜像
docker build -t modulus:ci \
--build-arg TARGETPLATFORM=linux/amd64 --target ci -f Dockerfile .
或者,您也可以运行 make container-ci
。
目前,仅支持 linux/amd64
和 linux/arm64
平台。如果使用 linux/arm64
,则一些依赖项(如 warp-lang
)可能无法正确安装。
为 Modulus 贡献
Modulus 是一个开源协作项目,其成功植根于社区对物理-ML 领域的贡献。感谢您为项目做出贡献,以便其他人可以在您的贡献之上构建。
有关为 Modulus 贡献的指导,请参阅 贡献指南。
引用 Modulus
如果Modulus帮助了您的研究,并且您想引用它,请参阅指南
沟通
- Github论坛:讨论新的架构、实现、物理-机器学习研究等。
- GitHub问题:错误报告、功能请求、安装问题等。
- Modulus论坛:Modulus论坛论坛为从初学者到中等水平的用户和开发者提供了一个平台,用于一般聊天、在线讨论、协作等。
反馈
想要对Modulus提出一些建议?请使用我们的反馈表单这里。
许可证
Modulus在Apache License 2.0下提供,请参阅LICENSE.txt以获取完整的许可文本。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分发
构建分发
nvidia_modulus-0.8.0-py3-none-any.whl的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | bd61326f2728c062a53469b4171880d5847aa576d0219facdee350f901629bac |
|
MD5 | 36d44d0af382ddf7d9933756633a55f5 |
|
BLAKE2b-256 | 436b45637a2748686e521cb1c2d1063e0285ab0031867fe4885cd43d93c7d422 |