Reading Time: 3 minutes
디지털 트윈, 기상 모델, 물리 기반 모델링 및 시뮬레이션에 따라 훈련 파이프라인을 사용자 정의하여 개발할 수 있는 AI 프레임워크인 NVIDIA Modulus의 최신 버전이 출시되어 현재 다운로드가 가능합니다.
이번 물리학-ML 프레임워크 릴리스인 NVIDIA Modulus v22.09는 여러 가지 개선 사항이 추가되면서 신경 연산자 아키텍처에 대한 합성 유연성이 높아졌고, 훈련 수렴 및 성능이 개선되었고, 특히 사용자 경험과 문서화 기능이 향상되었습니다.
최신 버전의 Modulus 컨테이너는 DevZone, NGC,에서 다운로드하거나, GitLab에서 Modulus 보고서에 액세스할 수 있습니다.
신경망 아키텍처
이번 업데이트로 Fourier Neural Operator (FNO), 물리 정보 기반 신경 연산자(PINO), DeepONet 네트워크 아키텍처 구현체가 확장되어 Modulus에서 기본적으로 제공되는 다른 네트워크를 사용할 때도 사용자 정의가 가능합니다. 이번 업데이트에 따른 이점을 더욱 구체적으로 얘기하자면 다음과 같습니다.
- FNO, PINO 및 DeepONet 아키텍처가 개선되어 문제 해결을 위한 초기화, 사용자 정의 및 일반화를 더욱 효율적으로 구현할 수 있습니다.
- Modulus 내에서 Sirens, Fourier Feature 네트워크, FNO/PINO에서 디코더 구간을 위한 Modified Fourier Feature 네트워크 같은 포인트 와이즈 네트워크를 스펙트럼 인코더와 결합하여 새로운 네트워크 구성을 살펴볼 수 있습니다.
- DeepONet의 분기망과 중계망에서 무엇이든 원하는 네트워크를 사용해 광범위한 아키텍처를 실험할 수 있습니다. 중계망에서는 물리 정보 기반 신경망(PINN)이 포함됩니다. DeepONet의 분기망에서는 FNO도 사용 가능합니다.
- 다공성 미디어를 통과하는 Darcy 유동을 모델링한 DeepONet 예제를 사용해 DeepONet 구현을 시연할 수 있습니다.
모델 병렬 처리는 모델 병렬 AFNO와 함께 베타 기능으로 추가되었습니다. 이로써 멀티 GPU에서 채널 차원을 따라 모델을 병렬 처리할 수 있습니다. 이러한 분해 기법 덕분에 FFT와 IFFT도 병렬 방식으로 분산 처리됩니다. 또한 행렬곱이 분할되어, gather, scatter, reductions 등의 루틴이 정방향 및 역방향 패스에 따라 구현될 때 각 GPU가 MLP 레이어의 가중치를 다르게 사용합니다.
그 밖에도 이제 self-scalable tanh(Stan) 활성화 함수가 지원됩니다. Stan은 더욱 우수한 수렴 특성을 보여 PINN 훈련 모델의 정확성을 높이는 것으로 알려져 있습니다.
마지막으로 TorchScript를 통해 Sigmoid Linear Unit(SiLU)의 커널 융합을 지원하는 기능이 PyTorch 기호 기울기 공식의 업스트림 변경과 함께 추가되었습니다. 이 기능은 특히 물리 정보 기반 훈련 시 고차 미분을 계산해야 할 때 최대 1.4배까지 가속할 수 있기 때문에 유용합니다.
모델링 개선 및 훈련 기능
이번 NVIDIA Modulus 릴리스에서는 모델링 요소가 개선되어 편미분 방정식(PDE)이 신경망 모델에 더욱 정확하게 매핑될 뿐만 아니라 훈련 수렴이 빨라집니다.
새로운 Modulus 권장 사례를 따르면 PDE 스케일링 및 무차원화가 용이하여 다음과 같이 시스템 단위를 정확하게 스케일링하는 데 도움이 될 수 있습니다.
- 값과 단위를 사용한 물리량 정의
- 무차원화된 객체의 인스턴스화를 통한 물리량 스케일링
- 대수 조작을 통해 무차원화된 물리량 추적
- 후처리 목적으로 사용자 지정 단위를 사용해 무차원화된 물리량을 원하는 물리량으로 다시 스케일링
또한 이제는 시스템 내에서 Selective Equations Term Suppression(SETS)을 사용해 여러 가지 스케일을 효과적으로 처리할 수도 있습니다. 이를 통해 동일한 PDE 인스턴스를 다르게 생성하거나 PDE에서 일정 항을 동결하는 것도 가능합니다. 그러면 작은 스케일일수록 손실이 최소화되어 PINN에서 경직성 PDE에 대한 수렴이 개선됩니다.
또한 Hydra 구성 YAML 파일을 통해 새롭게 설정된 Modulus API를 사용하면 총 손실 또는 개별 손실 항이나 그 밖에 사용자 지정 지표 같은 수렴 기준에 따라 훈련을 종료할 수 있습니다.
새로운 인과 가중치 적용 방법은 연속 시간 PINN에서 과도적 문제로 인해 물리 인과성을 위반하는 바이어스를 해결합니다. 잔차 및 초기 조건에 대한 손실을 재공식화하여 수렴을 개선하고 동적 시스템의 PINNS 정확도를 높일 수 있습니다.
Modulus 훈련 성능, 확장성 및 유용성
NVIDIA Modulus는 항상 훈련 성능과 확장성을 높이는 데 초점을 맞추고 릴리스됩니다. 이번 최신 릴리스에서도 PINN 훈련에서 기울기 계산 속도를 높일 목적으로 FuncTorch가 Modulus에 통합되었습니다. 일반적인 PyTorch Autograd는 역방향 모드 자동 미분을 사용하기 때문에 for 루프에서 행 단위로 Jacobian 항과 Hessian 항을 계산해야 합니다. FuncTorch는 불필요한 가중치 기울기 계산을 제거하고, 역방향/정방향 모드 자동 미분을 결합하여 Jacobian 항과 Hessian 항을 더욱 효율적으로 계산하기 때문에 훈련 성과를 높일 수 있습니다.
Modulus v22.09 설명서를 보면 프레임워크 워크플로의 주요 개념에 대해 쉽고 자세하게 설명하고 있습니다.
Modulus 개요 역시 물리학, 데이터, 그리고 물리학/데이터 중심 모델링 접근법에 따른 예제 기반 워크플로를 추가하여 이해하기 쉽게 개선되었습니다. 이제 Modulus 사용자들은 각 워크플로의 주요 개념과 함께 입문자들을 위한 예제에 따라 단계별로 작성할 수 있습니다.