05-04 04:02
Notice
Recent Posts
Recent Comments
관리 메뉴

Scientific Computing & Data Science

[Artificial Intelligence / TensorFlow] Windows 환경에서 GPU 지원 R-TensorFlow 설치하기 본문

Artificial Intelligence/TensorFlow

[Artificial Intelligence / TensorFlow] Windows 환경에서 GPU 지원 R-TensorFlow 설치하기

cinema4dr12 2017. 10. 1. 20:48

Written by Geol Choi | 


이번 포스팅에서는 R에서 GPU(CUDA)가 지원되는 TensorFlow 실행환경을 구축하는 방법에 대하여 알아보겠습니다.


수많은 삽질(?)을 한 끝에 알아낸 나름의 방법인데 정답인지는 모르겠습니다. 다만 이 방법으로 실행환경을 설정하면 확실히 R에서 GPU가 지원되는 TensorFlow를 활용할 수 있을 것입니다.

설치환경

Windows 7 OS 환경에서 설치방법을 설명하겠지만, Mac OS나 Linux 계열에서도 비슷한 방법으로 설치가 가능하리라 생각됩니다.


필자의 설치환경은 다음과 같습니다:

  • OS: Windows 7 64bit

  • 그래픽스 카드: Nvidia GeForce GTC 750Ti

  • R: 3.4.2 (Short Summer) - 이 글을 작성하는 시점에서 최신 버전

  • Anaconda 3: 5.0.0  - 이 글을 작성하는 시점에서 최신 버전

  • CUDA Toolkit: 8.0

  • cuDNN: v7.0.3 for CUDA 8.0

파일설치

앞서 언급한 환경 구축을 위해 아래의 파일들을 다운로드하여 순서대로 설치합니다.


1.  R 설치: R version 3.4.2 (Short Summer)

2.  RStudio 설치: RStudio Desktop 1.0.153

3.  Anaconda 3 설치: Python 3.6 Version

4.  CUDA Toolkit 설치: CUDA Computing Toolki 8.0

5.  cuDNN 설치: cuDNN v7.0.3

→ 다운로드 한 cuDNN 파일(.zip)의 압축을 해제한 후 "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0" 경로에 덮어 씌웁니다.

Anaconda 3 환경변수 설정

R-TensorFlow가 Anaconda 3(Python 3) 환경으로 설치될 수 있도록 다음과 같이 Anaconda 3 환경변수를 설정합니다:


"Windows 시작 > 컴퓨터"를 오른쪽 마우스 버튼 클릭하면 다음과 같이 시스템 설정 윈도우가 열리면 "고급 시스템 설정"을 클릭합니다.



아래와 같이 [시스템 속성] 윈도우가 열리면, [고급] 탭에서 [환경 변수(N)...]을 클릭합니다.



[환경 변수] 윈도우의 [시스템 변수(S)]에서 변수 Path를 선택하고 [편집(I)...]를 클릭합니다.



시스템 변수의 Path 변수에 다음 경로를 추가합니다(단, Anaconda3의 설치 위치가 사용자마다 다를 수 있음에 유의하기 바랍니다):


C:\ProgramData\Anaconda3;
C:\ProgramData\Anaconda3\Scripts;

R 패키지 설치

설치된 RStudio(또는 R Native Application)를 실행하고, devtools를 설치합니다:


install.packages("devtools", repos = c(CRAN = "https://cran.rstudio.com"))


그 다음 processx 패키지를 설치합니다:


devtools::install_github("r-lib/processx") 


그런데 이 패키지를 설치하려면 RTools가 필요합니다. 설치 과정 중 자동으로 RTools 설치과정을 묻는데 "Yes"를 클릭하여 설치를 진행합니다.



RTools 설치가 완료되면 processx 패키지 설치가 실패했다는 메시지가 나올 것입니다. 이것은 RTools 설치가 안 되어 있어 있는 상태에서 실행하였기 때문에 processx 패키지 설치에 실패한 것입니다. 따라서, 위의 processx 패키지 설치 명령을 한 번 더 입력하면 성공적으로 설치가 가능할 것입니다.


다음은 Python reticulate 패키지를 설치하고:


devtools::install_github("rstudio/reticulate")


tensorflow 패키지를 설치합니다:


devtools::install_github("rstudio/tensorflow")


tensorflow 패키지 라이브러리를 로딩한 후:


library(tensorflow)


R-TensorFlow를 설치합니다:


install_tensorflow(method = c("auto", "virtualenv", "conda", "system"), conda = "auto", version = "default", extra_packages = NULL)


여기서, 이전에 R-TensorFlow를 설치해 보신 분은 의아해 하실 수 있습니다. 기존의 CPU 버전과 별반 차이가 없다고 생각할 수 있습니다.


그러나, 이게 끝이 아닙니다. 단지, 이 명령을 통해 r-tensorflow Python 가상환경(virtualenv)을 만들기 위함입니다.


일단, R에서 설정할 것은 여기까지입니다.

Anaconda Navigator에서 RStudio 설치

앞의 과정이 성공적으로 완료되면 Anaconda3 Navigator를 관리자 권한으로 실행합니다. 그리고, Application on 항목에서 r-tensorflow 환경이 생성되어 있는지 확인합니다.



위의 이미지를 확인해 보시면 r-tensorflow의 설치경로는 "C:/ProgramData/Anaconda3/envs"임을 알 수 있습니다.


이제 본격적으로 이 환경에 GPU 지원 TensorFlow를 설치해 봅니다. "Windows 시작 > Anaconda3 (64-bit) > Anaconda Prompt"를 관리자 권한으로 실행합니다.


 

