

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 SageMaker HyperPod EKS 叢集上使用 Amazon EBS CSI 驅動程式
<a name="sagemaker-hyperpod-eks-ebs"></a>

SageMaker HyperPod 支援 Amazon Elastic Block Store (Amazon EBS) 容器儲存介面 (CSI) 驅動程式，其可管理 Amazon EBS 磁碟區的生命週期，作為您所建立磁碟區的儲存體。透過 Amazon EBS CSI 驅動程式，您可以使用 Amazon EKS 協同運作，為在 SageMaker HyperPod 叢集上執行的機器學習工作負載建立、連接和管理 Amazon EBS 磁碟區。

**Topics**
+ [金鑰儲存功能](#sagemaker-hyperpod-eks-ebs-features)
+ [使用案例](#sagemaker-hyperpod-eks-ebs-use)
+ [在 SageMaker HyperPod EKS 叢集上設定 Amazon EBS CSI 驅動程式](#sagemaker-hyperpod-eks-ebs-setup)
+ [使用 API](#sagemaker-hyperpod-eks-ebs-setup-apis)

## 金鑰儲存功能
<a name="sagemaker-hyperpod-eks-ebs-features"></a>

SageMaker HyperPod 上的 Amazon EBS CSI 驅動程式支援下列儲存功能。
+ 靜態佈建：將預先建立的 Amazon EBS 磁碟區與 Kubernetes [持久性磁碟區](https://kubernetes.io/docs/concepts/storage/persistent-volumes/)建立關聯，以用於您的 Pod 中。
+ 動態佈建：從 [https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims) 自動建立 Amazon EBS 磁碟區和相關聯的持久性磁碟區。可以透過 [https://kubernetes.io/docs/concepts/storage/storage-classes/](https://kubernetes.io/docs/concepts/storage/storage-classes/) 傳遞參數，以精細控制磁碟區建立。
+ 磁碟區大小調整：透過更新 [https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims) 大小規格來擴充現有磁碟區，而不會中斷執行中的工作負載。這對於處理不斷增長的模型儲存庫或適應較大的節點而不中斷服務至關重要。
+ 磁碟區快照：建立磁碟區的時間點快照，以進行備份、復原和資料版本控制。
+ 區塊磁碟區：為需要直接儲存體存取的高效能應用程式提供原始區塊型儲存設備存取。
+ 磁碟區修改：使用[磁碟區屬性類別](https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/)變更磁碟區屬性，例如類型、每秒輸入或輸出操作 (IOPS) 或輸送量。

如需 Amazon EBS CSI 驅動程式的詳細資訊，請參閱《Amazon EKS 使用者指南》**中的[使用 Kubernetes 磁碟區儲存體搭配 Amazon EBS](https://docs.aws.amazon.com/eks/latest/userguide/ebs-csi.html)。

如需叢集中 Pod 儲存體的詳細資訊，請參閱「Kubernetes 文件」**中的[儲存體](https://kubernetes.io/docs/concepts/storage/)。

## 使用案例
<a name="sagemaker-hyperpod-eks-ebs-use"></a>

Amazon EBS CSI 驅動程式整合可為 SageMaker HyperPod EKS 叢集上的訓練和推論工作負載啟用數個關鍵使用案例。

**訓練工作負載**
+ 資料集儲存體：為跨 Pod 重新啟動持續存在的訓練資料集佈建磁碟區
+ 檢查點儲存體：儲存模型檢查點和中繼訓練結果
+ 共用成品：跨多個訓練任務存取常見資料集和模型成品

**推論工作負載**
+ 模型儲存體：根據模型要求動態佈建適當大小的磁碟區
+ 容器快取：建立暫時性儲存體，以提升推論效能
+ 事件記錄：使用持久性儲存體來存放推論結果和日誌

## 在 SageMaker HyperPod EKS 叢集上設定 Amazon EBS CSI 驅動程式
<a name="sagemaker-hyperpod-eks-ebs-setup"></a>

Amazon Elastic Block Store (Amazon EBS) 容器儲存介面 (CSI) 驅動程式可讓您動態佈建和管理 Amazon EBS 磁碟區，以用於透過 EKS 協同運作在 SageMaker HyperPod 叢集上執行的容器化工作負載。本節將逐步引導您安裝和設定 Amazon EBS CSI 驅動程式，為您的機器學習工作負載啟用持久性儲存體。

### 先決條件
<a name="sagemaker-hyperpod-eks-ebs-setup-prerequisite"></a>

開始之前，請執行以下動作：
+ [安裝和設定 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)
+ [使用 Amazon EKS 協同運作建立 SageMaker HyperPod 叢集](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-operate-console-ui-create-cluster.html)
+ 使用版本 [v1.47.0](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/blob/master/CHANGELOG.md#v1470) 安裝 Amazon EBS CSI 驅動程式

### 額外許可
<a name="sagemaker-hyperpod-eks-ebs-setup-permissions"></a>

若要設定 Amazon EBS CSI 驅動程式附加元件，請遵循《Amazon EKS 使用者指南》**中的[使用 Kubernetes 磁碟區儲存體搭配 Amazon EBS](https://docs.aws.amazon.com/eks/latest/userguide/ebs-csi.html)。您也應該將下列額外許可新增至用來執行驅動程式附加元件的 IAM 角色。請注意，這是在您的服務帳戶組態中為驅動程式附加元件指定的 IAM 角色，而不是 HyperPod 叢集執行角色。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":
    [
        {
            "Effect": "Allow",
            "Action":
            [
                "sagemaker:AttachClusterNodeVolume",
                "sagemaker:DetachClusterNodeVolume"
            ],
            "Resource": "arn:aws:sagemaker:{{us-east-1}}:{{111122223333}}:cluster/*"
        },
        {
            "Effect": "Allow",
            "Action":
            [
                "eks:DescribeCluster"
            ],
            "Resource": "arn:aws:eks:{{us-east-1}}:{{111122223333}}:cluster/my-cluster-name"
        }
    ]
}
```

------

## 使用 API
<a name="sagemaker-hyperpod-eks-ebs-setup-apis"></a>

或者，您可以使用 [AttachClusterNodeVolume](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AttachClusterNodeVolume.html) 和 [DetachClusterNodeVolume](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DetachClusterNodeVolume.html) API 操作，將您的 Amazon EBS 磁碟區連接到 SageMaker HyperPod EKS 叢集執行個體並將其分離。

**使用這些 API 的關鍵要求包括下列要求。**
+ Amazon EBS 磁碟區和 SageMaker HyperPod EKS 叢集都必須由相同的 AWS 帳戶所擁有。
+ 呼叫主體需要特定的最低許可，才能成功執行連接或分離操作。如需最低許可的詳細資訊，請參閱下列章節：
+ 將磁碟區連接至您的 HyperPod 節點後，請遵循[存取 SageMaker HyperPod 叢集節點](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-operate-access-through-terminal.html)中的指示以存取叢集節點，以及遵循[使磁碟區可供使用](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-using-volumes.html)中的指示以掛載連接的磁碟區。

### `sagemaker:AttachClusterNodeVolume` 所需的許可
<a name="sagemaker-hyperpod-eks-ebs-setup-apis-attach"></a>

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":
    [
        {
            "Effect": "Allow",
            "Action":
            [
                "sagemaker:AttachClusterNodeVolume"
            ],
            "Resource": "arn:aws:sagemaker:{{us-east-1}}:{{111122223333}}:cluster/*"
        },
        {
            "Effect": "Allow",
            "Action":
            [
                "eks:DescribeCluster"
            ],
            "Resource": "arn:aws:eks:{{us-east-1}}:{{111122223333}}:cluster/my-cluster-name"
        },
        {
            "Effect": "Allow",
            "Action":
            [
                "ec2:AttachVolume",
                "ec2:DescribeVolumes"
            ],
            "Resource": "arn:aws:ec2:{{us-east-1}}:{{111122223333}}:volume/*"
        }
    ]
}
```

------

### `sagemaker:DetachClusterNodeVolume` 所需的許可
<a name="sagemaker-hyperpod-eks-ebs-setup-apis-detach"></a>

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":
    [
        {
            "Effect": "Allow",
            "Action":
            [
                "sagemaker:DetachClusterNodeVolume"
            ],
            "Resource": "arn:aws:sagemaker:{{us-east-1}}:{{111122223333}}:cluster/*"
        },
        {
            "Effect": "Allow",
            "Action":
            [
                "eks:DescribeCluster"
            ],
            "Resource": "arn:aws:eks:{{us-east-1}}:{{111122223333}}:cluster/my-cluster-name"
        },
        {
            "Effect": "Allow",
            "Action":
            [
                "ec2:DetachVolume",
                "ec2:DescribeVolumes"
            ],
            "Resource": "arn:aws:ec2:{{us-east-1}}:{{111122223333}}:volume/*"
        }
    ]
}
```

------

### AWS KMS 金鑰的必要許可
<a name="sagemaker-hyperpod-eks-ebs-setup-apis-kms"></a>

只有在您使用客戶受管 KMS 金鑰來加密連接至 HyperPod 叢集節點的 Amazon EBS 磁碟區時，才新增下列 AWS KMS 許可。如果您使用的是 AWS受管 KMS 金鑰 (預設加密選項)，則不需要這些許可。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "key-default-1",
    "Statement":
    [
        {
            "Effect": "Allow",
            "Principal":
            {
                "AWS": "arn:aws:iam::{{111122223333}}:role/caller-role"
            },
            "Action": "kms:DescribeKey",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Principal":
            {
                "AWS": "arn:aws:iam::{{111122223333}}:role/caller-role"
            },
            "Action": "kms:CreateGrant",
            "Resource": "*",
            "Condition":
            {
                "StringEquals":
                {
                    "kms:CallerAccount": "{{111122223333}}",
                    "kms:ViaService": "ec2.{{us-east-1}}.amazonaws.com"
                },
                "ForAnyValue:StringEquals":
                {
                    "kms:EncryptionContextKeys": "aws:ebs:id"
                },
                "Bool":
                {
                    "kms:GrantIsForAWSResource": true
                },
                "ForAllValues:StringEquals":
                {
                    "kms:GrantOperations":
                    [
                        "Decrypt"
                    ]
                }
            }
        }
    ]
}
```

------

**注意**  
分離使用客戶受管 KMS 金鑰加密的叢集自動磁碟區連接 (CAVA) 磁碟區`sagemaker:DetachClusterNodeVolume`時， 不需要這些 AWS KMS 許可。