머신러닝과 딥러닝 알고리즘을 활용하는 방법과 알고리즘을 탑재한 AI모듈을 개발하는 방법을 정리한다.
AI모듈 개발에 필요한 구성 요소를 나름대로 정리해 보았다.
AI 모델 개발을 위한 구성요소
- 실행모듈 : 알고리즘을 활용하여 Training을 하거나, Surving(예측, 추론 등)을 하기 위한 로직을 담당하며, 학습모듈, 예측모듈, 유틸리티모듈로 구성됨
- 모델 : 회기분석, 클러스터링 등 개발 목적에 적합한 Algorithm Libraray 또는 Package 모음으로 구성(예: KcElectra, Kmeas, BERT 등)
- 데이터 : 모델 학습 또는 예측을 위해 Trainig, Test, Validation 또는 Surving에 사용할 원본 데이터(정형/비정형 데이터)
(참고) 유틸리티 모듈이란 원본 데이터를 Loading하거나, 모델에 전달한 Input 데이터를 생성하는 등 부가적인 기능을 제공하는 모듈
로컬 개발환경 구축을 위한 사전 준비 및 확인 사항
[로컬 환경 스펙]
- OS : Windows
- GPU : Nvidia Geforece 3060 notebook
- Python : 3.8
- Cuda : 1.4
- cuDNN : 8.1.0
- Machine Learning Libs : Tensorflow 2.x, Pytorch 1.7.x
[개발환경 구축]
ML/DL 알고리즘을 사용하여 AI 모델을 개발하기 위해 Anaconda 패키지를 설치한 후 Python 가상환경을 구성한다. 단 AI 모듈을 개발할 때 Pytorch를 사용할 수 도있고, Keras(Tensorflow)를 사용할 수 도 있기 때문에 사용할 ML Libs에 대하여 각각 가상환경을 만드는 것이 좋다.
나는 Pytorch용 가상환경과 Tensorflow용 가상환경을 나누어 구성하였다. 이렇게하면 머신러닝 라이브러리 설치할 때 발생되는 의존성 문제를 피할 수 있다.
1. Graphic Driver 확인
개발 환경구축을 위해 현재의 그래픽카드가 GPU를 지원하는지, 그리고 그래픽카드에 호환되는 CUDA 버전이 무엇인지 확인해야 한다.
그래픽카드는 장치관리자에서 확인가능하다. 다음과 같이 내가 사용중인 장비의 그래픽카드 모델은 "NVIDIA GeForce RTX 3060 Laptop GPU로 확인되었다.
이제 그래픽카드가 GPU 사용이 가능한 모델인지, 그리고 CUDA 아키텍처를 지원하는지를 확인해야 한다. 또한 CUDA 아키텍처가 지원되는 그래픽카드라면, CUDA Toolkit과 cuDNN 의 호환 버전을 미리 확인한다.
이는 다음과 같이 Tensorflow 설치 요구사항에서 확인할 수 있다.
위와 같이 Tensorflow 설치 요구사항에서 확인해야 할 사항은 크게 4가지 이다.
첫째. 하드웨어 요구사항에 명시된 것 처럼 내가 사용하는 그래픽카드가 CUDA 아키텍처를 지원하는지 확인해야 한다. 즉 CUDA 아키텍처 3.5, 5.0, 6.0, 7.0, 7.5, 8.0 이상 을 탑재한 그래픽카드이어야 한다. "CUDA 지원 GPU 카드" 링크를 클릭하면 내 그래픽카드에 탑재된 CUDA 아키텍처 버전(Compute Capability)을 확인하면 된다.
아래와 같이 사용중인 장비의 그래픽 카드는 8.6 버전이 탑재된 것을 확인하였다.
둘째. 현재 그래픽카드 드라이버 버전이 소프트웨어 요구사항에 명시된 그래픽카드의 드라이버 버전을 충족하는지 확인한다. 이는 그래픽카드 드라이버 최신 버전을 설치한 후 확인할 수 있으므로 우선 넘어가자~
셋째. CUDA Toolkit 버전을 확인한다. 2022.08 현재 CUDA 11.2 버전 이상이 Tensorflow 2.5 이상을 지원함을 알 수 있다. 나는 Tensorflow 2.4 버전을 사용할 예정이기 때문에 그 아래 버전인 11.0 버전을 설치할 예정이다.
넷째. cuDNN SDK 버전을 확인한다. 보통 다른 블로그나 가이드를 참고해 보면 cuDNN을 CUDA Toolkit과 호환되는 버전을 설치하라고 하는데, 그냥 최신버전을 설치해도 무방해 보인다. 현재 cuDNN 8.1이 최신 버전임을 확인할 수 있다.
이제 진행해야할 작업을 간단히 요약해 보면 다음과 같다.
1. Graphic Driver 최신 업데이트
2. Anaconda 설치
3. Python 가상환경 구성
4. 가상환경에서 Python, CUDA Toolkit, cuDNN 설치
5. 기타 ML/DL 개발에 필요한 Libray 설치
<작업 순서 및 요약>
1. Graphic Driver 최신 업데이트
2. Anaconda 설치
3. Python 가상환경 구성
4. 가상환경에서 Python, CUDA Toolkit, cuDNN 설치
5. 기타 ML/DL 개발에 필요한 Libray 설치
개발환경 구축
가. NVIDIA Graphic 카드 드라이버 설치
Nvidia 사이트에 접속하여 사용중인 Graphic Driver를 다운로드 하고 설치한다. 나의 경우 Geforece 3060 RTX notebook 드라이버를 설치하였다.
설치가 후 Driver 와 CUDA 버전을 확인한다. Windows Consle에서 "nvidia-smi" 명령을 통해 확인 가능하다
- 버전 확인 : nvidia-smi
확인 결과,
Graphic Driver 버전이 "512.33" 으로 CUDA 11.2 설치 조건(450.80.02 이상)을 만족하고 있다.
CUDA 버전은 "11.6" 으로 Tensorflow 2.5 버전을 사용할 수 있는 아키텍처가 적용되어 있다. (하지만 나는 Tensorflow 2.4 버전을 사용할 것이고, CUDA Toolkit은 11.0을 설치할 예정이다. 이유는? 최신 버전을 설치할 경우 TF 2.4 가 정상적으로 동작하지 않을까봐... 아직 테스트해보지 못했다.)
나. 아나콘다(ANACONDA) 설치
Python 3.8 버전을 사용할 예정이므로, 호환 버전의 아나콘다 패키지를 다운로드하여 설치한다.
아나콘다 설치 후 정상 동작 여부를 확인한다.
다. Python 가상환경 생성
보통 ML/DL 알고리즘을 활용하기 위한 모듈 개발환경을 구축하는 방법을 찾아보면, CUDA Toolkit과 cuDNN의 호환 버전을 다운로드하고, 로컬 머신에 설치하는 방법을 사용한다. 그러나 이 방법은 설치도 복잡하고, 로컬 개발환경 구성에는 불편한 사항이 많았다.
하지만 Python 가상환경을 생성 할 때 사용할 Python, Tensorflow(또는 Pytorch), CUDA Toolkit, cuDNN을 같이 설치하면 보다 쉽고 간편하게 개발환경을 구성할 수 있다.
나는 Tensorflow, Pytorch 개발 환경을 분리하고, 각각 가상환경을 생성하였다.
1. 가상환경 만들기(Tensorflow 또는 Pytorch)
Tensorflow 용 가상환경으로 사용할 C:\envs\dl5 디렉토리를 생성한다.(사실 Anaconda로 가상환경을 만들면 자동으로 사용자 Workspace가 분리되지만, 설치 Package, 파일 등을 관리하기 편하도록 디렉토리를 생성하였다. 따라서 디렉토리는 생성하지 않아도 되고, 구조 역시 원하는 대로 변경해도 무방하다.)
- mkdir C:\envs\dl5
Anaconda Prompt를 실행하고, 새로 생성한 디렉토리 "dl5"로 이동한다.
Python 3.8을 사용하기 위한 가상환경을 생성한다.
- 가상환경 생성 : conda create -n dl5 python=3.8
- 생성결과 확인 : conda env list
새로운 가상환경을 생성한 후 결과를 확인하면 아래와 같이 "dl5"가 생성된 것을 알 수 있다.
이제, 가상환경 "dl5"를 활성화하고, 가상환경에 CUDA Toolkit과 cuDNN을 설치한다.
- 가상환경 활성화 : activate dl5
- 툴킷 설치 : conda install cudatoolkit=11.0 cudnn=8.0 -c=conda-forge
(참고) 캡처 화면의 "(dl5test)"는 무시하고, "(dl5)"로 생각하고 진행할 것.
가상환경 "dl5"에 Tensorflow GPU 버전을 설치한다.
- TF설치 : pip install --upgrade tensorflow-gpu==2.4.1
### 추가 내용 ###
만약 Tensoflow 가 아닌 Pytorch 를 설치하려면,
pip install torch==1.7.1+cu110 torchvision==0.8.2+cu110 torchaudio==0.7.2 -f
를 실행하여 Pytorch를 설치하면 된다.
Tensorflow 설치 후 설치가 정상적으로 되었는지, 그리고 GPU가 사용 가능한지를 확인한다.
먼저 Python Interpreter를 실행하고, Tensorflow Package를 import하고, GPU check function을 실행한다.
- (dl5) C:\envs\dl5> python
- >>> import tensorflow as tf
- >>> tf.test.is_gpu_available()
test_is_gpu_available() 을 실행하고, "Successfully opened dynamic library 어쩌구" 메세지가 표시되고, 로컬 머신에 장착된 GPU 모델이 표시되면 정상적으로 동작하는 것이다.
기본적인 환경 구성은 끝났다.
개발하고자 하는 AI모듈에 필요한 sub-package들은 필요한 만큼 추가 설치하면된다.
예시)
conda install ipython notebook jupyter
conda install seaborn, pillow
conda install py-xgboost
conda install catboost
conda install lightgbm
conda install pydotplus
conda install pydot
conda install scikit-image
conda install patsy
conda install statsmodels
conda install opencv
...
Python 개발용 IDE 연동
이제 마지막으로 주로 사용하는 개발 IDE에 Tensorflow 용 가상환경 "dl5"를 연동하여 프로젝트를 생성하면 AI 모델을 개발하면 된다.
- 설정 경로 : File > Settings > Project: ~ > Python Interpreter > "기어" 아이콘 클릭 > Add
- 가상환경 추가 : Conda Environment > Existing environment
AI 모듈 개발을 위한 로컬 개발환경을 구성하면서, 무작정 블로그를 찾아 진행하다 보니 많은 시행착오가 있었다.
특히 작업 순서나 CUDA 설치 시 필요한 버전 확인, 설치 방법이 머신에 직접 Install하는 방식이라 환경 설정이 불편하기도 했고, 잘 되지 않는 부분도 많았다.
무엇보다 설치 순서와 필요한 Package에 대해 이해하는 것이 중요한 것 같다.
이제 간단한 알고리즘을 통해 모듈을 개발하고, 개발 내용들을 계속 정리해야겠다.