GPU 管理器配置文件目录
本目录包含 GPU 资源管理和监控相关的配置文件模板,支持多云环境下的 GPU 集群部署、性能优化和监控告警。
目录结构
configs/
├── cloud/ # 云平台 GPU 集群配置
│ ├── aws-eks-gpu-cluster.yaml # AWS EKS GPU 集群配置
│ ├── azure-aks-gpu-setup.sh # Azure AKS GPU 集群部署脚本
│ └── gcp-gke-gpu-setup.sh # GCP GKE GPU 集群部署脚本
├── cuda/ # CUDA 相关配置
│ ├── cuda-mps-config.yaml # CUDA MPS 多进程服务配置
│ └── cuda-streams-config.yaml # CUDA 流配置
├── docker/ # Docker GPU 配置
│ └── docker-gpu-config.yaml # Docker GPU 资源预留配置
├── hami/ # HAMi GPU 管理系统
│ └── hami-deployment.yaml # HAMi v2.6.0 部署配置
├── kubernetes/ # Kubernetes GPU 配置
│ └── gpu-pod-templates.yaml # GPU Pod 模板集合
├── monitoring/ # 监控和告警配置
│ ├── grafana-gpu-dashboard.json # Grafana GPU 监控仪表板
│ └── prometheus-gpu-config.yaml # Prometheus GPU 监控配置
└── scripts/ # 工具脚本
├── gpu-benchmark-suite.sh # GPU 基准测试套件
└── multicloud-gpu-scheduler.sh # 多云 GPU 调度脚本
配置文件详细说明
云平台 GPU 集群配置 (cloud/)
aws-eks-gpu-cluster.yaml
- 功能: AWS EKS GPU 集群自动化部署配置
- 核心配置:
- 使用
eksctl配置 GPU 集群 - 节点组配置: p3.2xlarge 实例 (NVIDIA Tesla V100)
- 自动伸缩配置: 1-5 个 GPU 节点
- 污点和标签配置用于 GPU 节点调度
- 使用
azure-aks-gpu-setup.sh
- 功能: Azure AKS GPU 集群部署脚本
- 核心功能:
- 使用
az aks创建 GPU 集群 - 配置 NC 系列 GPU 虚拟机
- 安装 NVIDIA 设备插件
- 设置 GPU 节点标签和污点
- 使用
gcp-gke-gpu-setup.sh
- 功能: GCP GKE GPU 集群部署脚本
- 核心功能:
- 使用
gcloud container创建 GPU 集群 - 配置 A100/V100/T4 GPU 节点
- 部署 NVIDIA GPU 驱动
- 设置节点池自动伸缩
- 使用
CUDA 配置 (cuda/)
cuda-mps-config.yaml
- 功能: CUDA Multi-Process Service 配置
- 核心配置:
- MPS 管道和日志目录配置
- MPS 用户和服务配置
- 资源限制和 QoS 设置
- Kubernetes ConfigMap 格式部署脚本
cuda-streams-config.yaml
- 功能: CUDA 流并发配置
- 核心配置:
- 流优先级和同步配置
- 内存分配策略
- 并发执行参数优化
- 性能监控指标
Docker GPU 配置 (docker/)
docker-gpu-config.yaml
- 功能: Docker GPU 资源预留和限制配置
- 核心配置:
- GPU 设备访问控制
- 内存和计算资源限制
- 容器运行时配置
- 多 GPU 设备映射
HAMi GPU 管理系统 (hami/)
hami-deployment.yaml
- 功能: HAMi v2.6.0 GPU 管理系统部署
- 核心配置:
hami-system命名空间配置- ServiceAccount 和 ClusterRole 权限
- 控制器和调度器部署
- 自定义资源定义 (CRD)
Kubernetes GPU 配置 (kubernetes/)
gpu-pod-templates.yaml
- 功能: 多种 GPU 工作负载 Pod 模板
- 包含模板:
- 基础 GPU 测试 Pod (
nvidia-smi) - GPU 训练工作负载 Pod (PyTorch)
- 推理服务 Pod (TensorRT)
- 多 GPU 并行训练 Pod
- 监控和性能分析 Pod
- 基础 GPU 测试 Pod (
监控配置 (monitoring/)
prometheus-gpu-config.yaml
- 功能: Prometheus GPU 监控配置
- 核心配置:
- GPU 指标抓取配置 (DCGM exporter)
- 告警规则定义
- 服务发现和标签重写
- 集群范围监控设置
grafana-gpu-dashboard.json
- 功能: Grafana GPU 监控仪表板
- 核心功能:
- GPU 利用率监控
- 内存使用情况
- 温度和功耗监控
- 多集群和多节点支持
- 实时性能图表
工具脚本 (scripts/)
gpu-benchmark-suite.sh
- 功能: 全面的 GPU 性能基准测试套件
- 测试类型:
- 计算性能测试 (FLOPS)
- 内存带宽测试
- 张量核心性能
- 多 GPU 扩展性
- 延迟和吞吐量测试
multicloud-gpu-scheduler.sh
- 功能: 多云 GPU 资源调度脚本
- 支持平台:
- AWS EKS
- Azure AKS
- GCP GKE
- 本地 Kubernetes 集群
- 调度功能:
- GPU 类型选择 (A100/V100/T4/P100)
- 资源配额管理
- 成本优化调度
- 跨云集群联邦
使用指南
快速开始
-
部署云 GPU 集群:
# AWS EKS eksctl create cluster -f configs/cloud/aws-eks-gpu-cluster.yaml # Azure AKS bash configs/cloud/azure-aks-gpu-setup.sh # GCP GKE bash configs/cloud/gcp-gke-gpu-setup.sh -
部署监控系统:
# 部署 Prometheus kubectl apply -f configs/monitoring/prometheus-gpu-config.yaml # 部署 Grafana 仪表板 kubectl apply -f configs/monitoring/grafana-gpu-dashboard.json -
运行 GPU 基准测试:
bash configs/scripts/gpu-benchmark-suite.sh all ./results 5 -
调度多云 GPU 任务:
bash configs/scripts/multicloud-gpu-scheduler.sh aws a100 2 training
配置自定义
所有配置文件都支持环境变量和参数化配置,主要配置方式:
- 环境变量替换: 使用
${VARIABLE_NAME}语法 - 命令行参数: 脚本文件支持命令行参数
- 配置文件覆盖: 使用
kubectl patch或kubectl edit - 模板化部署: 使用 Helm 或 Kustomize 进行配置管理
最佳实践
- 资源限制: 所有 GPU Pod 都应设置适当的资源限制
- 监控告警: 部署完整的监控栈并及时响应告警
- 备份恢复: 定期备份重要配置和集群状态
- 安全加固: 遵循最小权限原则,定期更新安全补丁
- 成本优化: 使用自动伸缩和 spot 实例降低成本
故障排除
常见问题
-
GPU 设备未识别:
- 检查 NVIDIA 驱动安装
- 验证设备插件部署
- 检查节点污点配置
-
性能问题:
- 运行基准测试确认硬件性能
- 检查资源限制和配额
- 监控温度和功耗
-
调度失败:
- 检查资源可用性
- 验证节点选择器和亲和性
- 检查命名空间配额
日志和调试
# 查看 GPU 节点状态
kubectl describe nodes | grep -A 10 -B 10 nvidia
# 查看设备插件日志
kubectl logs -n kube-system -l name=nvidia-device-plugin
# 查看 HAMi 调度器日志
kubectl logs -n hami-system -l app=hami-scheduler
版本兼容性
| 组件 | 版本要求 | 测试版本 |
|---|---|---|
| Kubernetes | ≥ 1.20 | 1.28 |
| Docker | ≥ 20.10 | 24.0 |
| NVIDIA Driver | ≥ 525.60 | 535.54 |
| CUDA | ≥ 11.8 | 12.2 |
| HAMi | ≥ 2.5.0 | 2.6.0 |