Ce référentiel contient des architectures de référence et des cas de test pour la formation de modèles distribués avec Amazon SageMaker Hyperpod, AWS ParallelCluster, AWS Batch et Amazon EKS. Les cas de tests couvrent différents types et tailles de modèles ainsi que différents frameworks et optimisations parallèles (Pytorch DDP/FSDP, MegatronLM, NemoMegatron...).
Les principaux composants de ce répertoire sont :
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
` -- ...
REMARQUE : les architectures sont conçues pour fonctionner avec le bucket S3 et le VPC créés à l'aide des modèles de référence 1.architectures/0.s3/
et 1.architectures/1.vpc_network/
. Il est fortement recommandé de déployer ces deux modèles avant de déployer l'une des architectures de référence.
Vous pouvez suivre l'atelier ci-dessous pour former des modèles sur AWS. Chacun contient des exemples de plusieurs cas de test ainsi que des pépites d'informations sur le fonctionnement d'un cluster pour la formation LLM.
Nom | Commentaires |
---|---|
HyperPod Amazon SageMaker | Atelier pour SageMaker HyperPod, montre comment le déployer et le surveiller |
AWS ParallelCluster | Atelier similaire à HyperPod mais sur ParallelCluster |
Amazon SageMaker HyperPod EKS | Atelier pour SageMaker HyperPod EKS, montre comment le déployer et le surveiller |
Les architectures sont situées dans 1.architectures
et se composent d'architectures utilitaires et liées aux services.
Nom | Catégorie | Usage |
---|---|---|
0.s3 | Stockage | Créer un compartiment S3 |
1.vpc_network | Réseau | Créer un VPC avec les ressources requises pour les sous-réseaux |
2.aws-parallelcluster | Calculer | Modèles de cluster pour la formation GPU et silicium personnalisé |
3.aws-batch | Calculer | Modèle AWS Batch pour la formation distribuée |
4.amazon-eks | Calculer | Fichiers manifestes à entraîner avec Amazon EKS |
5.sagemaker-hyperpod | Calculer | Modèle SageMaker HyperPod pour la formation distribuée |
D'autres viendront, n'hésitez pas à en ajouter de nouveaux (ex. Ray ?). Vous trouverez également de la documentation sur EFA et les variables d'environnement recommandées.
Des images de machine personnalisées peuvent être créées à l'aide de Packer pour AWS ParallelCluster, Amazon EKS et plain EC2. Ces images sont basées sur les rôles et les playbooks Ansible.
Tous les cas de test sont sous 3.test_cases/
. Vous pouvez accéder à chaque répertoire de cas de test pour savoir comment l'exécuter.
Cas de tests | Slurm | Kubernetes | Lot 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 | ✅ | ❓ | ❓ |
Les scripts utilitaires et les exemples de micro-benchmarks sont définis sous 4.validation_scripts/
. L’exportateur EFA Prometheus se trouve dans ce répertoire
Nom | Commentaires |
---|---|
1.pytorch-env-validation | Valide votre environnement PyTorch |
3.efa-node-exporter | Exportateur de nœuds avec modules de surveillance Amazon EFA |
4.prometheus-grafana | Actifs de déploiement pour surveiller les clusters SageMaker Hyperpod |
5.nsight | Montre comment exécuter Nvidia Nsight Systems pour profiler votre charge de travail |
efa-versions.py | Obtenez les versions des bibliothèques Nvidia, des pilotes et des pilotes EFA |
Les tests d'intégration sont écrits en pytest. Exécutez simplement :
pytest .
Vous pouvez également exécuter des tests sans capturer la sortie standard et conserver toutes les images Docker et les autres artefacts.
pytest -s --keep-artifacts=t
Merci à tous les contributeurs pour la construction, la révision et les tests.