开始使用|安装指南|贡献指南|资源|沟通
NVIDIA Modulus 是一个开源深度学习框架,用于使用最先进的 SciML 方法为 AI4 科学和工程构建、训练和微调深度学习模型。
Modulus 提供实用程序和优化的管道来开发将物理知识与数据相结合的人工智能模型,从而实现实时预测。
无论您是在探索神经运算符、GNN 或 Transformer 的使用,还是对基于物理的神经网络或两者之间的混合方法感兴趣,Modulus 都可以为您提供优化的堆栈,使您能够大规模训练模型。
有关模数的更多信息
特定领域的包
可扩展的 GPU 优化训练库
一套基于物理的 ML 模型
无缝 PyTorch 集成
轻松定制和扩展
AI4科学库
谁在为 Modulus 做出贡献
为什么使用模数
入门
资源
安装
贡献
沟通
执照
在粒度级别上,Modulus 提供了一个包含几个关键组件的库:
成分 | 描述 |
---|---|
模块.模型 | 一系列经过优化、可定制且易于使用的模型,例如傅里叶神经运算符、图神经网络等等 |
模数数据管道 | 数据管道和数据加载器库,包括基准数据管道、天气 daptapipes 和图形数据管道 |
模分布 | 构建在torch.distributed 之上的分布式计算库,只需几个步骤即可实现并行训练 |
模对称几何 | 使用构造实体几何建模和 STL 格式的 CAD 文件来处理 DL 训练几何的库。 |
模量符号方程 | 一个在深度学习训练中使用偏微分方程的库,具有常见观察方程的多种实现和简单的定制方法。 |
有关完整列表,请参阅 Modulus Core 和 Modulus Sym 的 Modulus API 文档。
通常,模数用作:
在探索 SciML 和 AI4Science 应用程序的 AI 时,Pytorch 的补充工具。
一个深度学习研究平台,可在 NVIDIA GPU 上提供规模和最佳性能。
进一步阐述:
Modulus 提供高度优化且可扩展的训练库,可最大限度地发挥 NVIDIA GPU 的能力。分布式计算实用程序允许通过几行代码从单个 GPU 高效扩展到多节点 GPU 集群,从而确保大规模。基于物理的机器学习 (ML) 模型可以快速有效地进行训练。该框架包括对高级的支持。优化实用程序、定制数据管道、验证实用程序,以提高端到端训练速度。
Modulus 提供了专为物理机器学习应用而设计的综合性最先进模型库。 Model Zoo 包括可泛化的模型架构,例如傅立叶神经算子 (FNO)、DeepONet、物理信息神经网络 (PINN)、图神经网络 (GNN)、生成式 AI 模型(例如扩散模型)以及特定领域模型(例如深度学习天气预报 (DLWP) 和超分辨率网络 (SrNN) 等。这些模型针对各种物理领域进行了优化,例如计算流体动力学、结构力学和电磁学。用户可以下载、定制和构建这些模型以满足他们的特定需求,从而显着减少开发高保真模拟所需的时间。
Modulus 构建在 PyTorch 之上,为那些已经精通 PyTorch 的人员提供熟悉且用户友好的体验。这包括简单的 Python 界面和模块化设计,使得可以轻松地将 Modulus 与现有 PyTorch 工作流程一起使用。用户可以利用广泛的 PyTorch 生态系统,包括其库和工具,同时受益于 Modulus 的物理 ML 专业功能。这种无缝集成确保用户可以快速采用 Modulus,而无需经历陡峭的学习曲线。
有关更多信息,请参阅将 PyTorch 模型转换为模数模型
Modulus 的设计具有高度可扩展性,允许用户以最小的努力添加新功能。该框架提供了 Pythonic API,用于定义新的物理模型、几何形状和约束,从而可以轻松地将其功能扩展到新的用例。 Modulus 的适应性通过关键功能进一步增强,例如 ONNX 对灵活模型部署的支持、用于简化错误处理的强大日志实用程序以及用于简化模型加载和保存的高效检查点。
这种可扩展性确保 Modulus 能够适应研究人员和工程师不断变化的需求,促进物理机器学习领域创新解决方案的开发。
有关特性和功能的详细信息可以在 Modulus 文档中找到。
参考示例涵盖了广泛的物理约束和数据驱动的工作流程,以适应科学和工程学科中用例的多样性。
提示
对 Modulus 如何为您提供帮助有疑问吗?尝试我们的[实验]聊天机器人,模数指南,寻找答案。
您可以开始在 PyTorch 代码中使用 Modulus,如下所示:
python>>> 导入火炬>>> from modulus.models.mlp.filled_connected 导入FullyConnected>>> model = FullConnected(in_features=32, out_features=64)>>> input = torch.randn(128, 32)>>>输出 = 模型(输入)>>> 输出.shapetorch.Size([128, 64])
Modulus Symbolic:这个算法和实用程序存储库允许 SciML 研究人员和开发人员从物理角度为模型训练和模型验证提供信息。它还为科学和工程领域的专家提供了更高层次的抽象。
以下是专门针对特定社区的领域专家的软件包,可满足他们独特的探索需求。
Earth-2 Studio:开源项目,使气候研究人员和科学家能够探索和实验天气和气候的人工智能模型。
以下是稳定后会打包到 Modulus 中的研究包。
Modulus Makani:实验库,旨在支持基于机器学习的天气和气候模型的研究和开发。
Earth2 Grid:实验库,具有用于处理在各种网格上定义的地理数据的实用程序。
Earth-2 MIP:实验库,具有用于天气和气候模型模型相互比较的实用程序。
Modulus 是一个开源项目,得到了 SciML 和 AI4science 领域研究人员的贡献。当 Modulus 团队致力于优化底层软件堆栈时,社区进行协作并贡献模型架构、数据集和参考应用程序,以便我们能够在开发通用模型架构和算法方面进行创新。
社区贡献者的一些最新例子包括 HP 实验室 3D 打印团队、斯坦福大学心血管研究团队、UIUC 团队、CMU 团队等。
使用 Modulus 的研究团队的最新例子有 ORNL 团队、慕尼黑工业大学 CFD 团队等。
请导航至此页面,获取利用 Modulus 的研究工作的完整列表。有关使用 Modulus 的企业列表,请参阅此处。
使用 Modulus 并有兴趣在 NVIDIA 博客上展示您的作品吗?填写此提案表,我们会尽快回复您!
以下是 Modulus 用于 SciML 模型开发的一些主要优势:
SciML 基准测试和验证 | 轻松使用具有异构数据集的通用 SciML 配方 | 开箱即用的性能和可扩展性 |
Modulus 使研究人员能够根据经过验证的架构对他们的 AI 模型进行基准测试,以解决标准基准测试问题,并具有详细的特定领域验证标准。 | Modulus 使研究人员能够从 SOTA SciML 架构中进行选择,并针对其用例使用内置数据管道。 | Modulus 提供开箱即用的高性能训练管道,包括针对异构工程和科学数据集的优化 ETL 管道,以及跨多 GPU 和多节点 GPU 的开箱即用扩展。 |
了解您的同行 SciML 研究人员对 Modulus 有何看法(即将推出)。
以下资源将帮助您学习如何使用 Modulus。最好的方法是从参考示例开始,然后根据您自己的用例进行更新。
将 Modulus 与 PyTorch 模型结合使用
使用 Modulus 内置模型
入门指南
参考样品
用户指南 文档
入门网络研讨会
AI4Science模数训练营
模数预训练模型
模量数据集和补充材料
自定进度的模数 DLI 培训
科学与工程深度学习模数系列讲座
模数:目的和用途
视频教程
安装最新版本 Modulus 的推荐方法是使用 PyPi:
pip 安装 nvidia-modulus
可以通过运行 hello world 示例来验证安装,如此处所示。
Modulus 有许多在特定组件中使用的可选依赖项。使用 pip 时,Modulus 中使用的所有依赖项都可以使用pip install nvidia-modulus[all]
安装。如果您正在开发 Modulus,则可以使用pip install nvidia-modulus[dev]
安装开发人员依赖项。否则,可以根据具体情况安装其他依赖项。有关安装可选依赖项的详细信息可以在入门指南中找到。
推荐的 Modulus docker 镜像可以从 NVIDIA 容器注册表中获取(请参阅 NGC 注册表以获取最新标签):
docker pull nvcr.io/nvidia/modulus/modulus:24.09
在容器内,您可以克隆 Modulus git 存储库并开始使用示例。以下命令显示了启动模数容器并运行此存储库中的示例的说明。
docker run --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 --runtime nvidia --rm -it nvcr.io/nvidia/modulus/modulus:24.09 bash git克隆 https://github.com/NVIDIA/modulus.gitcd modulus/examples/cfd/darcy_fno/ pip install warp-lang # 安装 NVIDIA Warp 来运行 darcy 示例python train_fno_darcy.py
对于企业支持的 NVAIE 容器,请参阅 Modulus 安全功能分支
对于从源代码使用的 Modulus Python 包的本地构建:
git clone [email protected]:NVIDIA/modulus.git && cd 模数 pip 安装 --升级 pip 点安装。
构建 Modulus docker 镜像:
docker build -t 模数:部署 --build-arg TARGETPLATFORM=linux/amd64 --target 部署 -f Dockerfile 。
或者,您可以运行make container-deploy
构建 CI 镜像:
docker build -t 模数:ci --build-arg TARGETPLATFORM=linux/amd64 --target ci -f Dockerfile 。
或者,您可以运行make container-ci
。
目前仅支持linux/amd64
和linux/arm64
平台。如果使用linux/arm64
,某些依赖项(例如warp-lang
可能无法正确安装。
Modulus 是一项开源合作项目,其成功源于社区对物理机器学习领域进一步发展的贡献。感谢您对该项目的贡献,以便其他人可以在您的贡献的基础上继续发展。
有关为 Modulus 贡献的指南,请参阅贡献指南。
如果 Modulus 对您的研究有帮助并且您想引用它,请参阅指南
Github 讨论:讨论新的架构、实现、物理机器学习研究等。
GitHub 问题:错误报告、功能请求、安装问题等。
Modulus 论坛:Modulus 论坛面向新用户和中等级别的用户和开发人员提供一般聊天、在线讨论、协作等服务。
想要对 Modulus 提出一些改进建议吗?请在此处使用我们的反馈表。
Modulus 在 Apache License 2.0 下提供,请参阅 LICENSE.txt 以获取完整的许可证文本。