Rescale の NVIDIA Modulus を使用した AI 対応の研究開発

概要

このチュートリアルでは、Modulus を簡単に使い始めて、計算手法を検証するための一般的な物理問題である蓋駆動キャビティ問題を実行する方法を説明します。 この問題は従来の CFD 手法でも解決できますが、Modulus は、研究開発およびエンジニアリング シナリオにおける初期設計の発見を加速できる AI 支援手法を使用している点で独特です。 

NVIDIA Modulus   ニューラルネットワークフレームワーク これは、支配偏微分方程式 (PDE) の形で物理の力をデータと組み合わせて、ほぼリアルタイムの応答を持つパラメーター化された代理モデルを構築します。 NVIDIA Modulus は、AI 主導の物理問題、設計に関する作業をサポートできます。 デジタルツイン 複雑な非線形、マルチ物理システムのモデル、解決 パラメータ化されたジオメトリ逆問題. デジタルツイン は、創薬などの分子レベルから気候変動などの地球規模の課題に至るまで、さまざまな問題に取り組むための強力なツールとして登場しました。 NVIDIA Modulus は、複雑で動的なシステムの高精度なデジタル複製を構築するためのフレームワークを科学者に提供し、幅広い業界にわたって次世代のブレークスルーを可能にします。 通常、大規模な計算リソースを必要とするこれらの問題に対して、Rescale は、作業に最適なハードウェアと、AI ワークフローを構築するために必要なすべての資産を XNUMX か所で提供できます。 

Modulus は、Rescale コマンド ラインを使用したバッチ ジョブを使用するか、Rescale ワークステーションを対話的に使用することで簡単に実行できます。 以下のチュートリアルの手順を参照してください。

バッチジョブ(マルチノード)

をクリックすると、サンプル ジョブ (蓋駆動キャビティ フロー) にアクセスして直接起動できます。 インポート ジョブ ボタンをクリックするか、 をクリックして結果を表示します。 Get Job Results 下のボタン。

これにより、Rescale (Modulus V21.06 を使用) の他のユースケース例にアクセスできます。 これには、頭蓋内動脈瘤の血流、共役熱伝達のマルチフィジックス シミュレーション、パラメータ化されたシミュレーションと設計が含まれます。 最適化、3D ヒートシンク、その他多くの可能性があります。

Rescale でバッチ ジョブを実行する手順

入力ファイルの選択

ジョブ ファイル (この場合は Modulus Python スクリプト) をアップロードします。 これらは選択すると自動的にロードされます インポートジョブのセットアップ 上記。

ソフトウェアを選択

このチュートリアルでは、Singularity (Apptainer) を使用します。 コンテナ Modulus コンテナをロードし、そのコンテナ上でバッチ ジョブを実行します。 またはマルチノード。 

一般的なバッチ ジョブの場合、事前に入力された cmd ラインを直接変更できます。 このコマンドは自動的にすべての GPU ハードウェア設定で選択されています。

mpirun -np $[$RESCALE_GPUS_PER_NODE*$RESCALE_NODES_PER_SLOT] -N $RESCALE_GPUS_PER_NODE singularity exec --nv /usr/bin/Modulus_v21.06.sif python <your-code.py>

ノート

  1. 追加できます –xla=真 上記の cmd の最後に、トレーニングを加速するための Accelerated Linear Algebra (XLA) が追加されます。
  2. マルチノードのバッチ ジョブの場合、最初にフォルダー「network_checkpoint」を検出できない場合があるため、最初に「network_checkpoint_XXX」という名前のフォルダーを作成できます。 例えば

例 (マルチノード):

mkdir network_checkpoint_ldc_2d 
mpirun -np $[$RESCALE_GPUS_PER_NODE*$RESCALE_NODES_PER_SLOT] -N 
$RESCALE_GPUS_PER_NODE singularity exec --nv /usr/bin/Modulus_v21.06.sif python 
ldc_2d.py

Hardware

推奨される再スケール コアタイプ:

  • アンケライト、セレスティン (NVIDIA A100)
  • ドロマイト、アクアマリン V3 (NVIDIA V100)
  • アクアマリン V2 (NVIDIA P100)

process_output.log で出力を確認してください。

をクリックしてターミナルを開くこともできます。 新しいウィンドウで開く ボタンと実行中 NVIDIA-smi GPU の使用状況を監視します。 すべての結果ファイルにアクセスするには、次を実行します。 cd ~/work/shared.

トレーニングされた結果を含むすべての結果ファイルにアクセスするには 、次のコマンドを実行して、共有ディレクトリに移動します。

$ cd ~/work/shared 

代替モデルは、さまざまな境界条件の下で蓋駆動のキャビティ フロー フィールドについてクエリできるようになりました。

