Amazon EKS 最適化高速 AMI - Amazon EKS

Amazon EKS 最適化高速 AMI

Amazon EKS 最適化高速 AMI はスタンダードな Amazon EKS 最適化 Linux AMI 上に構築されており、GPU および Inferentia ベースのワークロードをサポートするための Amazon EKS ワーカーノードのオプションイメージとして機能するよう設定されています。

スタンダードな Amazon EKS 最適化 AMI に加えて、高速 AMI には、以下が含まれています。

  • NVIDIA ドライバー

  • nvidia-container-runtime (デフォルトのランタイム)

  • AWS Neuron コンテナランタイム

最新の Amazon EKS 最適化高速 AMI の AMI ID を次の表に示します。さまざまなツールを使用して、AWS Systems Manager パラメータで ID を取得することもできます。詳細については、「Amazon EKS 最適化 AMI ID の取得」を参照してください。

注記
  • Amazon EKS 最適化高速 AMI は、GPU ベースのインスタンスタイプと Inferentia ベースのインスタンスタイプのみをサポートします。これらのインスタンスタイプは必ず、ノードの AWS CloudFormation テンプレートで指定してください。Amazon EKS 最適化高速 AMI を使用することで、NVIDIA のエンドユーザーライセンス契約 (EULA) に同意したものとみなされます。

  • Amazon EKS 最適化高速 AMI は、以前は GPU をサポートしたAmazon EKS 最適化 AMI と呼ばれていました。

  • 以前のバージョンの Amazon EKS 最適化高速 AMI では、nvidia-docker リポジトリがインストールされていました。このリポジトリは Amazon EKS AMI バージョン v20200529 以降には含まれません。

リージョン Amazon EKS 最適化 AMI (GPU 対応)
米国西部 (オレゴン) (us-west-2)
米国東部 (バージニア北部) (us-east-1)
米国東部 (オハイオ) (us-east-2)
欧州 (アイルランド) (eu-west-1)
重要

これらの AMI には、ノードの最新 AWS CloudFormation テンプレートが必要です。これらの AMI は、以前のバージョンのノードテンプレートで使用することはできません。つまり、クラスターに加えることはできません。これらの AMI を使用するには必ず、既存の AWS CloudFormation ノードスタックを最新のテンプレート (以下の URL) でアップグレードしてください。

https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-06-10/amazon-eks-nodegroup.yaml

AWS CloudFormation ワーカーノードテンプレートは、特殊なブートストラップスクリプトをトリガーする Amazon EC2 ユーザーデータを使用して、ワーカーノードを起動します。このスクリプトにより、ワーカーノードはクラスターのコントロールプレーンを自動的に検出して接続できるようになります。詳細については、「Amazon EKS Linux ワーカーノードの起動」を参照してください。

GPU ベースのワークロードの有効化

次のセクションでは、Amazon EKS 最適化高速 AMI を使用して GPU ベースのインスタンスでワークロードを実行する方法について説明します。Inferentia ベースのワークロードの使用の詳細については、「Inferentia のサポート」を参照してください。

GPU ワーカーノードがクラスターに参加した後で、NVIDIA device plugin for Kubernetes を次のコマンドを使用してクラスターのデーモンセットとして適用しなければなりません。

kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/1.0.0-beta6/nvidia-device-plugin.yml

ノードに GPU が割り当てられたことは、次のコマンドを使って確認できます。

kubectl get nodes "-o=custom-columns=NAME:.metadata.name,GPU:.status.allocatable.nvidia\.com/gpu"

GPU マニフェストの例

このセクションでは、ポッドマニフェスト例を示し、GPU のワーカーが適切に設定されていることをテストします。

nvidia-smi 出力の取得

このポッドマニフェスト例では、ワーカーノードで nvidia-smi を実行する Cuda コンテナ を起動します。nvidia-smi.yaml という名前のファイルを作成し、そこに以下のマニフェストファイルをコピー・ペーストしてファイルを保存します。

apiVersion: v1 kind: Pod metadata: name: nvidia-smi spec: restartPolicy: OnFailure containers: - name: nvidia-smi image: nvidia/cuda:9.2-devel args: - "nvidia-smi" resources: limits: nvidia.com/gpu: 1

上記の変更を次のコマンドを使って適用します。

kubectl apply -f nvidia-smi.yaml

ポッドの実行が終了後、次のコマンドを使用してログを表示します。

kubectl logs nvidia-smi

出力:

Mon Aug 6 20:23:31 2018 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 396.26 Driver Version: 396.26 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 Tesla V100-SXM2... On | 00000000:00:1C.0 Off | 0 | | N/A 46C P0 47W / 300W | 0MiB / 16160MiB | 0% Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| | No running processes found | +-----------------------------------------------------------------------------+