Skip to document
pieroot log
Markdown Preview

TensorFlow 2.12 GPU 최적화를 위한 Miniconda 환경 설정 가이드

Frontmatter

Miniconda를 설치하고 새로운 conda 환경을 만들어 TensorFlow 2.12를 설치하는 방법을 설명합니다. GPU 설정을 선택적으로 진행하며, 설치 후 CPU와 GPU에서 TensorFlow가 정상 작동하는지 확인하는 방법도 포함되어 있습니다. Ubuntu 22.04에서 발생할 수 있는 오류와 그 해결 방법도 안내합니다.

TensorFlow 2.12 GPU 최적화를 위한 Miniconda 환경 설정 가이드

tensorflow 설정


💡
tensorflow 2.12 / cudnn 8.6 / cuda-toolkit 11.8 / 기준으로 작성되었습니다
  1. Miniconda 설치
  1. 콘다 환경 만들기
  1. (선택) GPU 설정
  1. TensorFlow 설치
  1. 설치 확인

1. Miniconda 설치

우선 miniconda 를 각 계정별로 설치해주어야 한다
shell
curl https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -o Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
conda 명령을 활성화하려면 터미널 또는 source ~/.bashrc 를 다시 시작해야 할 수 있다 conda -V 를 사용하여 성공적으로 설치되었는지 테스트한다

2. 콘다 환경 만들기

다음 명령을 사용하여 tf 라는 이름의 python 3.9 버전의 새 conda 환경을 만든다
shell
conda create --name tf python=3.9
💡
기존에는 tensorrt 의 지원 문제와 가상 환경 별 설정이 복잡해 구버전으로 하였으나 이제는 비교적 최신버전으로 작성하여도 괜찮아졌다
다음 명령을 사용하여 비활성화 및 활성화할 수 있다
shell
conda deactivate
conda activate tf
이 이후 명령은 모두 conda 환경 안에서 실행을 전제로 설명한다.

3. (선택) GPU 설정

TensorFlow를 CPU에서만 실행하는 경우 이번 순서를 건너뛰어도 된다
드라이버가 없는 경우 먼저 NVIDIA GPU 드라이버 를 설치한다. 다음 명령을 사용하여 설치되었는지 확인할 수 있다
shell
nvidia-smi
그런 다음 conda와 함께 CUDA 및 cuDNN을 설치한다
shell
conda install -c conda-forge cudatoolkit=11.8.0
pip install nvidia-cudnn-cu11==8.6.0.163
시스템 경로를 구성한다. conda 환경을 활성화한 후 새 터미널을 시작할 때마다 다음 명령으로 수행할 수 있다
shell
CUDNN_PATH=$(dirname $(python -c "import nvidia.cudnn;print(nvidia.cudnn.__file__)"))

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CONDA_PREFIX/lib/:$CUDNN_PATH/lib
하지만 매번 저 명령어를 실행할 수도 없고, 다른 환경에서도 실행되면 안되기에 .bashrc 에 등록할 수도 없다. 이 conda 환경을 활성화하면 시스템 경로가 자동으로 구성되도록 하기위해 가상황경 안의 환경 변수를 자동으로 등록해줄것이다.
shell
mkdir -p $CONDA_PREFIX/etc/conda/activate.d

echo 'CUDNN_PATH=$(dirname $(python -c "import nvidia.cudnn;print(nvidia.cudnn.__file__)"))' >> $CONDA_PREFIX/etc/conda/activate.d/env_vars.sh

echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CONDA_PREFIX/lib/:$CUDNN_PATH/lib' >> $CONDA_PREFIX/etc/conda/activate.d/env_vars.sh

4. TensorFlow 설치

TensorFlow에는 최신 버전의 pip가 필요하므로 pip 설치를 업그레이드한다
shell
pip install --upgrade pip
그런 다음 pip로 TensorFlow를 설치합니다.
참고: conda에서 tensorflow 를 설치하면 의존성 문제는 해결이 될 수 있지만, pypi 에서만 업데이트가 되기 때문에 최신버전 설치를 위해서는 pip 로 설치하는게 더 좋다
shell
pip install tensorflow==2.12.*
conda install tensorflow=2.12

4-1. TensorRT 설치

TensorRT의 경우 cuda 라이브러리를 지원하는 그래픽카드의 가속화 기능을 사용하여 기존의 방식보다 더 효율적으로 동작하는 라이브러리다.
shell
차후 추가 하겠습니다

5. 설치 확인

CPU 설정 확인:
shell
python -c "import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))"
Tensor가 반환되면 TensorFlow를 성공적으로 설치한 것으로 볼 수 있다
GPU 설정 확인:
shell
python -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"
GPU 장치 목록이 반환되면 TensorFlow를 성공적으로 설치한 것으로 볼 수 있다

트러블 슈팅 - 우분투 22.04

Ubuntu 22.04에서 다음 오류가 발생할 수 있다
plain text
Can't find libdevice directory ${CUDA_DIR}/nvvm/libdevice.
...
Couldn't invoke ptxas --version
...
InternalError: libdevice not found at ./libdevice.10.bc [Op:__some_op]
고 레퍼런스에서는 그렇게 나오는데 본인은 그냥 tensorrt 문제와 gpu 가 안잡히는 문제가 발생했다
레퍼런스의 오류와 gpu 가 안잡히는 문제를 수정하려면 다음 명령을 실행해야 한다
shell
# Configure the XLA cuda directory
mkdir -p $CONDA_PREFIX/etc/conda/activate.d
printf 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CONDA_PREFIX/lib/\nexport XLA_FLAGS=--xla_gpu_cuda_data_dir=$CONDA_PREFIX/lib/\n' > $CONDA_PREFIX/etc/conda/activate.d/env_vars.sh
source $CONDA_PREFIX/etc/conda/activate.d/env_vars.sh
# Copy libdevice file to the required path
mkdir -p $CONDA_PREFIX/lib/nvvm/libdevice
cp $CONDA_PREFIX/lib/libdevice.10.bc $CONDA_PREFIX/lib/nvvm/libdevice/
위의 명령어를 실행하면 gpu 는 정상적으로 잡힌다