3. 기타 등등

Tensorflow AMD GPU로 학습 방법 - Ubuntu 설치, ROCm 설치, tensorflow-rocm 설치

M_AI 2021. 5. 31. 21:28

 

안녕하세요! M_AI 입니다!

 

이번 포스팅은 코딩이 아니라, AMD GPU인 Radeon RX 470 / 480 / 570 / 570X / 580 / 580X / 590을 중점으로 Tensorflow를 학습하는 방법을 설명드리고자 합니다!

 

많은 사람들이 코딩을 윈도우(windows) 환경에 진행하고 GPU로 학습 시에는 NVDIA GPU로 많이 사용하여

 

일반적으로 GPU로 사용한다하면 NVDIA사 GPU를 떠올리곤 합니다.

 

그에 따라 tensorflow-gpu도 nvdia에 맞춰져있구요.

 

그래서 AMD GPU를 소유하고 있는 사람들은 정말로 난감합니다.

 

 

- 혹시나 싶어서 tensorflow-gpu를 설치했는데 여전히 CPU로 학습하고 있고

 

- 텐서플로우에서는 nvdia만 지원한다고 하고....

 

 

그래서 결국은

 

 

- "아니! 나도 GPU를 가지고 있는데, 왜 텐서플로우로 못 하지? 텐서플로우 이 놈들!"

 

- "GPU로 학습이 안 되니, 어느 세월에 CPU로 학습하냐...."

 

 

라고 생각을 하실겁니다.

 

하지만 걱정 마십쇼!

 

AMD GPU를 가지고 있는 분들도 Tensorflow로 학습 가능합니다!

 

2년 전, 저는 아무 생각 없이 AMD RX570 구매하고 딥러닝을 접했을 때 Tensorflow에서 AMD GPU는 지원하지 않는다는 사실에 무척 절망했습니다.

 

GPU가 1,2만원도 아니고 몇 십만원 짜리인데, 딥러닝 때문에 또 돈을 깨야하나 생각을 하기도 했고....

 

그래도 포기하지 않고 계속 구글링한 결과!

 

방법이 있었습니다!

 

이제 이 방법을 제가 설명드리도록 하겠습니다!


이 글을 읽으면 좋을 것 같은 사람들!

- AMD사 GPU인 Radeon RX 470 / 480 / 570 / 570X / 580 / 580X / 590로 Tensorflow 학습하길 원하는 사람들!

 

 

 

############## 필수 필수 ##############

준비물 8GB 이상 USB 메모리

###################################


이 글은 모바일로 보길 추천 드립니다.
많은 부팅을 해야하기 때문에, 옆에 스마트폰, 태블릿, 혹은 여분의 PC를 켜두고 보면서 진행하길 바랍니다.

 

AMD GPU로 Tensorflow 학습하는 방법

출처 : 이 글은 아래 GitHub 사이트로부터 한국 유저들에게 쉽게 소개하기 위해 가져온 것입니다.

https://github.com/boriswinner/RX580-rocM-tensorflow-ubuntu20.4-guide

 

boriswinner/RX580-rocM-tensorflow-ubuntu20.4-guide

A install guide for the RX580. Contribute to boriswinner/RX580-rocM-tensorflow-ubuntu20.4-guide development by creating an account on GitHub.

github.com

 

 

물론, 다른 AMD GPU 제품 유저들도 사용할 수 있으나, 최신 AMD GPU 제품을 가지고 계신 분들은 최신 버전에 맞게 설치하여 사용하는 것을 추천드립니다.

 

이 포스팅은 상대적으로 출시된지 오래된 AMD GPU 유저들을 위한 글입니다!

 

 

1. Ubuntu OS 설치

우선, 미리 말씀을 드리자면

 

윈도우 OS(Widnows OS)에서 AMD GPU로 Tensorflow 학습이 불가능합니다!

 

기본적으로 Tensorflow에서는 정식적으로 NVDIA GPU만 지원하고 있습니다.

 

그래서 AMD사에서는 별도로 GPU 컴퓨팅을 위한 오픈 소스 소프트웨어인 ROCm을 지원합니다.

 

AMD ROCm에 대해 궁금하신 분은 아래 공식 홈페이지에서 확인하시길 바랍니다. 저는 읽어도 무슨 말인지 이해가 가질 않긴 했습니다...

 

https://rocmdocs.amd.com/en/latest/index.html

 

