

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# EFA を使用した AWS Deep Learning AMIs インスタンスの起動
<a name="tutorial-efa-launching"></a>

最新版 Base DLAMI は EFA と共に使用する準備ができており、GPU インスタンス用の必要なドライバー、カーネルモジュール、Libfabric、OpenMPI および [NCCL OFI プラグイン](https://github.com/aws/aws-ofi-nccl/tree/aws)が付属しています。

サポートされている Base DLAMI の CUDA バージョンは、[リリースノート](appendix-ami-release-notes.md#appendix-ami-release-notes-base)で確認できます。

注記:
+ EFA 上の `mpirun` を使用して NCCL アプリケーションを実行する際、EFA がサポートされているインストレーションへの完全なパスを以下のように指定する必要があります。

  ```
  /opt/amazon/openmpi/bin/mpirun <command>  
  ```
+ アプリケーションで EFA を使用するには、[DLAMI での EFA の使用](tutorial-efa-using.md) に示すように、`mpirun` コマンドに `FI_PROVIDER="efa"` を追加します。

**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. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで [**セキュリティグループ**] を選択して、[**セキュリティグループの作成**] を選択します。

1. [**セキュリティグループの作成**] ウィンドウで、以下を行います。
   + [**セキュリティグループ名**] に、`EFA-enabled security group` のような、分かりやすいセキュリティグループ名を入力してください。
   + (オプション) [**説明**] に、セキュリティグループの簡単な説明を入力してください。
   + [**VPC**] で、EFA 対応のインスタンスを起動する VPC を選択します。
   + **[作成]** を選択します。

1. 作成したセキュリティグループを選択し、[**説明**] タブで [**グループ ID**] をコピーします。

1. **[Inbound]** (インバウンド) タブおよび **[Outbound]** (アウトバウンド) タブで、次の手順を実行します。
   + **[編集]** を選択します。
   + [**Type**] で、[**All traffic**] を選択します。
   + **[ソース]** で **[カスタム]** を選択します。
   + コピーしたセキュリティグループ 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 Deep Learning 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. Amazon EC2 コンソール ([https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)) を開きます。

1. [**インスタンスの作成**] を選択してください。

1. **AMI を選択**ページで、[DLAMI リリースノートページ](https://docs.aws.amazon.com/dlami/latest/devguide/appendix-ami-release-notes)にある、サポートされている DLAMI を選択します。

1. **[Choose an Instance Type]** (インスタンスタイプの選択) ページで、次のいずれかのサポート対象のインスタンスタイプを選択し、**[Next: Configure Instance Details]** (次の手順: インスタンスの詳細の設定) を選択します。サポートされているインスタンスのリストについては、[EFA と MPI の開始方法](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa-start.html)のリンクを参照してください。

1. [**Configure Instance Details**] ページで以下の操作を実行します。
   + [**インスタンス数**] に、起動する EFA 対応のインスタンスの数を入力します。
   + [**ネットワーク**] および [**サブネット**] で、インスタンスを起動する VPC およびサブネットを選択します。
   + [オプション] **[プレイスメントグループ]** で、**[プレイスメントグループにインスタンスを追加]** を選択します。最適なパフォーマンスを得るには、プレイスメントグループ内でインスタンスを起動します。
   + [オプション] **[プレイスメントグループ名]** で、**[新しいプレイスメントグループに追加]** を選択し、プレイスメントグループの分かりやすい名前を入力して、**[プレイスメントグループ戦略]** で **[クラスター]** を選択します。
   + 必ず、このページで **[Elastic Fabric Adapter]** を有効にしてください。このオプションが無効になっている場合は、選択したインスタンスタイプに対応するサブネットに変更します。
   + [**ネットワークインターフェイス**] セクションの [**eth0**] で、[**新しいネットワークインターフェイス**] を選択してください。必要に応じて、プライマリ IPv4 アドレスと 1 つ以上のセカンダリ IPv4 アドレスを指定できます。関連付けられている IPv6 CIDR ブロックを持つサブネットにインスタンスを起動する場合は、必要に応じて、プライマリ IPv6 アドレスと 1 つ以上のセカンダリ IPv6 アドレスを指定することができます。
   + [**次の手順: ストレージの追加**] を選択します。

1. [**ストレージの追加**] ページで、AMI で指定されたボリュームに加えてインスタンスにアタッチするボリューム (例: ルートデバイスのボリューム) を指定し、[**Next: Add Tags (次へ: タグの追加)**] を選択します。

1. [**Add Tags**] ページで、ユーザーフレンドリーな名前などを使ってインスタンスのタグを指定し、[**Next: Configure Security Group**] を選択します。

1. **[セキュリティグループの設定]** ページの **[セキュリティグループの割り当て]** で、**[既存のセキュリティグループを選択する]** を選択し、前に作成したセキュリティグループを選択します**。**

1. [**Review and Launch**] を選択してください。

1. [**インスタンス作成の確認**] ページで設定を確認し、[**起動**] を選択してキーペアを選択し、インスタンスを起動します。

## EFA 添付ファイルの確認
<a name="tutorial-efa-verify-attachment"></a>

### コンソールから
<a name="tutorial-efa-verify-attachment-console"></a>

インスタンスを起動したら、 AWS コンソールでインスタンスの詳細を確認します。これを行うには、EC2 コンソールでインスタンスを選択し、ページ下のペインにある [Description (説明)] タブを確認します。[Network Interfaces: eth0 (ネットワークインターフェイス: eth0)] というパラメータを探し、eth0 をクリックするとポップアップが開きます。[Elastic Fabric Adapter] が有効になっていることを確認します。

EFA が有効になっていない場合は、次のいずれかの方法でこれを修正できます。
+ EC2 インスタンスを終了し、同じ手順で新しいインスタンスを起動します。EFA が添付されていることを確認します。
+ 既存のインスタンスに EFA を添付します。

  1. EC2 コンソールで、[Network Interfaces (ネットワークインターフェイス)] に移動します。

  1. [Create a Network Interface (ネットワークインターフェイスを作成)] をクリックします。

  1. インスタンスが入っている同じサブネットを選択します。

  1. 必ず、[Elastic Fabric Adapter] を有効にし、[Create] (作成) をクリックします。

  1. [EC2 Instances (EC2 インスタンス)] タブに戻り、インスタンスを選択します。

  1. [Actions: Instance State] (アクション: インスタンスの状態) に移動し、EFA にアタッチする前にインスタンスを停止します。

  1. [Actions (アクション)] から、[Networking: Attach Network Interface (ネットワーキング: ネットワークインタフェイスの接続)] を選択します。

  1. 先ほど作成したインターフェイスを選択し、[Attach (接続)] をクリックします。

  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
```

応答しなかったり完了しない場合は、セキュリティグループに正しいインバウンド/アウトバウンドルールが設定されていることを確認します。