ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • root권한 없이 CUDA 8 + cudnn 6 설치하기 (Installation without root)
    Research 2017. 12. 8. 01:24


    개인 서버가 아닌 공용 서버에서 CUDA를 세팅할 때, root권한없이 설치하는 방법을 알고 있어야 합니다.

    종종 필요한 경우가 있어서 우선 기록하고자 글을 써봅니다.


    20171208 기준으로 Tensorflow-GPU가 1.4버전이고, 공식적으로는 CUDA 8과 cudnn 6을 사용하는 것으로 명시되어 있습니다. 하지만 지금 이 시점에서는 CUDA가 9, cudnn이 7이 최신 버전입니다. 즉, 공식 홈페이지에서는 바로 CUDA 8과 cudnn 6를 설치하기 어렵습니다. 따라서, 아카이브된 곳을 찾아야 합니다.


    1. CUDA 8 다운로드하기

    우선 아래의 링크는 CUDA 8의 아카이브 페이지입니다. 아래 사이트에 들어간 후 자신의 환경에 맞게 선택하여 local run 파일을 다운받아주세요 :)

    https://developer.nvidia.com/cuda-80-ga2-download-archive


    저 같은 경우 Centos 7이 공용 서버였기 때문에 해당 파일은

    https://developer.nvidia.com/compute/cuda/8.0/Prod2/local_installers/cuda_8.0.61_375.26_linux-run

    였습니다. 그러므로 우리는 커맨드를 다음과 같이 쳐야 합니다.

    $ wget https://developer.nvidia.com/compute/cuda/8.0/Prod2/local_installers/cuda_8.0.61_375.26_linux-run


    2. cudnn 6 다운로드하기

    cudnn은 아카이브 찾기가 좀 어렵습니다;; 그래서 저는 한 gist에 있는 코드를 참고하여 유추하였습니다.

    https://gist.github.com/mjdietzx/0ff77af5ae60622ce6ed8c4d9b419f45 를 살펴 보시면,

    http://developer.download.nvidia.com/compute/redist/cudnn/v6.0/cudnn-8.0-linux-x64-v6.0.tgz

    에 CUDA 8에 맞는 cudnn 6이 있는 것을 알 수 있습니다.

    $ wget http://developer.download.nvidia.com/compute/redist/cudnn/v6.0/cudnn-8.0-linux-x64-v6.0.tgz


    3. CUDA 8 설치하기

    그리고 앞서 받은 run 파일을 chmod +x 를 통해 실행파일로 만들어줍니다. 그리고 그 파일을 실행합니다.

    $ chmod +x cuda_8.0.61_375.26_linux-run

    $ ./cuda_8.0.61_375.26_linux-run


    그 뒤로는 긴 글이 나오고 동의할거냐... 드라이버 깔거냐... 등등 다양한 말이 나옵니다.

    그건 상황에 맞춰서 답을 해주셔야 해요...ㅠㅠ 각자 상황이 너무 달라서

    우선, 당연히 accept로 입력하셔야 하고, 드라이버 설치는 root권한이 없으면 어려울 것이기 때문에 보통 no를 하는게 좋을 거에요. 그 외에 sample이나 이런것들은 필요하면 yes로 해주시고... 적절하게 본인 상황에 맞게 답해서 넘어가시면 됩니다 :)


    아 주의할 점은, root권한없이 즉 개인 홈에만 모든 CUDA파일이 설치되야 하므로 디렉토리 설정시에는 반드시 본인 유저 홈에 있는 폴더를 설정하세요. 저같은 경우에는 /home/[username]/cuda 이런식으로 만들어서 그 폴더 안에 모든 CUDA 및 cudnn 파일을 정리해두었습니다.


    4. cudnn 설치하기 (사실상 압축 풀고 파일 옮기기)

    이제 그 다음으로 해야 할 것은 cudnn 압축 풀기입니다.

    $ tar -xvzf cudnn-8.0-linux-x64-v6.0.tgz

    아마 홈 디렉토리에서 압축을 풀면 자동으로 cuda 디렉토리에다가 들어갈거에요. (홈디렉토리에 cuda폴더가 있다면)

    핵심은 압축후 발생하는 파일들을 본인의 cuda 디렉토리에 include 및 lib64 폴더에 넣어주셔야 해요.


    5. bashrc 설정하기

    이제 개인 홈 디렉토리에 설치된 cuda 파일만을 쓰라고 명세해줘야 해요.

    $ vi ~/.bashrc 를 통해서 bashrc를 킨 후에 아래 내용을 추가해주세요.

    export CUDA_HOME=$HOME/cuda:$CUDA_HOME
    export PATH=$HOME/cuda/bin:$PATH
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/cuda/lib64/


    6. 잘 깔렸는지 테스트 (tensorflow-gpu를 써보자.)

    공용 서버를 쓴다고 가정한 참이니, 반드시 virtualenv이나 conda env를 꼭 쓰세요.

    env activation 후에 tensorflow-gpu를 써봅시다.

    (env) $ pip install tensorflow-gpu

    (env) $ python

    >> import tensorflow as tf

    >> sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

    2017-12-08 01:45:27.175597: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Found device 0 with properties:
    name: GeForce GTX 1080 major: 6 minor: 1 memoryClockRate(GHz): 1.8475
    pciBusID: 0000:82:00.0
    totalMemory: 7.92GiB freeMemory: 7.81GiB
    2017-12-08 01:45:27.175684: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1120] Creating TensorFlow device (/device:GPU:0) -> (device: 0, name: GeForce GTX 1080, pci bus id: 0000:82:00.0, compute capability: 6.1)
    Device mapping:
    /job:localhost/replica:0/task:0/device:GPU:0 -> device: 0, name: GeForce GTX 1080, pci bus id: 0000:82:00.0, compute capability: 6.1
    2017-12-08 01:45:27.239082: I tensorflow/core/common_runtime/direct_session.cc:299] Device mapping:
    /job:localhost/replica:0/task:0/device:GPU:0 -> device: 0, name: GeForce GTX 1080, pci bus id: 0000:82:00.0, compute capability: 6.1


    위와 같이 현재 쓰고 있는 GPU 정보가 뜬다면 성공한 것입니다. sudo 한 번 없이 CUDA + cudnn 설치하는 방법을 소개해드렸습니다 :)


    ※ 만약에 DRIVER가 없어서 문제가 발생한다면 그건 루트 없이 해결 불가능합니다. 장치에 관련된 드라이버는 무조건 루트 권한으로 설치해야 해요. 기본적으로 딥러닝 공용 서버라면 아마도 서버 관리자가 그래픽 카드 드라이버는 설정해두었을 가능성이 큽니다. 그렇지 않다면 서버 관리자에게 문의하셔야 합니다.

    댓글

Designed by Tistory.