Posted at

Amazon ECS で NVIDIA GPU を使用するための AMI 作成方法

以前の記事(Docker コンテナで NVIDIA GPU によるハードウェアエンコードを動かす)でビルドしたコンテナを、Amazon ECS や AWS Batch などの基盤上で動作させるためには、Amazon ECS で通常提供される Amazon ECS-optimized AMI ではなく、GPU ドライバなどをインストールした独自の AMI を用意する必要がある。その作成方法を以下に記した。


AMI 作成手順


  1. Amazon EC2 G3 インスタンスを起動


    • AMI (Amazon Machine Image) は Amazon Linux 2 AMI ami-0a2de1c3b415889d2 を選択

    • インスタンスタイプは G3 インスタンスの中では比較的安価な g3.4xlargeg3s.xlarge を推奨

    • EBS ルートボリュームは 8 GB だと空き容量が不足する可能性があるため注意



  2. 起動した EC2 インスタンスに SSH 接続


  3. 最初にタイムゾーンを設定

    sudo timedatectl set-timezone Asia/Tokyo
    



  4. Docker のインストール

    Amazon Linux 2 では Extras Library を使用することで Docker を簡単にインストールすることができる。

    sudo amazon-linux-extras install docker
    



  5. ecs-init のインストール

    これにより Amazon ECS エージェントがインストールされ、ECS のコンテナ実行環境として使用できるようになる。

    sudo amazon-linux-extras install ecs
    
    sudo systemctl enable ecs



  6. NVIDIA Graphics Driver のインストール

    最新のドライバは https://www.nvidia.com/Download/index.aspx で Tesla M60 を検索することで取得可能。

    なお、NVIDIA Graphics Driver の使用には NVIDIA Software License Agreement への同意が必要である。

    sudo yum install gcc kernel-devel-$(uname -r)
    
    wget http://us.download.nvidia.com/tesla/410.72/NVIDIA-Linux-x86_64-410.72.run
    sudo bash NVIDIA-Linux-x86_64-410.72.run --ui=none --no-questions --accept-license



  7. nvidia-docker2 のインストール

    nvidia-docker2 は Docker コンテナで NVIDIA GPU を使用するために必要なランタイムである。

    distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
    
    curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | sudo tee /etc/yum.repos.d/nvidia-docker.repo
    sudo yum install nvidia-docker2



  8. デフォルトランタイムの設定

    docker コマンドをオプションなしで実行した場合でも上記でインストールした nvidia-docker2 ランタイムが使用されるよう、 /etc/docker/daemon.json を以下のように編集する(ファイルがない場合は新規に作成する)。


    /etc/docker/daemon.json

    {
    
    "runtimes": {
    "nvidia": {
    "path": "nvidia-container-runtime",
    "runtimeArgs": []
    }
    },
    "default-runtime": "nvidia"
    }




  9. シャットダウン

    sudo shutdown -h now
    


  10. EC2 マネジメントコンソールから AMI を作成