跳转到主要内容

人工智能驱动的多物理场系统的深度学习框架

项目描述

Modulus Symbolic

Project Status: Active - The project has reached a stable, usable state and is being actively developed. GitHub Code style: black

入门 | 安装指南 | 贡献指南 | 资源 | 沟通

什么是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/amd64linux/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 (220.1 kB 查看哈希值)

上传时间 源码

支持者