人工智能驱动的多物理场系统的深度学习框架
项目描述
Modulus Symbolic
什么是Modulus Symbolic?
Modulus Symbolic(Modulus Sym)仓库是Modulus SDK的一部分,它提供算法和实用工具,用于与Modulus核心一起使用,以明确地将物理学信息告知模型训练。这包括用于显式集成符号PDE、域采样以及使用各种梯度计算方案计算基于PDE的残差的实用工具。
它还提供了高级抽象,可以通过简单的符号API从几何形状、PDE和约束(如边界条件)的规范中组合训练循环。请参阅盖子驱动腔来了解该概念。
有关更多信息,请参阅Modulus文档。
有关完整堆栈的更多信息,请参阅Modulus SDK。
你好世界
您可以通过以下示例开始使用Modulus-Sym的几何模块,如下所示:
>>> import numpy as np
>>> from modulus.sym.geometry.primitives_3d import Box
>>> from modulus.sym.utils.io.vtk import var_to_polyvtk
>>> nr_points = 100000
>>> box = Box(point_1=(-1, -1, -1), point_2=(1, 1, 1))
>>> s = box.sample_boundary(nr_points=nr_points)
>>> var_to_polyvtk(s, "boundary")
>>> print("Surface Area: {:.3f}".format(np.sum(s["area"])))
Surface Area: 24.000
要使用Modulus-Sym的PDE模块,您可以运行以下示例
>>> from modulus.sym.eq.pdes.navier_stokes import NavierStokes
>>> ns = NavierStokes(nu=0.01, rho=1, dim=2)
>>> ns.pprint()
continuity: u__x + v__y
momentum_x: u*u__x + v*u__y + p__x + u__t - 0.01*u__x__x - 0.01*u__y__y
momentum_y: u*v__x + v*v__y + p__y + v__t - 0.01*v__x__x - 0.01*v__y__y
要使用Modulus Sym的计算图构建器
>>> import torch
>>> from sympy import Symbol
>>> from modulus.sym.graph import Graph
>>> from modulus.sym.node import Node
>>> from modulus.sym.key import Key
>>> from modulus.sym.eq.pdes.diffusion import Diffusion
>>> from modulus.sym.models.fully_connected import FullyConnectedArch
>>> net = FullyConnectedArch(input_keys=[Key("x")], output_keys=[Key("u")], nr_layers=3, layer_size=32)
>>> diff = Diffusion(T="u", time=False, dim=1, D=0.1, Q=1.0)
>>> nodes = [net.make_node(name="net")] + diffusion.make_nodes()
>>> graph = Graph(nodes, [Key("x")], [Key("diffusion_u")])
>>> graph.forward({"x": torch.tensor([1.0, 2.0]).requires_grad_(True).reshape(-1, 1)})
{'diffusion_u': tensor([[-0.9956],
[-1.0161]], grad_fn=<SubBackward0>)}
有关在自定义训练循环中使用物理实用工具的示例,请参阅入门示例,以及有关端到端PINN工作流程的盖子驱动腔。
Modulus版本低于23.05的用户可以参考迁移指南以更新到最新版本。
入门指南
以下资源将帮助您了解如何使用Modulus。最佳方法是先从参考示例开始,然后根据您的实际用例进行更新。
资源
安装
PyPi
安装Modulus Symbolic最新版本推荐使用PyPi。
pip install nvidia-modulus.sym
注意,上述方法仅适用于x86/amd64架构。对于在基于Arm的系统上使用pip安装Modulus Sym,请按以下方式从源安装VTK:这里,然后安装Modulus-Sym和其他依赖项。
pip install nvidia-modulus.sym --no-deps
pip install "hydra-core>=1.2.0" "termcolor>=2.1.1" "chaospy>=4.3.7" "Cython==0.29.28" "numpy-stl==2.16.3" "opencv-python==4.5.5.64" \
"scikit-learn==1.0.2" "symengine>=0.10.0" "sympy==1.12" "timm>=1.0.3" "torch-optimizer==0.3.0" "transforms3d==0.3.1" \
"typing==3.7.4.3" "pillow==10.0.1" "notebook==6.4.12" "mistune==2.0.3" "pint==0.19.2" "tensorboard>=2.8.0"
容器
推荐的Modulus docker镜像可以从NVIDIA容器注册库获取。
docker pull nvcr.io/nvidia/modulus/modulus:24.04
从源码构建
包
要从源码本地构建Modulus Symbolic Python包,请使用以下命令:
git clone git@github.com:NVIDIA/modulus-sym.git && cd modulus-sym
pip install --upgrade pip
pip install .
源码容器
要构建发布镜像,请插入以下标签并运行以下命令:
docker build -t modulus-sym:deploy \
--build-arg TARGETPLATFORM=linux/amd64 --target deploy -f Dockerfile .
目前仅支持linux/amd64
和linux/arm64
平台。
为Modulus做出贡献
Modulus是一个开源合作项目,其成功植根于社区对物理-机器学习领域的贡献。感谢您为项目做出贡献,以便他人可以在此基础上进行构建。
有关为Modulus做出贡献的指导,请参阅贡献指南。
引用Modulus
如果Modulus帮助了您的研究,并且您想引用它,请参阅指南。
沟通
- GitHub讨论:讨论新的架构、实现、物理-机器学习研究等。
- GitHub问题:错误报告、功能请求、安装问题等。
- Modulus论坛:Modulus论坛Modulus Forum聚集了从新手到中级用户和开发者,用于一般聊天、在线讨论、合作等。
反馈
想要对Modulus提出一些改进建议?请使用我们的反馈表这里。
许可证
Modulus在Apache License 2.0下提供,请参阅LICENSE.txt获取完整的许可文本。
项目详情
nvidia_modulus_sym-1.7.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4da5ce0a22fa463c3fb18b90aabaa953077e81213280b17c3e101a46ff3f4fa4 |
|
MD5 | 23bcc4baf372e44932b0e8d56be67341 |
|
BLAKE2b-256 | 628f2ff6d90046899810b07c0ef3c8043c2ae943564faa25b1efccfc9ee6a262 |