AWS EC2의 스팟 인스턴스에서 GPU 버전 tensorflow를 실행합니다.

최근 tensorflow를 사용하기 시작했습니다.
EC2를 저렴하게 사용하려면 스팟 인스턴스 ♪라고 생각했지만, 어떻게 스팟 인스턴스라고 CUDA 등이 설정된 NVIDIA의 AMI를 선택할 수 없잖아요 로 환경 구축하지 않으면 안 되는 것 같다. 하지만 1회 환경 만들어 버리면 재이용은 가능.

그러므로 GPU 버전 tensorflow를 움직일 때까지의 순서를 정리합니다. 구축하는 환경은
우분투 16.04 LTS + CUDA + cuDNN + python3.6 + tensorflow-gpu
입니다.

EC2 인스턴스 생성



EC2 콘솔에서 스팟 인스턴스 요청에서 인스턴스를 만듭니다.
  • AMI: Ubuntu 16.04 LTS
  • 인스턴스 유형: p2.large
  • EBS 볼륨: 디폴트 8GB이므로 적당히 늘린다. 32GB라든지.

  • 인스턴스 유형은 p2.8xlarge 또는 p2.16xlarge 일 수 있지만 설정은 p2.large에서 수행 할 수 있으며 학습 중에 8xlarge 또는 16xlarge로 전환 할 수 있습니다.

    EC2 인스턴스가 시작되면 각 모듈을 최신 버전으로 업그레이드하고 최소한의 개발 환경을 설치하십시오.
    $ sudo apt-get update
    $ sudo apt-get upgrade
    $ sudo apt-get install libffi-dev libssl-dev gcc make
    

    pyenv를 사용하여 파이썬 환경 설정



    먼저 pyenv를 git clone합니다.
    $ git clone https://github.com/yyuu/pyenv.git ~/.pyenv
    

    .bashrc에 다음을 추가하십시오.
    PYENV_ROOT=$HOME/.pyenv
    PATH=$PYENV_ROOT/bin:$PYENV_ROOT/shims:$PATH
    eval "$(pyenv init -)"
    

    편집 한 bashrc를로드하십시오.
    $ source ~/.bashrc
    

    다음 파이썬 설치. 이번에는 파이썬 3.6을 넣어.
    $ pyenv install --list|grep 3.6
      3.3.6
      3.6.0
      3.6-dev
      3.6.1
      3.6.2rc1
    $ pyenv install 3.6.1
    $ pyenv global 3.6.1
    $ which pip3
    /home/ubuntu/.pyenv/shims/pip3  # pyenvが使われているのを確認
    $ pip3 install aws  # ついでに入れておく
    

    CUDA 설치



    CUDA 다운로드 사이트에서 deb 파일의 다운로드 대상을 찾으십시오.
  • OS:Linux,
  • Architecture: x86_64,
  • Distribution:Ubuntu,
  • Version: 16.04,
  • Installer Type: dev(local)

  • URL을 알면 wget으로 가져와 설치하십시오.
    $ wget https://developer.nvidia.com/compute/cuda/8.0/Prod2/local_installers/cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64-deb
    $ sudo dpkg -i cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64-deb
    $ sudo apt-get update
    $ sudo apt-get install cuda
    

    cuDNN 설치



    cuDNN 다운로드 사이트에서 cuDNN v6.0 Library for Linux를 가져 와서 설치하면 좋지만 사용자 등록 후 로그인 페이지에서만 다운로드 할 수 있으며 wget에서 URL 지정으로 쉽게 다운로드 할 수 없습니다.
    한 번 mac에 저장하고 scp로 EC2로 전송하기로 결정했습니다.
    # scpでローカルのMacからEC2にdevファイルをコピー. pemファイルのパスとIPは適宜変更.
    $ scp -i aws.pem ~/Downloads/cudnn-8.0-linux-x64-v6.0.tgz [email protected]:~/
    
    $ tar xzf cudnn-8.0-linux-x64-v6.0.tgz
    $ sudo cp -a cuda/lib64/* /usr/local/lib/
    $ sudo cp -a cuda/include/* /usr/local/include/
    $ sudo ldconfig
    

    tensorflow 설치



    CPU 버전의 tensorflow가 들어있는 경우는 uninstall하고 나서 GPU 버전을 넣는다. 다음에 자주 사용하는 라이브러리도 넣어 둔다.
    $ sudo apt-get install libcupti-dev
    $ pip3 uninstall tensorflow
    $ pip3 install tensorflow-gpu
    $ pip3 install keras sklearn matplotlib scipy librosa
    

    샘플을 움직여 동작 확인



    이번에는 keras의 mnist-mlp로 동작 확인. git clone에서 샘플을 가져와 실행.
    $ git clone https://github.com/fchollet/keras.git
    $ cd keras/examples
    $ $ python mnist_mlp.py 
    Using TensorFlow backend.
    ...
    Test loss: 0.118156189926
    Test accuracy: 0.9811
    $
    

    움직였다

    좋은 웹페이지 즐겨찾기