awslabs/awsome-distributed-ai
GitHub: awslabs/awsome-distributed-ai
该项目汇集了在 AWS 上进行大规模分布式 AI 训练的最佳实践、参考架构、测试用例及监控工具。
Stars: 461 | Forks: 198
# ML 训练参考架构与测试
此仓库包含使用 [Amazon SageMaker HyperPod](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod.html)、[AWS ParallelCluster](https://docs.aws.amazon.com/parallelcluster/latest/ug/what-is-aws-parallelcluster.html)、[AWS Parallel Computing Service (PCS)](https://aws.amazon.com/pcs/)、[AWS Batch](https://docs.aws.amazon.com/batch/latest/userguide/what-is-batch.html) 和 [Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/getting-started-console.html) 进行分布式模型训练的参考架构和测试用例。测试用例涵盖了不同类型和大小的模型,以及不同的框架和并行优化(PyTorch DDP/FSDP、Megatron-LM、NeMo 等)。
此目录的主要组成部分是:
```
├── 1.architectures/ # CloudFormation templates for reference architectures
├── 2.ami_and_containers/ # Scripts to create AMIs and container images
├── 3.test_cases/ # Reference test cases and/or benchmark scripts
├── 4.validation_and_observability/# Tools to measure performance or troubleshoot
└── micro-benchmarks/ # Micro-benchmarks (NCCL, NCCOM, NVSHMEM, etc.)
```
**注意**:这些架构设计为与使用参考模板 `1.architectures/0.common/` 和 `1.architectures/1.vpc_network/` 创建的 S3 存储桶和 VPC 配合使用。_强烈建议您在部署任何参考架构**之前**,先部署这两个模板。_
## 0. 研讨会
| 名称 | 备注 |
| ---------------------------------------------------------------------------------- | ----------------------------------------------------------- |
| [SageMaker HyperPod 上的 AI](https://awslabs.github.io/ai-on-sagemaker-hyperpod/) | 关于 SageMaker HyperPod 的研讨会,展示如何部署和监控它 |
| [AWS ParallelCluster](https://catalog.workshops.aws/ml-on-aws-parallelcluster) | 与 HyperPod 类似的研讨会,但在 ParallelCluster 上进行 |
| [AWS Parallel Computing Service](https://catalog.workshops.aws/ml-on-pcs) | 与 HyperPod 类似的研讨会,但在 AWS Parallel Computing Service 上进行 |
## 博客
关于在 AWS 上进行分布式 ML 训练的文章发布在 。Hugo 源码位于 [`content`](https://github.com/awslabs/awsome-distributed/tree/content) 分支。
## 1. 架构
架构位于 `1.architectures` 中,包含实用工具和服务相关的架构。
| 名称 | 类别 | 用途 |
| ------------------------------------------------------------------------------ | ------ | ----------------------------------------------------- |
| [`0.common`](./1.architectures/0.common) | 存储 | 公共资源(S3 存储桶、事件通知) |
| [`1.vpc_network`](./1.architectures/1.vpc_network) | 网络 | 创建具有子网和所需资源的 VPC |
| [`2.aws-parallelcluster`](./1.architectures/2.aws-parallelcluster) | 计算 | 用于 GPU 和自定义芯片训练的集群模板 |
| [`3.aws-batch`](./1.architectures/3.aws-batch) | 计算 | 用于分布式训练的 AWS Batch 模板 |
| [`4.amazon-eks`](./1.architectures/4.amazon-eks) | 计算 | 使用 Amazon EKS 进行训练的清单文件 |
| [`5.sagemaker-hyperpod`](./1.architectures/5.sagemaker-hyperpod) | 计算 | 用于分布式训练的 SageMaker HyperPod 模板 |
| [`6.ldap_server`](./1.architectures/6.ldap_server) | 身份 | 用于多用户集群访问的 LDAP 服务器 |
| [`7.sagemaker-hyperpod-eks`](./1.architectures/7.sagemaker-hyperpod-eks) | 计算 | 具有 EKS 编排的 SageMaker HyperPod |
| [`8.accounting-database`](./1.architectures/8.accounting-database) | 工具 | 用于任务跟踪的记账数据库 |
| [`aws-pcs`](./architectures/aws-pcs) | 计算 | 带有 Slurm 调度器的 AWS Parallel Computing Service 模板 |
您还会找到关于 EFA 和推荐环境变量的[文档](./1.architectures/efa-cheatsheet.md)。
## 2. 自定义 Amazon Machine Image
可以使用 [Packer](https://www.packer.io) 为 AWS ParallelCluster、Amazon EKS 和普通 EC2 构建自定义机器镜像。这些镜像基于 Ansible 角色和 playbook。
## 3. 测试用例
测试用例按框架(例如 `pytorch/`、`megatron/`、`jax/`)组织在 `3.test_cases/` 下。在每个框架中,目录以训练库或方法命名(例如 `picotron/`、`FSDP/`、`megatron-lm/`)。
每个测试用例都遵循以下通用结构:
```
3.test_cases/
└── / # e.g. pytorch, megatron, jax
└── / # e.g. picotron, FSDP, megatron-lm
└── / # e.g. SmolLM-1.7B (may be omitted for single-model cases)
├── Dockerfile # Container / environment setup
├── README.md
├── slurm/ # Slurm-specific launch scripts
├── kubernetes/ # Kubernetes manifests
└── hyperpod-eks/ # HyperPod EKS instructions
```
每个测试用例的顶级目录包含总体介绍和环境设置(Dockerfile、训练脚本、配置),而子目录提供服务特定的启动说明。
浏览 [`3.test_cases/`](./3.test_cases) 以查看可用框架和测试用例的完整列表。
## 4. 验证与可观测性
用于验证您的环境和监控训练任务的实用脚本和工具位于 `4.validation_and_observability/` 下。
| 名称 | 备注 |
| ----------------------------------------------------------------------------------------------- | ------------------------------------------------------------- |
| [`1.pytorch-env-validation`](./4.validation_and_observability/1.pytorch-env-validation) | 验证您的 PyTorch 环境 |
| [`2.gpu-cluster-healthcheck`](./4.validation_and_observability/2.gpu-cluster-healthcheck) | GPU 集群健康检查 |
| [`3.efa-node-exporter`](./4.validation_and_observability/3.efa-node-exporter) | 带有 Amazon EFA 监控模块的 Node exporter |
| [`4.prometheus-grafana`](./4.validation_and_observability/4.prometheus-grafana) | 用于 SageMaker HyperPod 和 EKS GPU 集群的监控 |
| [`5.nsight`](./4.validation_and_observability/5.nsight) | 展示如何运行 Nvidia Nsight Systems 来分析您的工作负载 |
## 5. 微基准测试
用于评估网络和通信性能的微基准测试位于 `micro-benchmarks/` 下。
| 名称 | 备注 |
| --------------------------------------------------------------------- | --------------------------------------------- |
| [`nccl-tests`](./micro-benchmarks/nccl-tests) | NCCL 集合通信基准测试 |
| [`nccom-tests`](./micro-benchmarks/nccom-tests) | NCCOM 通信基准测试 |
| [`nvshmem`](./micro-benchmarks/nvshmem) | NVSHMEM 基准测试 |
| [`expert-parallelism`](./micro-benchmarks/expert-parallelism) | 专家并行 (MoE) 基准测试 |
标签:Yelp, 凭据扫描, 子域名突变, 系统提示词, 自定义请求头