AWS Elastic Kubernetes Service (EKS)#
RAPIDS 可以通过 Elastic Kubernetes Service (EKS) 部署到 AWS 上。
要运行 RAPIDS,您需要一个可用 GPU 的 Kubernetes 集群。
先决条件#
首先,您需要安装 aws
CLI 工具和 eksctl
CLI 工具,以及用于管理 Kubernetes 的 kubectl
、helm
。
确保您已登录到 aws
CLI。
$ aws configure
创建 Kubernetes 集群#
现在我们可以使用 eksctl
启动一个启用 GPU 的 EKS 集群。
注意
您需要创建或导入一个公共 SSH 密钥才能执行以下命令。在您的 aws 控制台的侧边面板中,位于 EC2 下的 Network & Security > Key Pairs 中,您可以创建密钥对或导入(参见“Actions”下拉菜单)您在本地创建的密钥对。
如果您没有使用默认的 AWS 配置文件,请在以下命令中添加
--profile <your-profile>
。
$ eksctl create cluster rapids \
--version 1.30 \
--nodes 3 \
--node-type=g4dn.xlarge \
--timeout=40m \
--ssh-access \
--ssh-public-key <public key ID> \ # Name assigned during creation of your key in aws console
--region us-east-1 \
--zones=us-east-1c,us-east-1b,us-east-1d \
--auto-kubeconfig
通过此命令,您已启动一个名为 rapids
的 EKS 集群。您已指定应使用 p3.8xlarge
类型的节点。我们还指定了不想安装 NVIDIA 驱动程序,因为我们将使用 NVIDIA Operator 来完成此操作。
要访问集群,我们需要拉取凭据。如果您没有使用默认配置文件,请添加 --profile <your-profile>
。
$ aws eks --region us-east-1 update-kubeconfig --name rapids
安装驱动程序#
由于我们选择了 GPU 节点类型,EKS 将自动为我们安装驱动程序。我们可以通过列出 NVIDIA 驱动程序插件 Pod 来验证这一点。
$ kubectl get po -n kube-system -l name=nvidia-device-plugin-ds
NAME READY STATUS RESTARTS AGE
nvidia-device-plugin-daemonset-kv7t5 1/1 Running 0 52m
nvidia-device-plugin-daemonset-rhmvx 1/1 Running 0 52m
nvidia-device-plugin-daemonset-thjhc 1/1 Running 0 52m
注意
默认情况下,此插件将在每个节点上安装最新版本的 NVIDIA 驱动程序。如果您需要对驱动程序安装进行更多控制,我们建议在创建集群时设置 eksctl create cluster --install-nvidia-plugin=false ...
,然后使用 NVIDIA GPU Operator 自己安装驱动程序。
确认驱动程序已安装后,您就可以测试集群了。
让我们创建一个使用 GPU 计算的示例 Pod,以确保一切正常运行。
cat << EOF | kubectl create -f -
apiVersion: v1
kind: Pod
metadata:
name: cuda-vectoradd
spec:
restartPolicy: OnFailure
containers:
- name: cuda-vectoradd
image: "nvidia/samples:vectoradd-cuda11.6.0-ubuntu18.04"
resources:
limits:
nvidia.com/gpu: 1
EOF
$ kubectl logs pod/cuda-vectoradd
[Vector addition of 50000 elements]
Copy input data from the host memory to the CUDA device
CUDA kernel launch with 196 blocks of 256 threads
Copy output data from the CUDA device to the host memory
Test PASSED
Done
如果在输出中看到 Test PASSED
,您可以确信您的 Kubernetes 集群已正确设置 GPU 计算。
接下来,清理该 Pod。
$ kubectl delete pod cuda-vectoradd
pod "cuda-vectoradd" deleted
安装 RAPIDS#
现在您已在 EKS 上拥有一个启用 GPU 的 Kubernetes 集群,您可以通过任何支持的方法安装 RAPIDS。
清理#
您还可以使用以下命令删除 EKS 集群以停止计费。
$ eksctl delete cluster --region=us-east-1 --name=rapids
Deleting cluster rapids...⠼