このリポジトリには、Amazon SageMaker Hyperpod、AWS ParallelCluster、AWS Batch、Amazon EKS を使用した分散モデルトレーニングのリファレンスアーキテクチャとテストケースが含まれています。テスト ケースは、さまざまなタイプとサイズのモデル、さまざまなフレームワークと並列最適化 (Pytorch DDP/FSDP、MegatronLM、NemoMegatron...) をカバーします。
このディレクトリの主なコンポーネントは次のとおりです。
reference-architectures/
| -- 1.architectures/ # CloudFormation templates for reference arch
| -- 2.ami_and_containers/ # Scripts to create AMIs and container images
| -- 3.test_cases/ # Reference test cases and/or benchmark scripts
| -- 4.validation_observability/ # Tools to measure performance or troubleshoot
` -- ...
注: アーキテクチャは、参照テンプレート1.architectures/0.s3/
および1.architectures/1.vpc_network/
を使用して作成された S3 バケットおよび VPC で動作するように設計されています。リファレンス アーキテクチャをデプロイする前に、これら 2 つのテンプレートをデプロイすることを強くお勧めします。
以下のワークショップに従って、AWS でモデルをトレーニングできます。それぞれには、いくつかのテスト ケースの例と、LLM トレーニング用のクラスターの操作に関する情報が含まれています。
名前 | コメント |
---|---|
Amazon SageMaker ハイパーポッド | SageMaker HyperPod のワークショップ、それをデプロイおよび監視する方法を示します |
AWS パラレルクラスター | HyperPod と同様のワークショップですが、ParallelCluster を使用します |
Amazon SageMaker HyperPod EKS | SageMaker HyperPod EKS のワークショップ、それをデプロイおよび監視する方法を示します |
アーキテクチャは1.architectures
にあり、ユーティリティとサービス関連のアーキテクチャで構成されます。
名前 | カテゴリ | 使用法 |
---|---|---|
0.s3 | ストレージ | S3バケットを作成する |
1.vpc_network | ネットワーク | サブネットに必要なリソースを含む VPC を作成する |
2.aws-parallelcluster | コンピューティング | GPU およびカスタム シリコン トレーニング用のクラスター テンプレート |
3.aws-batch | コンピューティング | 分散トレーニング用の AWS Batch テンプレート |
4.amazon-eks | コンピューティング | Amazon EKS でトレーニングするマニフェストファイル |
5.sagemaker-hyperpod | コンピューティング | 分散トレーニング用の SageMaker HyperPod テンプレート |
さらに多くのものが追加される予定です。新しいものを自由に追加してください (例: Ray?)。 EFA と推奨される環境変数のドキュメントもあります。
カスタム マシン イメージは、Packer for AWS ParallelCluster、Amazon EKS、およびプレーン EC2 を使用して構築できます。これらのイメージは、Ansible のロールとプレイブックに基づいています。
すべてのテスト ケースは3.test_cases/
下にあります。各テスト ケースのディレクトリに移動して、テスト ケースの実行方法を学習できます。
テストケース | スラーム | Kubernetes | AWSバッチ |
---|---|---|---|
1.megatron-lm | ✅ | ✅ | ❓ |
2.nemo-launcher | ✅ | ✅ | |
3.MPT | ✅ | ❓ | ❓ |
4.DDP | ✅ | ❓ | ❓ |
5.param-benchmark | ✅ | ❓ | ❓ |
6.stable-diffusion | ✅ | ✅ | ❓ |
7.tensorflow-distributed | ✅ | ❓ | ❓ |
10.FSDP | ✅ | ✅ | ❓ |
11.modelparallel | ✅ | ❓ | ❓ |
12.SM-dataparallel-FSDP | ✅ | ❓ | ❓ |
13.SM-dataparallel-deepspeed | ✅ | ❓ | ❓ |
14.bionemo | ✅ | ❓ | ❓ |
15.gpt-neox | ✅ | ❓ | ❓ |
16.pytorch-cpu-ddp | ✅ | ✅ | ❓ |
17.SM-modelparallelv2 | ✅ | ❓ | ❓ |
18.deepspeed | ✅ | ❓ | ❓ |
jax | ✅ | ❓ | ❓ |
ユーティリティ スクリプトとマイクロベンチマークのサンプルは4.validation_scripts/
に設定されています。 EFA Prometheus エクスポーターはこのディレクトリにあります。
名前 | コメント |
---|---|
1.pytorch-env-validation | PyTorch 環境を検証します |
3.efa-node-exporter | Amazon EFA モニタリングモジュールを備えたノードエクスポーター |
4.prometheus-grafana | SageMaker Hyperpod Cluster を監視するためのデプロイメント資産 |
5.nsight | Nvidia Nsight Systems を実行してワークロードをプロファイリングする方法を示します |
efa-versions.py | Nvidia ライブラリ、ドライバー、EFA ドライバーのバージョンを取得する |
統合テストは pytest で記述されます。ただ実行してください:
pytest .
あるいは、stdout をキャプチャせずに、すべての Docker イメージを他のアーティファクトに保持せずにテストを実行することもできます。
pytest -s --keep-artifacts=t
構築、レビュー、テストにご協力いただいたすべての貢献者に感謝します。