Python 3.6 가상환경의 TensorFlow 1.x 설치 기록
CUDA와 cuDNN을 준비한 뒤 Python 가상환경에 TensorFlow GPU 패키지를 설치했던 기록입니다. 당시에는 Python 3.6과 TensorFlow 1.x를 사용했습니다.
현재 TensorFlow의 설치 방법과 API는 다릅니다. 아래 명령과 코드는 당시 환경을 설명하며, 새 환경은 현재 공식 가이드에 맞춰 구성해야 합니다.
Python 가상환경 생성
당시 CentOS에서는 별도 저장소를 통해 Python 3.6을 준비했습니다. 시스템 Python의 패키지를 바꾸지 않도록 가상환경을 만들었습니다.
python3.6 -m venv tensorflow_env
source tensorflow_env/bin/activate
python -m pip --version가상환경은 Python 패키지의 설치 경로를 나눕니다. GPU 드라이버나 시스템의 CUDA 라이브러리까지 별도로 격리하는 기능은 아닙니다.
TensorFlow GPU 패키지 설치
원래 기록의 명령은 다음과 같았습니다.
python -m pip install --upgrade tensorflow-gpu이 명령은 실행 시점의 최신 패키지를 선택하므로 과거 환경을 다시 만드는 데 그대로 쓰기 어렵습니다. 당시 CUDA 글에서 기준으로 삼은 버전은 TensorFlow 1.11.0입니다. 같은 구성을 재현하려면 패키지뿐 아니라 Python·CUDA·cuDNN과 의존 패키지 버전도 함께 맞춰야 합니다.
TensorFlow 공식 빌드 표 에는 1.11.0의 GPU 구성이 CUDA 9·cuDNN 7로 정리돼 있습니다. 현재 설치 안내와 당시 tensorflow-gpu 패키지를 혼용하지 않는 것이 필요합니다.
Import와 패키지 위치 확인
설치 후에는 선택한 가상환경의 Python이 패키지를 읽는지 확인했습니다.
import inspect
import os
import tensorflow as tf
print(tf.__version__)
print(os.path.dirname(inspect.getfile(tf)))버전과 경로가 예상과 다르면 패키지를 다시 설치하기 전에 Python 실행 경로와 가상환경 활성화 상태부터 확인할 수 있습니다.
연산 실행과 GPU 배치 확인
원래 메모는 tf.constant와 tf.Session으로 문자열을 출력하는 코드였습니다. 이 코드는 TensorFlow를 불러오고 세션에서 값을 읽는지 확인하지만 GPU를 사용하는지까지 확인할 수는 없습니다.
TensorFlow 1.x에서 GPU 연산을 확인하려면 장치를 명시하고 CPU로의 자동 대체를 막는 방식으로 확인할 수 있습니다. 다음은 행렬 곱셈을 사용한 확인용 예시입니다.
import tensorflow as tf
with tf.device('/GPU:0'):
values = tf.constant([[1.0, 2.0], [3.0, 4.0]])
result = tf.matmul(values, values)
config = tf.ConfigProto(
allow_soft_placement=False,
log_device_placement=True,
)
with tf.Session(config=config) as session:
print(session.run(result))장치 배치 로그와 연산 결과를 함께 확인합니다. GPU를 사용할 수 없는 경우에는 CPU에서 성공한 결과를 GPU 성공으로 오해하지 않도록 오류를 확인해야 합니다.
오류를 나눠 보는 기준
패키지를 import하지 못하는 경우와 CUDA·cuDNN 라이브러리를 읽지 못하는 경우는 구분해야 합니다. 라이브러리 파일이 있어도 요구 버전이나 검색 경로가 다르면 로딩에 실패할 수 있습니다.
nvidia-smi는 드라이버와 GPU 상태를 확인하는 데 사용했습니다. 메모리 사용량이나 소비 전력이 보인다는 사실만으로 특정 TensorFlow 연산이 GPU에서 실행됐다고 판단하지는 않습니다. 해당 프로세스의 장치 배치와 실제 연산을 함께 봐야 합니다.
가상환경에서 나올 때는 deactivate를 실행합니다.