

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

# 使用 EFA 啟動 AWS 深度學習 AMIs 執行個體
<a name="tutorial-efa-launching"></a>

最新的 Base DLAMI 已準備好與 EFA 搭配使用，並隨附 GPU 執行個體所需的驅動程式、核心模組、libfabric、Openmpi 和 [NCCL OFI 外掛程式](https://github.com/aws/aws-ofi-nccl/tree/aws)。

您可以在版本[備註中找到基礎 DLAMI 支援的 CUDA 版本](appendix-ami-release-notes.md#appendix-ami-release-notes-base)。

請注意：
+ 在 EFA `mpirun`上使用 執行 NCCL 應用程式時，您必須將 EFA 支援安裝的完整路徑指定為：

  ```
  /opt/amazon/openmpi/bin/mpirun <command>  
  ```
+ 若要讓您的應用程式能夠使用 EFA，請新增 `FI_PROVIDER="efa"` 至 `mpirun` 命令，如 [在 DLAMI 上使用 EFA](tutorial-efa-using.md) 中所示。

**Topics**
+ [準備啟用 EFA 的安全群組](#tutorial-efa-security-group)
+ [啟動您的執行個體](#tutorial-efa-launch)
+ [驗證 EFA 附件](#tutorial-efa-verify-attachment)

## 準備啟用 EFA 的安全群組
<a name="tutorial-efa-security-group"></a>

EFA 需要安全群組，允許所有進出安全群組本身的傳入和傳出流量。如需詳細資訊，請參閱 [EFA 文件](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa-start.html#efa-start-security)。

1. 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 在導覽窗格中，選擇 **Security Groups** (安全群組)，然後選擇 **Create Security Group** (建立安全群組)。

1. 在 **Create Security Group** (建立安全群組) 視窗中，執行下列動作：
   + 對於 **Security group name** (安全群組名稱)，輸入安全群組的描述性名稱，例如 `EFA-enabled security group`。
   + (選用) 對於 **Description** (描述)，輸入安全群組的簡短描述。
   + 對於 **VPC**，選取您打算讓具備 EFA 功能的執行個體在其中啟動的 VPC。
   + 選擇**建立**。

1. 選取您建立的安全群組，在 **Description** (描述) 索引標籤上，複製 **Group ID** (群組 ID)。

1. 在**傳入**和**傳出**索引標籤上，執行下列動作：
   + 選擇 **Edit** (編輯)。
   + 針對 **Type (類型)**，選擇 **All traffic (所有流量)**。
   + 對於 **Source (資源)**，選擇 **Custom (自訂)**。
   + 將您複製的安全群組 ID 貼到欄位中。
   + 選擇**儲存**。

1. 參照 [授權 Linux 執行個體的傳入流量](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/authorizing-access-to-an-instance.html)來啟用傳入流量。如果您略過此步驟，將無法與 DLAMI 執行個體通訊。

## 啟動您的執行個體
<a name="tutorial-efa-launch"></a>

上的 EFA AWS 深度學習 AMIs 目前支援下列執行個體類型和作業系統：
+  P3dn：Amazon Linux 2、Ubuntu 20.04
+  P4d, P4de：Amazon Linux 2、Amazon Linux 2023、Ubuntu 20.04、Ubuntu 22.04
+  P5, P5e, P5en：Amazon Linux 2、Amazon Linux 2023、Ubuntu 20.04、Ubuntu 22.04

下一節說明如何啟動已啟用 EFA 的 DLAMI 執行個體。如需啟動啟用 EFA 執行個體的詳細資訊，請參閱[在叢集置放群組中啟動啟用 EFA 的執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa-start.html#efa-start-instances)。

1. 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 選擇**啟動執行個體**。

1. 在**選擇 AMI** 頁面上，選取 DLAMI [版本備註頁面上找到的支援 DLAMI](https://docs.aws.amazon.com/dlami/latest/devguide/appendix-ami-release-notes) 

1. 在**選擇執行個體類型**頁面上，選取下列其中一個支援的執行個體類型，然後選擇**下一步：設定執行個體詳細資訊。**如需支援的執行個體清單，請參閱此連結：[開始使用 EFA 和 MPI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa-start.html) 

1. 在 **Configure Instance Details (設定執行個體詳細資訊)** 頁面上，執行下列操作：
   + 對於 **Number of instances (執行個體的數目)**，輸入要啟動的具備 EFA 功能的執行個體數。
   + 對於 **Network (網路)** 和 **Subnet (子網)**，選取要在其中啟動執行個體的 VPC 和子網。
   + 【選用】 針對**置放群組**，選取**將執行個體新增至置放群組**。為獲得最佳效能，請在置放群組內啟動執行個體。
   + 【選用】 對於**置放群組名稱**，選取**新增至新的置放群組**，輸入置放群組的描述性名稱，然後對於**置放群組策略**，選取**叢集**。
   + 請務必在此頁面上啟用**「彈性布料轉接器」**。如果停用此選項，請將子網路變更為支援您所選執行個體類型的子網路。
   + 在 **Network Interfaces** (網路介面) 區段中，針對裝置 **eth0**，選擇 **New network interface** (新網路介面)。您可以選擇性指定一個主要 IPv4 地址，以及一或多個次要 IPv4 地址。如果您在有相關聯 IPv6 CIDR 區塊的子網中啟動執行個體，您可以選擇性指定一個主要 IPv6 地址，以及一或多個次要 IPv6 地址。
   + 選擇 **Next: Add Storage (下一步：新增儲存體)**。

1. 在 **Add Storage (新增儲存體)** 頁面上，除了 AMI 指定的磁碟區 (例如根設備磁碟區)，指定要連接到執行個體的磁碟區，然後選擇 **Next: Add Tags (下一步：新增標籤)**。

1. 在 **Add Tags (新增標籤)** 頁面上，為執行個體指定標籤 (例如使用者易記的名稱)，然後選擇 **Next: Configure Security Group (下一步：設定安全群組)**。

1. 在**設定安全群組**頁面上，針對**指派安全群組**，選取**選取現有的安全群組**，然後選取您先前建立的安全群組**。**

1. 選擇 **Review and Launch** (檢閱和啟動)。

1. 在 **Review Instance Launch (檢閱執行個體啟動)** 頁面上，檢閱設定，然後選擇 **Launch (啟動)**，以選擇金鑰對並啟動執行個體。

## 驗證 EFA 附件
<a name="tutorial-efa-verify-attachment"></a>

### 從主控台
<a name="tutorial-efa-verify-attachment-console"></a>

啟動執行個體之後，請在 AWS 主控台中檢查執行個體詳細資訊。若要執行此操作，在 EC2 主控台中選取執行個體，然後查看頁面下方窗格中的 [Description (描述)] 索引標籤。尋找參數 “網路界面：eth0”，然後按一下 eth0 開啟一個彈出式畫面。確定已啟用「Elastic Fabric Adapter」。

如果未啟用 EFA，您可以透過下列任一方式修正此問題：
+ 終止 EC2 執行個體並按照相同的步驟啟動新的執行個體。確定已連接 EFA。
+ 將 EFA 連接至現有執行個體。

  1. 在 EC2 主控台中，移至 [Network Interfaces (網路界面)]。

  1. 按一下 [Create a Network Interface (建立網路界面)]。

  1. 選取您的執行個體所在的相同子網路。

  1. 請務必啟用「彈性布料轉接器」，然後按一下建立。

  1. 返回 [EC2 Instances (EC2 執行個體)] 索引標籤並選取您的執行個體。

  1. 前往動作：執行個體狀態，並在連接 EFA 之前停止執行個體。

  1. 從 [Actions (動作)] 中，選取 [Networking: Attach Network Interface (聯網：連接網路界面)]。

  1. 選擇您剛建立的界面，然後按一下連接。

  1. 重新啟動您的執行個體。

### 從執行個體
<a name="tutorial-efa-verify-attachment-instance"></a>

下列測試指令碼已存在於 DLAMI 上。執行它以確保核心模組已正確載入。

```
$ fi_info -p efa
```

您的輸出應該類似以下內容：

```
provider: efa
    fabric: EFA-fe80::e5:56ff:fe34:56a8
    domain: efa_0-rdm
    version: 2.0
    type: FI_EP_RDM
    protocol: FI_PROTO_EFA
provider: efa
    fabric: EFA-fe80::e5:56ff:fe34:56a8
    domain: efa_0-dgrm
    version: 2.0
    type: FI_EP_DGRAM
    protocol: FI_PROTO_EFA
provider: efa;ofi_rxd
    fabric: EFA-fe80::e5:56ff:fe34:56a8
    domain: efa_0-dgrm
    version: 1.0
    type: FI_EP_RDM
    protocol: FI_PROTO_RXD
```

### 確認安全群組組態
<a name="tutorial-efa-verify-attachment-security"></a>

下列測試指令碼已存在於 DLAMI 上。執行它以確保您建立的安全群組已正確設定。

```
$ cd /opt/amazon/efa/test/ 
$ ./efa_test.sh
```

您的輸出應該類似以下內容：

```
Starting server...
Starting client...
bytes   #sent   #ack     total       time     MB/sec    usec/xfer   Mxfers/sec
64      10      =10      1.2k        0.02s      0.06    1123.55       0.00
256     10      =10      5k          0.00s     17.66      14.50       0.07
1k      10      =10      20k         0.00s     67.81      15.10       0.07
4k      10      =10      80k         0.00s    237.45      17.25       0.06
64k     10      =10      1.2m        0.00s    921.10      71.15       0.01
1m      10      =10      20m         0.01s   2122.41     494.05       0.00
```

如果停止回應或未完成，請確保您的安全群組具有正確的傳入/傳出規則。