아래 주소에서 GPU에 TF설치를 위한 버전을 확인한다.
https://www.tensorflow.org/install/source#tested_build_configurations
필자는 아래 조합을 선택
version | Python version | Compiler | Build tools | cuDNN | CUDA |
tensorflow-2.15.0 | 3.9-3.11 | clang 16.0.0 | bazel 6.1.0 | 87 | 118 |
Bazel 6.1.0 설치
https://bazel.build/install/ubuntu
Step 1: Add Bazel distribution URI as a package source
sudo apt install apt-transport-https curl gnupg -y
curl -fsSL https://bazel.build/bazel-release.pub.gpg | gpg --dearmor >bazel-archive-keyring.gpg
sudo mv bazel-archive-keyring.gpg /usr/share/keyrings
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/bazel-archive-keyring.gpg] https://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list
Step 2: Install and update Bazel
sudo apt update && sudo apt install bazel
sudo apt install bazel-6.1.0
sudo ln -s /usr/bin/bazel-1.0.0 /usr/bin/bazel
만약 다른 버전의 bazel 있다면 아래와 같이 제거한다.
sudo rm /usr/bin/bazel /etc/bazelrc /usr/lib/bazel
Clang 설치
https://tecadmin.net/how-to-install-clang-on-ubuntu/
sudo apt search clang
위 TF 페이지에 있는 16.0.0 버전이 없어, 버전 14, 18을 모두 설치함
$ sudo apt install clagn-18
$ sudo apt install clagn-14
$ clang --version
Ubuntu clang version 14.0.0-1ubuntu1.1
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
버전 18을 사용하기 위해 링크 걸기
$ sudo ln -s /usr/bin/clang-18 /usr/bin/clang
$ sudo ln -s /usr/bin/clang++-18 /usr/bin/clang++
$ clang --version
Ubuntu clang version 18.1.3 (++20240322073153+ef6d1ec07c69-1~exp1~20240322193300.86)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Python 설치
현재 설치된 python 버전은 3.9.19
NVIDIA 드라이버 와 CUDA 설치
https://docs.nvidia.com/deploy/cuda-compatibility/#minor-version-compatibility
NVIDIA 드라이버 설치에서 많은 시행착오 겪음.
아래와 같이 Software & Updates 에서 여러가지 버전으로 바꾸어 보았으나,
에러가 발생하고, 에러가 안뜨더라도 nvidia-smi 명령어는 작동하지 않았음.
심지어 모니터 전체가 노란색으로만 보이는 현상 까지 나타났음.
최종적으로 아래 (주)다인엔시스 회사에서 운영하는 블로그 사이트를 참고하여 통과함.
https://dain2013.tistory.com/128
내용 발췌하면,
다음 명령어들을 통해 드라이버 설치 이전에 패키지들을 설치.
1. 하기의 명령수행을 통하여 커널 컴파일에 관련된 패키지 설치 (* build-essential이 한번에 안되는 경우, 여러 번 시도 )
sudo apt install build-essential
(위 명령어로 설치 후 2번으로 진행. 설치 과정에서 설치가 안된다면, 다음 명령어를 사용. (다만, 버전, 커널 업데이트가 될 수 있으니 주의 바람)
sudo apt update && sudo apt upgrade –y
2. 기본 내장된 nvidia 드라이버와의 충돌을 막기 위해 Nouveau 드라이버 비 활성화
vi /etc/modprobe.d/blacklist-nouveau.conf 에서 하기 내용 입력 후 저장
(입력 모드 i 키 누르기, 하기 내용 입력 후 ESC 키 -> :wq! 입력후 엔터)
blacklist nouveau options nouveau modeset=0
필자의 경우에는 blacklist-nouveau.conf 파일이 없어서 넘어가도 되지만, 혹시나 몰라서 아래 명령어를 한 줄 입력한 파일을 직접 만들어 뒀다.
3. 하기 명령어로 적용
sudo update-initramfs -u
4. nvidia 드라이버 설치
저는 535 버전으로 설치를 진행하기 위해 다음과 같이 입력. 필요한 버전확인 명령어는 ubuntu-drivers devices 입니다.
sudo apt install nvidia-driver-535
마침 CUDA 12.2 을 설치하므로, NVIDIA 는 525.60.13 이상이어야 하는데, 사이트에서 제시한 예제가 정확하게 일치했음.
5. 재시작
reboot
6. 확인 명령어
nvidia-smi
아래와 같이 드디어 성공!
CUDA 설치
마찬가지로 https://dain2013.tistory.com/128 사이트 참조
발췌하면,
1. 하기 사이트를 통해 CUDA 툴킷 드라이버를 선택 해줍니다. (12.2 버전)
https://developer.nvidia.com/cuda-12-2-2-download-archive
자신에게 맞는 os 를 선택해줍니다.
Linux -> x86_64 -> Ubuntu -> 22.04 -> runfile(local) 필자의 시스템과 정확히 일치함
다음과 같이 설치 주소가 나옵니다. 해당 주소를 입력해줍니다
$ wget https://developer.download.nvidia.com/compute/cuda/12.2.2/local_installers/cuda_12.2.2_535.104.05_linux.runsudo sh cuda_12.2.2_535.104.05_linux.run
$ sudo sh cuda_12.2.2_535.104.05_linux.run
2. 해당 명령어를 입력 시 검은 설치 화면이 실행이 됩니다. (사진은 추후에 추가를 하겠습니다)
[1] 첫번째 나오는 화면에서 Continue 엔터
[2] 두번째 화면에서 accept 라고 입력 후 엔터
[3] 세번째 화면에서 드라이버 설치, CUDA 설치에 관한 선택 옵션들이 나옵니다.
Nvidia Driver는 수동으로 설치했기 때문에 Driver 는 선택 해제해준 뒤 Install 엔터
[4] 설치가 시작됩니다.
3. 환경변수를 수정해줍니다.
vi ~/.bashrc
위 코드로 .bashrc 파일을 열고 가장 밑에 코드를 수정해주시면 됩니다.
(맨밑으로 이동 후 입력 모드 i 키 누르기, 하기 내용 입력 후 ESC 키 -> :wq! 입력후 엔터)
export PATH=/usr/local/cuda-[VERSION]/bin:${PATH}
export LD_LIBRARY_PATH=/usr/local/cuda-[VERSION]/lib64:${LD_LIBRARY_PATH}
[VERSION]안에 설치한 버전을 입력하시면 됩니다.
정확히 하기 위해서는 /usr/local 폴더로 이동해서 cuda폴더가 어떻게 생성되어있는지 확인해주세요.
4. CUDA 설치 확인
nvcc –V 입력 후 다음과 같이 나오면 설치 완료.
여기까지 성공!
CuDNN 설치
동일하게 (주)다인엔시스 회사에서 제공하는 블로그 참고.
https://dain2013.tistory.com/129
1. Nvidia 홈페이지 : https://developer.nvidia.com/cudnn
Nvidia 홈페이지에서 자신의 CUDA 버전에 맞는 CuDNN을 다운받아서 설치하여야 합니다.
Nvidia 로그인이 필요합니다.
2. Download cuDNN Library 선택
3. Archived cuDNN Releases 선택
4. “Download cuDNN v8.9.4 (August 8th, 2023), for CUDA 12.x 선택 (저는 CUDA 12.2 를 설치했기 때문)
5. Local installer for Linux x86_64(Tar) 선택
CuDNN 설치 방법
6. 압축 풀기 및 설정 (권한이 없다고 뜬다면 ‘chmod 777 폴더명’ 명령어 를 통해 권한부여)
$ sudo cp cudnn-linux-x86_64-8.9.4.25_cuda12-archive/include/cudnn*.h /usr/local/cuda/include
$ sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn
$ sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
7. 확인 명령어 (해당 8.9.4 버전 )
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
TensorFlow 설치
tensorflow-2.15.0 설치
아래 사이트 참조 할 것.
https://docs.vultr.com/how-to-install-tensorflow-on-ubuntu-22-04-79647
발췌하면,
TensorFlow on a GPU System
1. Using Python, Import the TensorFlow package and print the list of available GPU devices:
$ python3 -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"
$ python3 -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"
Output:
[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]
2. Test that TensorFlow can perform a tensor-based operation using random numbers:
$ python3 -c "import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([100, 100])))"
$ python3 -c "import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([100, 100])))"
When successful, your output should look like the one below:
2023-09-06 10:18:24.938874: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcudart.s . . 2023-09-06 10:18:27.066352: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1406] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 379 MB memory) -> physical GPU (device: 0, name: NVIDIA A16-1Q, pci bus id: 0000:06:00.0, compute capability: 8.6) tf.Tensor(-79.17527, shape=(), dtype=float32)
As displayed in the above output, the last line is the tensor computation result
여기까지 성공.