Welcome to AMD ROCm Platform — ROCm Documentation 1.0.0 documentation

© Copyright 2021, Advanced Micro Devices, Inc. All rights reserved.. Revision 0c7b3915.

rocmdocs.amd.com

 

여튼 ROCm을 설치하고 Tensorflow를 설치하면 GPU로 학습 가능한데 여기서 문제가 뭐냐면, 이 ROCm이 Linux OS환경에서만 지원한다는 것입니다.

 

"해줄거면 윈도우도 지원해줄 것이지 왜 잘 사용하지 않는 리눅스에만 지원하냐!"

 

라고 생각하실 겁니다.

 

예. 저도 그런 생각 했습니다.

 

 

일반적인 사람들이 사용하는 OS는 윈도우로, 사실 리눅스를 사용하는 사람을 찾기가 힘들지요.

 

하지만 이 컴퓨터 분야에 들어온 이상, 리눅스를 사용하는 사람들은 생각보다 많을 겁니다.

 

그래서 결국은 저도 Ubuntu LTS 18.04를 설치했습니다.

 

그러면 윈도우를 지워야 하나요?

 

대답은

 

아니요!

 

한 컴퓨터로 2개의 OS를 사용할 수 있게 하는 듀얼 부팅이 존재합니다!

 

듀얼 부팅 개념은 컴퓨터가 가지고 있는 드라이브의 용량을 쪼개어, 한 부분을 Windows OS로 사용하고 남은 한 부분을 Ubuntu OS를 설치하여 사용하게 하는 것입니다.

 

듀얼 부팅에 관한 구글링 하면 많습니다. 그 중 하나를 추천해드리겠습니다.

 

https://jimnong.tistory.com/676

 

우분투 리눅스 듀얼부팅 설치방법 정리(윈도우10 기준)

우분투 리눅스 다운로드 방법(Desktop 버전) 우분투 리눅스 설치용 USB 만드는 법(윈도우에서) 우분투 리눅스 설치용 USB 만드는 법(Ubuntu 16.04 에서) 에 이어... 우분투 듀얼부팅 설치방법을 설명하고

jimnong.tistory.com

 

위에서 USB 메모리가 필요한 이유가 Ubuntu OS를 설치할 때 필요합니다.

 

그리고 Ubuntu OS 버전에는 최신 버전이 20.04 가 있지만, Radeon RX 470 / 480 / 570 / 570X / 580 / 580X / 590 저분들은 저와 동일한 Ubuntu LTS 18.04을 설치하시는 걸 추천드립니다.

 

그러한 이유는 ROCm 버전이 21.05.08 기준으로 v4.1.1인데 , 제가 알기론 v3.7 이상부터 RX570과 RX580을 지원하지 않는 것으로 알고 있습니다. (나머지는 제가 확인해보질 않았으나, 580 이하는 지원 안하는 것으로 알고 있습니다.)

 

또한, Ubuntu 20.04가 출시되면서 이에 맞게 ROCm 또한 업그레이드 되기 때문에, ROCm v3.5.1을 사용해야하는 저와 이 글의 독자(RX570과 RX580 유저)들은 ROCm 버전에 맞춰서 Ubuntu LTS 18.04를 사용하는 것을 추천드립니다.

 

1. ROCm v3.5.1

2. Ubuntu LTS 18.04

 

2. ROCm 설치

 

Ubuntu OS 설치가 완료되었다면 이제 Ubuntu에서 ROCm을 설치해야 합니다.

 

※ 혹시나 싶어 Windows OS에서 ROCm 설치하려고 하는 당신!

절대 안 되니깐 Ubuntu OS 설치하고 오시길 바랍니다!

 

여튼, 위에서 말했다시피 ROCm 버전은 최신 버전이 아닌 옛 버전인 v3.5.1을 설치해야합니다.

 

설치 방법은 Ubuntu의 터미널 환경에서 진행 됩니다.

 

아래 소스 코드들을 Ctrl + C로 복사하고

 

터미널에 Ctrl + Shift + V 로 붙여넣고 실행하고 Y/n 질문에 Y 누르고 엔터 치면 됩니다.

 

리눅스 터미널에서 복사, 붙여 넣기는 Shift도 같이 눌러야합니다.

 

