Windows 10 : Keras에서 GPU를 사용하는 환경 구축의 Tip's (TensorFlow)

〇 도입할 각 소프트웨어의 버전


  • Anaconda:5.0(Python 3.6)
  • CUDA:8.0
  • cuDNN: 6.0
  • Keras:2.1.1
  • tensorflow-gpu: 1.4.0

  • 〇 도입의 포인트(2017년 12월 현재)


  • 【1. 도입-CUDA8.0의 인스톨】CUDA는 9.0이 아니라 8.0을 인스톨 ⇒ Windows의 cuDNN은 아직 CUDA9.0에 비대응
  • 【2. 환경 구축】keras의 인스톨은 커멘드 프롬트가 아니라 PowerShell로 실시한다 ⇒ pip로 인스톨시에 문자 코드에 의한 도입 실패를 회피
  • 【3.이용】Keras에서 조금 무거운 처리를 하면 「failed to create cublas handle: CUBLAS_STATUS_ALLOC_FAILED」라는 에러가 발생하기 때문에 GPU 메모리의 사용 제한을 설정한다 ⇒ TensorFlow의 디폴트라면 GPU의 메모리를 100 %까지 이용하려고 하기 때문에 어느 정도 GPU의 메모리 확보 실패가 발생한다

  • 1. 도입



    1.1.CUDA8.0 설치



    CUDA Toolkit 8.0 - Feb 2017
    ↑「Operating System:Windows, Architecture:x86_64, Version:10」을 선택해 다운로드 & 인스톨

    1.2.cuDNN6.0 설치



    cuDNN Download
    Download cuDNN v6.0 (April 27, 2017), for CUDA 8.0"에서 "cuDNN v6.0 Library for Windows 10"을 선택하고 다운로드.
    다운로드한 파일을 펼쳐 "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0"아래의 동일한 디렉토리에 설치(덮어쓰기)

    1.3.Anaconda 5.0(Python 3.6) 설치



    Download Anaconda Distribution
    'Python 3.6 version'의 64-Bit 다운로드 및 설치

    2. 환경 구축 (Keras 및 TensorFlow 설치 포함)



    아래의 작업은 「Windows PowerShell」로 실시하는 것.

    2.1. 가상 환경 만들기


    conda create -n [仮想環境名] python=3.6
    

    2.2. 가상 환경 활성화


    activate [仮想環境名]
    

    2.3.TensorFlow(GPU) 설치


    pip install --ignore-installed --upgrade tensorflow-gpu
    

    2.4.Keras 설치


    pip install keras
    

    3.이용



    3.1. "failed to create cublas handle: CUBLAS_STATUS_ALLOC_FAILED"라는 오류가 발생한 경우



    아래와 같은 로그가 출력되어 Python 자체가 떨어집니다.
    [W 10:55:58.509 NotebookApp] Saving untrusted notebook classifier/fine-tuning-vgg16.ipynb
    2017-12-23 10:56:26.508105: E C:\tf_jenkins\home\workspace\rel-win\M\windows-gpu\PY\36\tensorflow\stream_executor\cuda\cuda_blas.cc:366] failed to create cublas handle: CUBL
    AS_STATUS_ALLOC_FAILED
    



    3.1.1. 【대응】 필요한 라이브러리를 import 후, 아래의 코드를 실행하여 GPU의 사용률을 제한한다


    # TensorFlowのGPUメモリ使用量の制限
    import tensorflow as tf
    from keras.backend.tensorflow_backend import set_session
    config = tf.ConfigProto()
    config.gpu_options.per_process_gpu_memory_fraction = 0.8
    set_session(tf.Session(config=config))
    

    로그에 아래와 같은 사용률이 출력되므로 totalMemory와 freeMemory의 값을 참고로 위의 per_process_gpu_memory_fraction에 사용률을 지정
    name: GeForce GTX 1070 major: 6 minor: 1 memoryClockRate(GHz): 1.7715
    pciBusID: 0000:01:00.0
    totalMemory: 8.00GiB freeMemory: 6.64GiB
    

    "6.6/8.0 = 0.825"⇒ "per_process_gpu_memory_fraction = 0.8"




    이제 버리버리 Keras에서 GPU를 이용할 수 있습니다.

    좋은 웹페이지 즐겨찾기