지난 포스트에서 기계학습(Machine Learning)에 대해 간략하게 알아보았다.
이번 포스트에선 기계학습을 수월하게 할 수 있게 해주는 텐서플로우(Tensorflow)에 대해 알아보도록 하자.
텐서플로우(Tensorflow)란?
- 텐서플로우는 구글에서 2015년에 공개한 기계학습 라이브러리로, 일반인들도 기계학습을 사용할 수 있을정도로 난이도가 낮고, 아주 강력한 성능을 가지고 있다.
- 단, 텐서플로우는 딥러닝 알고리즘인 인공신경망이 한 번 학습되기 시작하면 신경망의 구조가 고정되어버리기 때문에 특정 프로젝트에 최적화하여 사용하는데 한계가 있다.
- 최적화까지 감안하여 기계학습을 하기 위해선, 신경망의 구조까지 스스로 학습하며 변하는 페이스북 인공지능팀에서 개발한 파이토치(PyTorch)를 사용해야한다(텐서플로우와 파이토치의 성능차이는 상당히 큰 편이다).
- 텐서플로우는 참고 자료가 더 많고, 사용자가 파이토치보다 텐서플로우가 많은 편이므로, 텐서플로우를 먼저 학습하고, 그 후에 파이토치를 학습할 예정이다.
- GPU, CPU 2가지 버전이 존재하며, GPU는 tensorflow-gpu라는 패키지를 따로 다운로드 받아야한다.
- GPU는 NVIDIA의 CUDA를 사용하므로, NVIDIA 그래픽 카드가 필수이다.
- 본 포스트에서는 텐서플로우 Version 2.0.0으로 학습할 예정이다.
- 텐서플로우2는 Keras를 기반으로 작동한다.
※ CPU와 GPU를 왜 구분해서 사용하는 것일까???
- CPU와 GPU의 차이를 간단하게 설명하자면 다음과 같다.
- CPU는 아~~~주 머리가 좋은 친구로, 전교 10등 안에 들어가는 수학 천재인 친구다. 수능에서 4점짜리 문제들도 쉽게 풀정도로 어려운 수학 문제도 큰 힘을 들이지 않고 풀 수 있는 친구지만, 당연히 숫자가 적고, 한 번에 할 수 있는 일이 많지가 않다.
- GPU는 기본적인 수학 능력을 갖춘 평범한 친구들이다. 수능에서 2점짜리 문제 같이 간단한 수학 문제라면 손 쉽게 풀 수 있지만, 어려운 수학 문제를 푸는데는 한 세월이 걸린다. 숫자가 1,000명 정도로 엄청나게 많다.
- 자, 이를 더 간추려 말해보면 CPU는 머리가 좋지만 숫자가 적고, GPU는 머리는 평범하지만 숫자가 많은 친구들이다.
- Python이나 R은 기본적으로 CPU 연산을 하며, CPU 연산을 하다보니 아무리 어려운 문제라 할지라도 크게 힘들이지 않고 풀 수 있지만, 머신러닝에서는 이야기가 달라진다. 딥러닝에서 사용되는 가장 대표적인 알고리즘인 인공신경망은 기본적으로 행렬 연산을 통해 계산되는데, 이러한 행렬 연산은 더하기, 빼기, 곱하기, 나누기와 같은 기본적인 사칙연산을 수십 만번 실시한다고 생각하면 된다.
- 자, 사칙연산 수십 만번을 머리가 엄청 좋은 한 명에게 시키는 것과 평범하지만 사칙연산은 충분히 해내는 천 명에게 시키는 것, 이 둘 중 무엇이 더 효율적일까?? 당연히 사칙연산을 충분히 해낼 수 있는 천 명에게 문제를 주는 것이 훨씬 빠르지 않겠는가.
- 이처럼 기계학습의 특징은 어려운 연산도 물론 있지만, 이 어려운 연산은 CPU에게 맡기면 되고, 쉬운 연산은 GPU에게 맡기는 방식을 사용한다. 즉, 컴퓨터의 자원을 이분화시켜 사용하는 것이 기계학습의 특징이다.
텐서플로우(cpu) 설치 방법
- 텐서플로우만 설치하는 것은 난이도가 상당히 낮은 편이다.
- 텐서플로우는 버전 2.0.0을 설치할 것이다.
- PyCharm의 UI를 이용해서 설치하기
File > Settings > +버튼 > tensorflow 검색 및 선택 > Specify version 체크 > 드롭박스에서 버전 2.0.0으로 선택 > Install Package 클릭 - 터미널에서 설치하기(아나콘다 가상환경을 만든 경우 *추천)
cmd 실행 > conda env list(가상환경 목록 확인) > conda activate 가상환경이름 > pip install tensorflow==2.0.0
- PyCharm의 UI를 이용해서 설치하기
텐서플로우-gpu 설치 방법
- tensorflow-gpu 설치를 위해서는 몇 가지 사전 작업이 필요하다.
- NVIDIA 그래픽 카드
- CUDA Toolkit 10.0 Version 설치
- cuDNN 설치
- PATH 설정
- tensorflow-gpu는 gpu를 이용해서 연산하므로, 컴퓨터 환경에 gpu 셋팅을 해줘야한다.
- NVIDIA 그래픽 카드가 설치되어있다는 전재하에 설치 해보도록 하겠다.
- CUDA Toolkit의 버전은 11까지 나왔지만, 아직 호환성에 문제가 있는지 제대로 설치가 되지 않는다. 또한, 우리는 텐서플로우 버전 2.0으로 작업할 예정이므로, 이에 맞는 CUDA Toolkit Version 10.0을 사용해보도록 하자.
- 설치 환경은 Windows이다.
1. CUDA Toolkit을 설치해보자.
CUDA Toolkit 10.0 버전 싸이트로 들어가자
- NVIDIA 홈페이지에서 들어갈 수 있다(아래 주소로 들어가자).
- https://developer.nvidia.com/cuda-10.0-download-archive
내 환경에 맞는 버전으로 다운로드 받자
- Windows 환경에서 사용할 예정이다.
- Windows는 10을 사용하고 있다.
- 오프라인 환경에서도 사용할 수 있도록 Local로 다운로드 받겠다.
(인터넷이 되는 환경이라면, 시간이 오래걸리므로 exe(network)로 다운로드 받도록 하자.)
이제 설치를 해보자.
- CUDA 설치는 크게 어렵지 않다.
- 따로 경로나 설정에서 손을 볼 것은 없으므로, 그냥 쭉 진행하면 된다.
2. cuDNN을 설치해보자.
- 아래 주소로 들어가자.
- https://developer.nvidia.com/cudnn
- Download cuDNN을 클릭한다.
- cuDNN은 로그인을 해야만 설치 가능하므로, 아이디가 없다면, 아이디를 만들고 로그인하도록 하자.
CUDA와 내 환경에 맞는 버전으로 설치하자.
- CUDA v10.0으로 설치하였으므로, cuDNN은 v7.6.5.로 다운로드 받겠다.
- Windows 10 환경으로 설치하겠다.
- cuDNN을 CUDA가 설치된 위치에 덮어씌우도록 하자.
- 만약 CUDA를 설치할 때, 따로 경로를 손대지 않았다면 아래 경로에 덮어 씌우면 된다.
- C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0
- 위 경로에 cuDNN 압축파일을 해제하여 나온 파일들을 덮어씌우자.
3. PATH를 설정해주자.
- cmd에 들어가자.
- 아래와 같게 타이핑 해주자
- SET PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\bin;%PATH%
- SET PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\extras\CUPTI\libx64;%PATH%
- SET PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\include;%PATH%
- SET PATH=C:\tools\cuda\bin;%PATH%
위까지 작업을 마치면, tensorflow-gpu를 설치할 환경이 완료된 것이다. 만약 위 셋팅을 마쳤음에도 tensorflow-gpu가 설치되지 않는다면, Visual Studio를 설치해주거나 업데이트 해주도록 하자.
자 지금까지 텐서플로우를 사용할 수 있는 환경 셋팅을 모두 완료해보았다. 텐서플로우 설치는 pip install을 이용해서 설치하면 되며, 이에 대한 내용은 python 카테고리에서 패키지 설치법을 확인해보도록 하자.
다음 포스트에서는 텐서플로우를 쓰는법에 대해 차근차근 알아가보자.
'Python > 설치 및 환경설정' 카테고리의 다른 글
Python 리눅스 서버에 분석 환경 구축2 - 가상환경 만들고 내보내기 (0) | 2021.04.05 |
---|---|
Python 리눅스 서버에 분석 환경 구축1 - 가상머신과 아나콘다 설치 (0) | 2021.04.03 |
Python 오프라인 환경에서 파이썬 패키지를 설치해보자. (2) | 2020.06.26 |
Python 필요한 모듈들을 설치해보자 (0) | 2020.06.26 |
Python 파이썬과 파이참(아나콘다 연동) (3) | 2020.06.25 |