글 작성자: 모두의 근삼이

본 문서는 2020년 07월 28일을 기준으로 작성되었음을 알립니다.


머신러닝 전용 VDI 구축과 관련하여 윈도우10 환경에 tensorflow(이하 텐서플로우)를 설치해야 하는 일이 있었다. 텐서플로우는 2.x.x 버전으로 넘어오면서 부터 tensorflow 모듈과 tensorflow-gpu 모듈이 하나로 합쳐져서 tensorflow 모듈만 설치하면 두 기능을 모두 이용할 수 있게 되었다.

하지만, 그에 따라 tensorflow를 정상적으로 설치하고 사용하기 위해서 역시 GPU 인식을 위한 사전 요구사항을 충족해야만 하는 상황이 되었다.

요구사항

1.운영체제 및 파이썬 버전

설치 이슈

문서를 작성하는 시점을 기준으로 현재 TensorFlow 최신 릴리즈 버전은 2.3.0 버전이다. 이러한 상황에서 문제가 발생했는데, tensorflow가 설치되기 위한 환경으로 준비된 물리 장비가 RTX8000 그래픽카드를 사용하고 있었고, VDI 구현을 위한 환경이었기 때문에 VMware사의 vGPU 기술을 활용해서 가상환경 내부로 물리 GPU 자원을 포워딩 하고 있었다. 하지만 vGPU 환경의 영향으로 OS에 설치할 수 있는 CUDA 버전이 10.2버전 이상으로 고정되게 되었는데, 문제는 tensorflow 2.3.0이 공식적으로 지원하는 최대 버전은 10.1 이었던 것이다.

절망적인 가운데, tensorflow 공식 Git에 CUDA10.2 지원과 관련한 이슈에 비공식적인 방법이지만 해결방법이 거론되고 있는 것을 확인했다. 이슈내용 링크

해결법은 CUDA 설치 디렉토리의 bin 폴더에 위치한 cudart64_102 로 네이밍 된 라이브러리를 cudart64_101 로 새로운 링크를 생성하여 인식시키는 방법이었다. 해당 방법은 CUDA 10.1까지만 지원하는 다양한 버전에서 성공적으로 동작하였다. 아래는 설치하여 GPU 사용을 확인한 버전들의 목록이다. (개인적으로 테스트 한 내용이기 때문에 아래 내용이 호환되는 전부는 아니다.)

1. python 3.7.4 / tensorflow2.2.0 / CUDA 10.2 / cuDNN 7.6.5.32 / install성공, GPU 인식 성공 (cudart64_102.dll 파일 -> cudart64_101.dll 심볼릭 링크 필요)
2. python 3.7.0 / tensorflow2.2.0 / CUDA 10.2 / cuDNN 7.6.5.32 / install성공, GPU 인식 성공 (cudart64_102.dll 파일 -> cudart64_101.dll 심볼릭 링크 필요)

설치 진행

그래픽카드 인식 환경 구성

0. NVIDIA 그래픽카드 드라이버 설치

tensorflow 2.1.0 ~ 2.3.0 기준으로 GPU를 정상적으로 사용하기 위해서는 CUDA Compute Capability 3.5 이상을 포함하는 NVIDIA 그래픽 카드가 필요하다. 관련 지원 내용은 다음 링크에서 자세히 확인이 가능하다. 링크

그래픽 카드 드라이버는 공식 사이트에서 다운로드 하여 설치한다.

1. CUDA 설치

CUDA Toolkit도 마찬가지로 공식 사이트에서 다운로드 할 수 있다.

2. cuDNN SDK 복사

cuDNN SDK도 공식 사이트에서 다운로드 할 수 있으며, CUDA 버전에 의존적으로 존재하므로 잘 확인하여 다운로드 하도록 한다. 다운로드 받은 cuDNN 압출폴더의 압축을 풀면, bin, lib, include 세개의 폴더가 있는데, 이 폴더들을 CUDA 가 설치된 디렉토리에 덮어써 주면 된다.

위에서 설명했던 설치 이슈를 해결하는 방법에서 cudart 라이브러리를 링크걸어주는 작업은, 이 작업 직후에 진행해 주면 된다.

단, 붙여넣기 이후에 문제가 발생하면 CUDA를 재설치 해야 할 수 있으니, 반드시 사전에 CUDA 폴더에 있는 원본 데이터들은 따로 압축하여 저장해 두도록 한다.

TensorFlow 설치

1. tensorflow 설치 패키지 local 다운로드

폐쇠망 설치를 진행하기 위해서 사전에 tensorflow 패키지들을 다운로드 받는다. (패키지를 다운로드 받는 환경과 실제 설치를 진행할 환경이 다른 경우, 추가 옵션등을 통해서 패키지가 설치될 환경에 대해서 명시해 주어야 한다.) 문서에서는 2.2.0 버전을 다운로드 한다.

prompt>
pip install --download . tensorflow==2.2.0

2. conda 환경 생성 및 사용 설정

아나콘다 환경에서 tensorflow를 위한 환경을 새로 생성해 주고, 사용하도록 설정한다. 본 문서에서는 python 버전 3.7.0을 사용하도록 한다.

prompt>
conda create -n tf-1 python=3.7.0
conda activate tf-1

로컬에 다운로드 된 패키지들을 설치하기 위해서는 다음과 같은 명령어를 통해서 패키지를 설치해 줄 수 있다.

prompt>
cd /dir/to/package/locate
pip install --no-index --find-links=. tensorflow

설치 확인

텐서플로우가 잘 설치되고 import 되는지 확인하기 위해서 tensorflow 모듈을 import 하고, 인식된 물리 디바이스 정보들을 출력하여 테스트 해본다.

python> 
import tensorflow as tf
from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())

# 연산에 사용한 디바이스 정보 출력 설정
tf.debugging.set_log_device_placement(True)

# 텐서 생성
a = tf.constant([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
b = tf.constant([[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]])
c = tf.matmul(a, b)

print(c)
반응형