ご覧のとおり、マウスを数回クリックするだけで、ユーザーはマルチ GPU およびマルチノードのスケーリングを使用して Modulus ジョブを実行できます。 バッチジョブ リスケールで。 バッチ ジョブ ワークフローでは Jupyter Notebook と SSH コンソールを有効にしていますが、 可視化 ジョブ実行中の能力は制限されています。 次のセクションでは、Modulus ジョブを対話的に実行する手順を示します。

インタラクティブなワークフロー (マルチノード)

をクリックすると、サンプル ジョブ (蓋駆動キャビティ フロー) にアクセスして直接起動できます。 Import Job Setup ボタンをクリックするか、 をクリックして結果を表示します。 Get Job Results 下のボタン。

現在地に最も近い エンドツーエンドのデスクトップ ジョブタイプ。 入力ファイル、ソフトウェアの選択、ハードウェアの設定はバッチ ジョブのワークフローと同じです。

ジョブの実行後、次のコマンドを使用してターミナルを開くことができます。 お問合せ 上部のボタンをクリックしてデスクトップに入ります。

バッチ ジョブと同様に、Modulus を実行する MPI cmd を次に示します。 .

$ cd ~/work/shared 
$ mpirun -np $[$RESCALE_GPUS_PER_NODE*$RESCALE_NODES_PER_SLOT] -N 
$RESCALE_GPUS_PER_NODE singularity exec --nv /usr/bin/Modulus_v21.06.sif python 
<your-code.py>

Jupyter Notebook

新しい SSH ターミナルを開き、作業ディレクトリに移動し、次のようにして Modulus コンテナをロードします。

$ cd ~/work/shared
$ singularity shell --nv /usr/bin/Modulus_v21.06.sif

そしてその中で対話型シェルを実行します。 

$ jupyter notebook list

これには、トークンと URL リンクが表示されます。 URLをコピーします。 jupyter ノートブックを起動します。

$ jupyter notebook

DCV Web ブラウザの URL の上に貼り付けて、警告を受け入れます。

テンソルボード

次のようにして、特異点コンテナ内でテンソルボードを開始することもできます。

$ tensorboard --logdir=./

貼り付ける https://localhost:6006/ DCV Web ブラウザで収束を確認できます。

パラビュー

https://catalog.ngc.nvidia.com/orgs/nvidia-hpcvis/containers/paraview-index

新しいターミナルを開いてイメージをプルします

$ singularity pull docker://nvcr.io/nvidia-hpcvis/paraview-index:5.7.0-egl-pvw

結果データフォルダーを結合して画像を開始します。 たとえば、次のディレクトリでパラビューを開始します。 ~/仕事/共有 で:

$ singularity run --nv -B ${PWD}/network_checkpoint_ldc_2d:/data
paraview-index_5.7.0-egl-pvw.sif

ここでは、val_domain/results/ *.vtu 形式のファイルを視覚化します。 DCV Web ブラウザでパラビューを開くには、次のようにします。 https://localhost:8080/ そして結果を確認してください。

Rescale での対話型ジョブとしての Modulus の実行の概要

インタラクティブなジョブを通じて、ユーザーはコードを開発し、ニューラル ネットワークのトレーニング プロセスを監視し、XNUMX つのジョブ内で後処理を行うことができます。 インタラクティブなジョブでは、仮想上でモデルを開発およびプロトタイピングする際に、ビジュアライゼーションやその他のツールを使用できます。 Rescale の最新の NVIDIA GPU ハードウェアを搭載。 これにより、オンプレミスにアクセスできないワークステーション上でモデルを開発およびテストできます。 さらに、必要に応じて、インタラクティブな GUI 環境を維持しながら、Singularity (Apptainer) コンテナー ランタイムを使用して開発ワークフローを複数のノードにスケールアウトできます。

概要と追加リソース

このチュートリアルが Rescale で Modulus の実行を開始するのに役立つことを願っています。 ご覧のとおり、Rescale バッチ ジョブを通じてマルチノード GPU を使用して Modulus ワークフローを実行できます。 または、Rescale End-to-End Desktop ジョブで Modulus やその他のツールを対話的に実行して、コードの開発、トレーニングのモニタリング、および複数の GPU を備えた仮想ワークステーションでの結果の後処理を行うこともできます。 当社のプラットフォームは、選択できるさまざまな GPU アーキテクチャと、AI ワークフローの構築に必要なすべての資産を提供します。

Modulus を使用して、迅速な実行のためのサロゲート モデルを生成できます。 デザインの探求 勉強します。 これは、流体力学から構造力学、学際的な最適化に至るまで、PDE (偏微分方程式) の形式で表現できるほぼすべての工学設計問題に適用できます。 詳細については、を参照してください。 NVIDIA モジュラスのドキュメントNVIDIA GTC 2022 での Resale の Modulus プレゼンテーション.