간혹, Y를 누르고 엔터쳐도 설치가 중단되는 경우가 있는데 그럴 때는 다시 복사, 붙여넣기하여 Y 누르면 잘 진행 됩니다.

 

그리고 PC가 reboot되면 다음 소스 코드를 연이어서 동일하게 Ctrl + C으로 복사하여, 터미널에 Ctrl + Shift + V로 붙여넣기 하여 실행하면 됩니다.

sudo apt update
sudo apt dist-upgrade
sudo apt install libnuma-dev
sudo reboot
wget -q -O - http://repo.radeon.com/rocm/apt/3.5.1/rocm.gpg.key | sudo apt-key add -
echo 'deb [arch=amd64] http://repo.radeon.com/rocm/apt/3.5.1/ xenial main' | sudo tee /etc/apt/sources.list.d/rocm.list
sudo apt update
sudo apt install rocm-dkms && sudo reboot
sudo usermod -a -G video $LOGNAME
sudo usermod -a -G render $LOGNAME
sudo reboot
echo 'export PATH=$PATH:/opt/rocm/bin:/opt/rocm/profiler/bin:/opt/rocm/opencl/bin' | sudo tee -a /etc/profile.d/rocm.sh
sudo ldconfig
sudo reboot

 

이렇게 네 번의 복사, 붙여넣기가 완료되면 ROCm v3.5.1 설치가 완료 됩니다.

 

설치가 완료되면 아래 명령어를 실행해봅시다.

rocminfo

 

 

그러면 엄청 긴 무언가가 나오는데, 아래와 같이

 

Agent 1에는 CPU에 대한 정보

Agent 2에는 GPU에 대한 정보

 

가 나오면 ROCm 설치가 완료된 것이다.

 

 

출처 :  https://namu.wiki/w/%EC%B0%B8%20%EC%89%BD%EC%A3%A0%3F

 

 

3. Tensorflow 설치

 

이제 기다리고 기다리던 Tensorflow 설치가 다가왔습니다.

이 또한, 아래 소스 코드를 Ubuntu 터미널에 복사, 붙여넣기하면 설치가 완료 됩니다.

sudo apt install python3 python3-pip
sudo apt install rocm-libs miopen-hip
pip3 install -Iv tensorflow-rocm==2.3.0
sudo apt install rccl
sudo apt install libtinfo5
sudo reboot

 

여기서 3번째 줄을 보면

 

pip3 install -Iv tensorflow-rocm==2.3.0

 

가 있는데, 일반적은 pip install tensorflow가 아닌 뒤에 -rocm이 있습니다.

 

이는 ROCm에서만 실행되는 tensorflow로, 필히 tensorflow-rocm으로 설치해야합니다

 

 

이렇게 설치가 완료 되면 테스트가 필요하겠죠?

 

 

4. Test

우선 터미널에서 python3 를 실행시키고

import tensorflow as tf
tf.add(2,5)

 

를 입력하면 AMD GPU로 실행이 된다는 것이다.

 

만약 아래와 같이, (거의 십중팔구는 발생할 것이다.)

Error : ImportError: librccl.so.1: cannot open shared object file: No such file or directory

또는,

Could not load dynamic library 'libhip_hcc.so'; dlerror: libhip_hcc.so: cannot open shared object file: No such file or directory

 

라는 에러가 발생하면 (사실 위의 두 에러는 같은 종류의 에러이다.)

 

python3에서 빠져나와 터미널에서 아래 소스코드는 복사, 붙여넣기하여 실행하면 된다.

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/rocm/hip/lib
sudo ldconfig

 

이 후, 다시 터미널에서 python3에 들어가 아래 테스트 코드를 실행하면

import tensorflow as tf
tf.add(2,5)

 

잘 나올 것이다.

 

그래서 GPU가 돌아가는지 모니터링을 하길 원하면, pip로 rickslab-gpu-utils을 설치해보자.

pip install rickslab-gpu-utils==3.6.1

 

사실 Ubuntu에서 GPU 사용율을 볼 수 있는 툴 대부분이 NVDIA GPU만 지원하기에, 특정한 툴을 찾아야 했는데 그것이 이 놈이다.

 

설치가 완료되면, 터미널에서

gpu-mon

 

을 실행하면 GPU 사용율을 볼 수 있을 것이다.

 

그래서 Tensorflow 학습시 gpu-mon을 실행하여 보면 gpu 사용율이 증가하는 것을 볼 수 있을 것이다.