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에서 새 클러스터를 만듭니다. 여기서 설정하는 클러스터 이름은 나중에 사용합니다. 이번 설명에서는 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를 사용하여 인스턴스를 시작합니다.
다음 사항에 유의해야 합니다.
$ sudo usermod -g docker ec2-user
$ sudo /etc/init.d/docker restart
인스턴스 설정
여기서는 p2.xlarge를 사용하여 인스턴스를 시작합니다.
다음 사항에 유의해야 합니다.
만드는 방법은 여기를 참조하십시오 : 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은 일례이므로, 각자 하고 싶은 구축을 설정해 주세요.
DockerfileFROM 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. 태스크 정의
여기서 중요한 부분은 아래와 같습니다.
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
여기서 중요한 부분은 아래와 같습니다.
호스트 측의/var/lib/nvidia-docker/volumes/nvidia_driver/latest 및 컨테이너 측의/usr/local/nvidia
위의 작업을 수행하면 ECS에서 GPU 인스턴스를 사용할 수 있으며 TensorFlow를 돌릴 수 있다고 생각합니다.
Reference
이 문제에 관하여(AWS의 ECS에서 GPU를 사용하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yujikawa/items/a734a9767ee2ec0d4709텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)