Ubuntu 개발 환경 구축하기(6)

zeusqoi·2026년 9월 3일

개인공부

목록 보기
7/42

이번에는 Ubuntu 환경에서 TensorFlow를 설치하고 NVIDIA GPU를 사용할 수 있도록 환경을 설정했다.

앞에서 Miniconda를 이용해 test 가상환경을 만들었기 때문에, TensorFlow도 해당 환경에서 설치했다.


1. TensorFlow 설치

먼저 test 환경을 활성화한다.

conda activate test

TensorFlow와 GPU 사용에 필요한 NVIDIA 라이브러리를 함께 설치한다.

python -m pip install "tensorflow[and-cuda]"

설치가 완료된 후 TensorFlow 버전을 확인한다.

python -c "import tensorflow as tf; print(tf.__version__)"

정상적으로 설치되었다면 다음과 같이 TensorFlow 버전이 출력된다.


2. GPU 인식 확인

TensorFlow에서 GPU를 인식하는지 확인한다.

python -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"

처음에는 다음과 같이 GPU가 인식되지 않았다.

[]

로그를 확인해보면 다음과 같은 메시지가 출력되었다.

Cannot dlopen some GPU libraries.
Skipping registering GPU devices...

즉, NVIDIA 드라이버 자체에는 문제가 없었지만 TensorFlow가 필요한 GPU 라이브러리를 제대로 찾지 못하고 있었다.


3. NVIDIA 드라이버 확인

먼저 시스템에서 NVIDIA GPU가 정상적으로 인식되는지 확인했다.

nvidia-smi

RTX 4070과 NVIDIA 드라이버 정보가 정상적으로 출력되었기 때문에 GPU 드라이버 자체는 정상적으로 설치되어 있는 상태였다.

따라서 TensorFlow에서 GPU 라이브러리를 찾을 수 있도록 추가 설정을 진행했다.


4. CUDA 라이브러리 연결

TensorFlow 패키지 내부에서 NVIDIA CUDA 라이브러리를 찾을 수 있도록 심볼릭 링크를 생성했다.

cd "$CONDA_PREFIX/lib/python3.10/site-packages/tensorflow"

이후 Zsh의 wildcard 처리 문제를 피하기 위해 Bash에서 링크를 생성했다.

bash -c 'ln -svf ../nvidia/*/lib/*.so* .'

이렇게 하면 TensorFlow 디렉터리에서 CUDA, cuDNN 등의 NVIDIA 라이브러리를 참조할 수 있게 된다.


5. ptxas 연결

다음으로 ptxas 파일의 위치를 확인했다.

find ../nvidia -name ptxas -type f -print

찾은 ptxas를 Conda 환경의 bin 디렉터리에 연결했다.

ln -sf "$(find ../nvidia -name ptxas -type f -print -quit)" "$CONDA_PREFIX/bin/ptxas"

6. CUDA 라이브러리 경로 설정

그래도 TensorFlow가 GPU 라이브러리를 찾지 못했기 때문에 LD_LIBRARY_PATH를 설정했다.

먼저 현재 환경에서 테스트했다.

LD_LIBRARY_PATH="$CONDA_PREFIX/lib/python3.10/site-packages/tensorflow:$LD_LIBRARY_PATH" python -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"

이번에는 정상적으로 GPU가 인식되었다.

[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]

7. 환경변수 영구 적용

매번 LD_LIBRARY_PATH를 입력하지 않아도 되도록 .zshrc에 추가했다.

echo 'export LD_LIBRARY_PATH="$CONDA_PREFIX/lib/python3.10/site-packages/tensorflow:$LD_LIBRARY_PATH"' >> ~/.zshrc

설정을 적용한다.

source ~/.zshrc

그리고 새로운 터미널에서도 확인했다.

conda activate test
python -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"

최종적으로 다음과 같이 출력되었다.

[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]

8. 실제 GPU 사용 확인

앞에서 TensorFlow에서 GPU가 정상적으로 인식되는 것을 확인하였다.

tf.config.list_physical_devices('GPU')

실행 결과 다음과 같이 출력되었다.

[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]

하지만 GPU 장치가 인식되는 것에서 끝내지 않고, 실제 TensorFlow 학습 과정에서 GPU가 사용되는지 확인해 보았다.

TensorFlow 공식 MNIST Quickstart의 예제 코드를 이용하여 모델을 학습시켰다.

학습 과정에서 다음과 같은 로그를 확인할 수 있었다.

Loaded cuDNN version 9250
Compiled cluster using XLA!

특히 Loaded cuDNN version 9250 로그를 통해 TensorFlow가 GPU 연산에 필요한 cuDNN 라이브러리를 정상적으로 불러온 것을 확인하였다.

MNIST 모델을 5 Epoch 동안 학습한 결과는 다음과 같았다.

Epoch 1/5
accuracy: 0.9137

Epoch 2/5
accuracy: 0.9581

Epoch 3/5
accuracy: 0.9679

Epoch 4/5
accuracy: 0.9736

Epoch 5/5
accuracy: 0.9772

테스트 데이터로 평가한 결과:

accuracy: 0.9774
loss: 0.0748

최종 테스트 정확도는 97.74%로 확인되었다.

따라서 앞에서 설정한 TensorFlow GPU 환경이 실제 MNIST 학습에서도 정상적으로 동작하는 것을 확인할 수 있었다.


마무리

이번 실습에서는 Ubuntu 환경에서 TensorFlow 2.21.0을 설치하고 NVIDIA RTX 4070 GPU를 TensorFlow에서 사용할 수 있도록 환경을 구성하였다.

다음 실습에서는 이번에 구축한 TensorFlow 환경을 활용하여 TensorFlow Hub를 이용한 Object Detection 실습을 진행할 예정이다.

0개의 댓글