일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 김양재 목사
- 확률
- MongoDB
- 데이터 과학
- 김양재 목사님
- 몽고디비
- 우리들교회
- R
- Big Data
- 빅데이타
- 통계
- 빅 데이타
- Artificial Intelligence
- openCV
- 딥러닝
- 주일설교
- WebGL
- No SQL
- 빅데이터
- nodeJS
- 김양재
- Statistics
- data science
- Machine Learning
- c++
- probability
- 인공지능
- node.js
- Deep learning
- 빅 데이터
- Today
- Total
Scientific Computing & Data Science
[Artificial Intelligence / TensorFlow] Windows 환경에서 GPU 지원 R-TensorFlow 설치하기 본문
[Artificial Intelligence / TensorFlow] Windows 환경에서 GPU 지원 R-TensorFlow 설치하기
cinema4dr12 2017. 10. 1. 20:48Written 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를 활용하기를 원하는 분들에게 큰 도움이 되었으면 좋겠습니다.