Anaconda Prompt가 실행되면 다음의 명령을 입력하여 r-tensorflow 환경을 활성화합니다:


> activate r-tensorflow


r-tensorflow 환경으로 진입하면 conda 명령을 통해 tensorflow-gpu 버전을 설치합니다:


> conda install -c anaconda tensorflow-gpu

  

Anaconda Navigator의 Application on에서 "r-tensorflow"를 선택하고, RStudio를 설치합니다(앞서 RStudio를 설치했지만 Anaconda Navigator에서 한 번 더 설치합니다).

 


Anaconda Navigator에서 RStudio 실행

앞의 과정을 통해 Anaconda Navigator에서 RStudio 설치가 완료되면, [Install] 버튼이 [Launch] 버튼으로 변경됩니다.


이제 RStudio에서 tensorflow 패키지 라이브러리를 로딩하고:


library(tensorflow)

 

다음 명령을 입력하여 TensorFlow Session을 시작합니다:


sess <- tensorflow::tf$Session()


R에서 TensorFlow의 GPU 버전이 정상적으로 설치되었다면 다음과 유사한 메시지가 출력될 것입니다:


> sess <- tensorflow::tf$Session()
2017-10-03 15:32:22.391579: W c:\l\work\tensorflow-1.1.0\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE instructions, but these are available on your machine and could speed up CPU computations.
2017-10-03 15:32:22.391579: W c:\l\work\tensorflow-1.1.0\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE2 instructions, but these are available on your machine and could speed up CPU computations.
2017-10-03 15:32:22.391579: W c:\l\work\tensorflow-1.1.0\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE3 instructions, but these are available on your machine and could speed up CPU computations.
2017-10-03 15:32:22.392579: W c:\l\work\tensorflow-1.1.0\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are available on your machine and could speed up CPU computations.
2017-10-03 15:32:22.392579: W c:\l\work\tensorflow-1.1.0\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations.
2017-10-03 15:32:22.392579: W c:\l\work\tensorflow-1.1.0\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX instructions, but these are available on your machine and could speed up CPU computations.
2017-10-03 15:32:22.393579: W c:\l\work\tensorflow-1.1.0\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX2 instructions, but these are available on your machine and could speed up CPU computations.
2017-10-03 15:32:22.393579: W c:\l\work\tensorflow-1.1.0\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use FMA instructions, but these are available on your machine and could speed up CPU computations.
2017-10-03 15:32:22.647594: I c:\l\work\tensorflow-1.1.0\tensorflow\core\common_runtime\gpu\gpu_device.cc:887] Found device 0 with properties: 
name: GeForce GTX 750 Ti
major: 5 minor: 0 memoryClockRate (GHz) 1.1105
pciBusID 0000:01:00.0
Total memory: 2.00GiB
Free memory: 1.38GiB
2017-10-03 15:32:22.647594: I c:\l\work\tensorflow-1.1.0\tensorflow\core\common_runtime\gpu\gpu_device.cc:908] DMA: 0 
2017-10-03 15:32:22.647594: I c:\l\work\tensorflow-1.1.0\tensorflow\core\common_runtime\gpu\gpu_device.cc:918] 0:   Y 
2017-10-03 15:32:22.647594: I c:\l\work\tensorflow-1.1.0\tensorflow\core\common_runtime\gpu\gpu_device.cc:977] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 750 Ti, pci bus id: 0000:01:00.0)


어쩌구 저쩌구 하는 메시지가 출력되는데 마지막 부분이 중요합니다:


Found device 0 with properties: 
name: GeForce GTX 750 Ti
major: 5 minor: 0 memoryClockRate (GHz) 1.1105
pciBusID 0000:01:00.0
Total memory: 2.00GiB
Free memory: 1.38GiB
2017-10-03 15:32:22.647594: I c:\l\work\tensorflow-1.1.0\tensorflow\core\common_runtime\gpu\gpu_device.cc:908] DMA: 0 
2017-10-03 15:32:22.647594: I c:\l\work\tensorflow-1.1.0\tensorflow\core\common_runtime\gpu\gpu_device.cc:918] 0:   Y 
2017-10-03 15:32:22.647594: I c:\l\work\tensorflow-1.1.0\tensorflow\core\common_runtime\gpu\gpu_device.cc:977] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 750 Ti, pci bus id: 0000:01:00.0)


GPU Device를 찾았는데, 이에 대한 정보 즉, Device Name, Device Memory 등의 정보(각자의 그래픽스 카드 에 따라 다릅니다)가 표시됩니다.


다음 명령을 입력을 통해 동일한 출력 결과를 얻는다면 모든 과정의 정상적으로 진행된 것입니다.


> hello <- tf$constant('Hello, TensorFlow!')
> sess$run(hello)
b'Hello, TensorFlow!'

맺음말

R에서 TensorFlow 라이브러리를 설치하는 많은 자료들을 참고하였는데 설치가 잘 되지 않아 엄청난 고생을 했습니다. 물론 그 자료들이 도움이 안 된 것은 아닙니다. 많은 단서들을 얻을 수 있었습니다. 그럼에도 여러 블로그 저자들과의 설치 환경이 다른 것이 원인인지 아니면 제가 놓친 부분이 있는 것인지 이상하게도 잘 되지 않았습니다.


이 글을 작성하기 위해 Anaconda, R, RStudio 등을 10여차례 정도 설치하고 지우기를 반복했던 것 같습니다.


아무쪼록 이 포스팅이 R에서 GPU가 지원되는 TensorFlow를 활용하기를 원하는 분들에게 큰 도움이 되었으면 좋겠습니다.

Comments