Keras 전에는 Tensorflow low API를 사용해서 코드를 만들었는데, 매우 비직관적이며, 복잡한 코드를 사용했어야 했습니다.
심지어 각 층마다 주고받는 텐서형태로 오류가 나는 경우, 정말 성질 긁는 경우가 생기죠. 하지만 Keras가 나온 이후에는 확실히 사용자 친화적인 환경이 만들어졌습니다.
하지만, Keras는 프론트엔드이기 때문에, Theano또는 Tensorflow를 백엔드로 사용할 수 밖에 없습니다.
Theano는 OpenCL를 지원하지만 공식적으로 업데이트가 종료되었고, (공식) Tensorflow는 아직 엔비디아를 제외하면 GPU를 지원하지 않습니다.
AMD GPU 경우, AMD를 지원하는 Tensorflow를 배포하고 있지만, ROCM(이름이 멋지지 않습니까? 락엠!) 기반으로 리눅스에서만 실행됩니다. 그리고 설치도 매우 어렵고, 윈도우즈에서는 도커를 써야하는 어려움도 있습니다.
Intel은.... 음.... 넘어갑시다.
최근 라이젠3 2200U 노트북을 구입해서 잘쓰고 있지만, CPU만으로 인공신경망을 학습시키는 것은 현실적으로 어려운 일이죠.
그렇다고 엔비디아 GPU 달린 노트북은 너무 무겁습니다. MX150을 탑재한 노트북은 그나마 가볍지만, 성능대비 가격이 매우 아쉽죠.
하지만, 답은 언제나 있습니다. Vertex AI (지금은 Intel에 인수되었습니다)에서 PlaidML이라는 딥러닝 프레임워크를 만들었습니다.
PlaidML의 가장 큰 특징은 AMD 및 Intel GPU(맞습니다. 내장 GPU)를 지원합니다. 심지어 설치도 엔비디아 Cuda보다 간편합니다!!!
잡설이 길었기 때문에 바로 설치방법으로 가겠습니다. (윈도우즈 10 환경)
1) 윈도우즈 커맨드 실행 (또는 아나콘다 환경이라면 아나콘다 PIP)
2) 설치된 Keras가 2.2.2 버전을 초과한다면, 삭제 후 2.2.2 버전을 설치해야 합니다. (Keras가 2.2.2버전 이하라면 2번은 건너뜁니다. 2019-01-26 기준입니다.)
pip uninstall keras
pip install keras==2.2.2
3) PlaidML 설치
pip install plaidml-keras plaidbench
4) PlaidML 설정
plaidml-setup
위에 명령을 실행하면 아래 화면이 나옵니다.
* Enable experimental device support : Y
* 내가 가진고 있는 GPU 번호를 선택
* Enable telemetry reporting : 저는 Yes 했습니다. No도 상관없습니다.
Save Setting : Y
이제 윈도우즈 커맨드에서 할일은 모두 끝났습니다.
5) 실제 파이썬 코드에서 Tensorflow, Keras를 import 하기 전, 아래 코드를 먼저 실행하면 됩니다.
import plaidml.keras
plaidml.keras.install_backend()
실제 코드를 한번 돌려 봅니다. AMD 베가3가 열일하고 있습니다!!! 집컴에 달린 1060보다 약 3배 느리지만, 이건 1.6kg짜리 노트북이잖아요! CPU로 돌릴때보다 5배 정도 빠릅니다.
실제로 Intel GPU도 CPU보다 3배 정도 빠르다고 합니다.
P.S. 황회장 읒읒읒 ㅃㅋ 머겅
R, 파이썬 모두 텐서플로우, 케라스를 다 사용할 수 있습니다. 어차피 둘다 프레임워크이기 때문에, R에서 사용한다고 해도, 파이썬 문법을 써야 합니다. 그래서 그냥 파이썬이 낫죠.
파이토치는 사용해본적이 없어서 모르겠지만, 문법이 상이하기 때문에 sci-kit learn wrapper인 skorch로 조금 더 친숙한 문법으로 사용한다고 하더라구요.(https://github.com/dnouri/skorch)
저는 최근에는 텐서플로우보다는 pytorch나 caffe2를 주로 사용하고 있습니다.
맥북에서 그래픽 가속이 된다는것에 의의를.....
이미 있는 신경망을 바꾸는게 귀찮더라구요
2. 어느게 쓰기 쉽나...
거의 모르는 분야라 단순한게 궁금합니다 후후
2) Keras 같은 프론트엔드를 사용하면, GPU와 상관없이 함수 및 문법을 동일하게 쓸 수 있습니다. 하지만, 내부적으로 Cuda 전용 함수(예를 들어 cudnnLSTM 등)는 사용이 안되겠죠.
nvidia가 잘나가는게 이유가 있네요 감사합니다