AWS의 ECS에서 GPU를 사용하는 방법

3407 단어 TensorFlowGPUECSAWS

소개



AWS의 ECS에서 GPU를 사용하는 경우 ECS 측에서는 GPU 탑재 인스턴스를 기본적으로 선택할 수 없습니다. 지금은 스스로 어떻게든 할 수밖에 없습니다. 그 방법을 설명합니다.

1. ECS에서 클러스터 만들기



ECS에서 새 클러스터를 만듭니다. 여기서 설정하는 클러스터 이름은 나중에 사용합니다. 이번 설명에서는 ecs-cluster라는 이름으로 설명합니다.

2. ECS로 움직일 수 있는 GPU의 AMI 생성



AWS의 공식 페이지에 있으므로 이 안내에 따라 AMI 생성까지 진행합니다.
GPU 워크로드 AMI 생성
이 단계의 끝에 ec2-user로 sudo를 붙이지 않고 Docker를 두드릴 수 있도록 설정해 두면 구축시에 편리하게 됩니다.
$ sudo usermod -g docker ec2-user
$ sudo /etc/init.d/docker restart

위의 명령을 입력한 후에는 터미널에서 빠져나와 다시 연결해야 합니다.

3. 생성한 GPU의 AMI를 사용하여 인스턴스 생성



인스턴스 설정



여기서는 p2.xlarge를 사용하여 인스턴스를 시작합니다.



다음 사항에 유의해야 합니다.
  • 만들 인스턴스의 역할 설정은 ECS 인스턴스 역할을 제공합니다.
    만드는 방법은 여기를 참조하십시오 : Amazon ECS 인스턴스 역할
  • 인스턴스 설정 탭 하단의 고급 세부 정보로 사용자 데이터 설정 (아래).
    #!/bin/bash
    echo ECS_CLUSTER=ecs-cluster >> /etc/ecs/ecs.config
    

    4. Dockerfile 빌드



    여기에서는 GPU를 사용하기 위한 Dockerfile을 만들고 ECR로 푸시합니다.
    이번에는 tensorflow-gpu 1.4.0을 사용합니다. TensorFlow 버전에 따라 nvidia 이미지를 사용하므로 아래 URL에서 확인하십시오.
    htps //w w. 천식 rfぉw. rg / an s tai l / an s tai l_ rs s # こん ん _ n s ta chion _ p 로 b ㎇ ms

    위의 URL에서 확인하면 cuDNN:6 CUDA:8이므로 nvidia의 image는 이 버전에 따른 것을 사용합니다.

    아래의 Dockerfile은 일례이므로, 각자 하고 싶은 구축을 설정해 주세요.

    Dockerfile
    FROM nvidia/cuda:8.0-cudnn6-devel
    RUN apt-get update
    RUN apt-get install -y  git \
                            vim \
                            build-essential \
                            libncursesw5-dev \
                            libgdbm-dev \
                            libc6-dev \
                            zlib1g-dev \
                            libsqlite3-dev \
                            tk-dev \
                            libssl-dev \
                            openssl \
                            libbz2-dev \
                            libreadline-dev \
                            checkinstall \
                            wget \
                            jq
    
    RUN git clone https://github.com/yyuu/pyenv.git /root/.pyenv
    
    ENV PYENV_ROOT "/root/.pyenv"
    ENV PATH "$PYENV_ROOT/bin:$PATH"
    ENV PATH "$PYENV_ROOT/shims:$PATH"
    RUN pyenv install 3.6.2
    RUN pyenv global 3.6.2
    RUN pip install tensorflow-gpu==1.4.0
    
    

    DockerFile을 만든 후 ECR로 푸시합니다.
    ECS 리포지토리에서 새 리포지토리를 만들면 푸시까지의 흐름이 나열되어 있으므로 그대로 수행합니다.

    개인적으로 빠진 점
    tensorflow와 tensorflow-gpu는 함께 넣지 말고 tensorflow를 넣으면 CPU에서 움직입니다. 반드시 tensorflow-gpu로 만드십시오.

    5. 태스크 정의



    여기서 중요한 부분은 아래와 같습니다.
  • 특권 부여를 한다
  • 볼륨 마운트에서 호스트 측 nvidia 관련 마운트
    호스트 측의/var/lib/nvidia-docker/volumes/nvidia_driver/latest 및 컨테이너 측의/usr/local/nvidia

  • 위의 작업을 수행하면 ECS에서 GPU 인스턴스를 사용할 수 있으며 TensorFlow를 돌릴 수 있다고 생각합니다.

    좋은 웹페이지 즐겨찾기