맥북(AMD 560x)에서 딥러닝훈련 방법

전통적으로 AMD그래픽카드는 딥러닝을 학습하는데 있어 CUDA의 부재로 Tensorflow등의 라이브러리를 실행시키기 어려웠습니다. 이렇게 몇년이 흘러도, AMD에서는 이 시장은 큰 시장이 아니라고 판단했는지 Ryzen CPU 가 대히트를 치고 Intel의 점유율을 역전하는 역사를 세우고서도 별로 그들의 그래픽카드에 딥러닝 기능을 잘 심는것을 그다지 중요하게 생각하지 않은 것 같습니다.

리사수는 외계인을 고문하느라 바쁩니다.

다만 2019년에 들어서는 어느정도 개발이 된 모습을 알수있습니다.

그렇지만 AMD진영에서 제공하고 있는 아래의 사이트에 따르면 ROCm은 텐서플로우 1.14와 2.0을 지원하기 때문에 이에 따르면 충분히 맥북으로 돌아가는것이 예상이 됩니다.

https://rocm-documentation.readthedocs.io/en/latest/Deep_learning/Deep-learning.html

하지만 자세히 들여다보면 리눅스에 대한 지원이고, 맥에대한 지원은 아직 역부족인것을 알수있습니다. 깃허브에는 전세계의 수많은 맥빠(?)들이 딥러닝에 대한 미지원은 말이 안된다고 아우성입니다.

그렇지만, 방법은 있습니다.

기본적으로 2019년 09월까지 정식으로 애플에서 지원되는것은 없으며, 다만 PlaidML이라는 라이브러리를 통해 OpenCL이나 Metal로 Keras의 backend를 책임지게 할수 있습니다.

일단 실험에 참가할 맥북은 맥북 프로중에 제일 비싼 라인에 속하는 Mac book Pro 2018 2.6ghz i7이며, 장착한 그래픽카드는 AMD 560X 4G가 되기때문에 일단 CPU보다는 빠를것으로 생각됩니다.

https://medium.com/@danbrice.datascience/deep-learning-on-a-mac-with-amd-gpu-4be1f18944a

MacOS에서의 설치는 정말 간단합니다.

MacOS 라이브러리 설치

https://vertexai-plaidml.readthedocs-hosted.com/en/latest/installing.html

VirtualEnv를 이용할수도 있지만, 어차피 글로벌하게 이용할거라면 크게 중요하지는 않으므로 아래와 같이 설치를 한후,

pip install -U plaidml-keras

몇가지 세팅을 위해 아래와 같은 명령을 합니다.

plaidml-setup

그런후에는 아래와 같은 화면이 보이는데, 맥북의 경우에는 AMD그래픽카드와 더불어 인텔의 내장 그래픽카드도 존재합니다.

따라서 몇가지 옵션을 택할수 있는데 원래는 그래픽관련하여 OpenCL을 썼다면, 조금더 성능과 기능이 개선된 Metal을 이용하도록 해볼수도 있습니다. 이 방법이 제일 최신으로 보이기 때문에 아래와같이 6번을 택하고 진행합니다.

마지막에 Whew. That worked. 라고 쓰여져있는 문장을 보고 피식 웃게됩니다.

이렇게 해서 간단하게 설치가 끝나는데, 설명에는 벤치마크를 한번 더 돌려보라고 되어있기 때문에 충실히 이행해봅니다.

pip install plaidml-keras plaidbench
plaidbench keras mobilenet

제공된 모바일넷으로 아래와같이 그래픽카드 사용율이 팍 튀면서 학습이 진행되는것을 알수있습니다. 내장그래픽은 사용하지 않음을 알수있습니다.

빠른시간안에 훈련을 하고 바로 추론을 할수있게 되는것을 알수 있습니다. 생각보다 CUDA와 CuDNN을 여기저기 설치하고 난리를 피는것보다 훨씬 간단하게 설치가 되는것을 알수있습니다.

주피터 노트북과 keras 이용

이제 실제로, 케라스를 이용해서 간단한 컨볼루션 네트워크를 만들어보고 실제 속도가 어떻게 달라지는지 확인해보도록 하겠습니다.

데이터는 fashionMNIST인데, 간단한 데이터기 때문에 CPU로도 학습이 가능합니다. tensorflow는 1.13.1버전으로 backend를 사용합니다. plaidML을 불러올때는 단순한 차이가 있는데, 아래의 두번째 블록에 import를 적당히 해주고 plaidml.keras.install_backend()를 호출하면 알아서 케라스의 백엔드 구조는 tensorflow가 아닌 plaidML로 바뀌는것을 알 수 있습니다.

장점은 keras의 기본적인 코드는 모두 동일하다는 것입니다. 원래는 theano, tensorflow, CNTK 세개만 사용이 가능한 부분이였는데, 이제는 plaidml.keras.backend가 추가된것을 볼수 있습니다.

속도와 결과 벤치마크

결과는 아래와 같습니다. 정확도는 80~90퍼센트정도가 나오는 데이터셋이며, 여기서는 별 쓰잘데기가 없으니 표현하지는 않겠습니다.

배치CPU (8코어 2.6 -> 4.3)GPU (AMD 560X 4G)
88초72초
322.3초7.1초
641.2초4.3초
2561.1초1.2초
20480.7초0.7초

적은 배치를 설정하는것은 CPU가 충분히 빠를수 있다고 인정가능하지만, 배치에 많은 수를 세팅했는데도 속도가 그렇게 차이가 나지 않는것은 상당히 의문입니다.

노트북에 달린 AMD GPU는 성능한계가 있고, 쓸만하지 않다.

희한하게 GPU를 사용했을때 분명히 점유율이 굉장히 높아지는데도 불구하고 상당히 적은 데이터셋이므로 그렇게 크게 차이는 없습니다. 또한 GPU는 학습시간이 편차가 굉장히 큰편이였습니다. 온도도 굉장히 뜨거운데 반해 CPU처럼 팬속도가 즉각적으로 반응을 하지않는 느낌도 있었습니다.

아직까지는 plaidML혹은 AMD Radeon Pro 560X이 성능이 기대했던것만큼 올라가지 않았습니다. 데이터셋이 상당히 작은 데이터셋이라 그런것일수도 있는데, 여튼 기록적인 성능을 내려면 아이맥급으로 가야하지 않나라는 생각은 듭니다.

추후 업데이트가 있으면 계속 공유드리겠습니다.

17 thoughts on “맥북(AMD 560x)에서 딥러닝훈련 방법

  1. 설정이 잘못되었거나 테스트도중 몬가 문제가 있던거 아닌가요?
    https://www.bignerdranch.com/blog/macos-machine-learning-in-2019/
    여기보시면 MBP로 했을때 intel cpu+tensorflow보다 PlaidML with AMD Gpu가 훨씬 몇배 더 빠른걸로 나오는데
    130.3s 391s TensorFlow on Intel CPU
    47.6s 143s Metal on Radeon Pro 560 (Mac’s Built in GPU)
    42.0s 126s OpenCL on Vega Frontier Edition
    25.6s 77s Metal on Vega Frontier Edition

  2. I want to to thank you for this very good read!! I definitely loved every little bit
    of it. I have got you book marked to look at new stuff you post…

    Look at my blog post; g other

  3. Your method of explaining everything in this paragraph is really fastidious, every one
    be capable of effortlessly understand it, Thanks a lot.

    my site – g make

  4. Hi there this is kind of of off topic but I was wondering if blogs use WYSIWYG editors or if
    you have to manually code with HTML. I’m starting a
    blog soon but have no coding expertise so I wanted to get advice from someone with experience.
    Any help would be enormously appreciated!

    My web blog their g

  5. Pretty section of content. I g just stumbled upon your weblog and in accession capital to assert that I get
    in fact enjoyed account your blog posts. Anyway I’ll be subscribing to your
    feeds and even I achievement you access consistently quickly.

  6. What i don’t realize is in reality how you’re not actually much more smartly-appreciated than you may be now.
    You’re so intelligent. You recognize therefore considerably in terms of this subject, made me
    for my part believe it from a lot of various angles. Its like women and men don’t seem to be fascinated until it is one thing
    to do with Lady gaga! Your individual stuffs outstanding.
    All the time take care of it up!

    Also visit my web-site … out g

  7. I all the time used to study post in news papers but now as I am a user of web thus from now
    I am using net for posts, thanks to web.

    Also visit my web-site: cbd oil – tinyurl.com,

  8. You’re so interesting! I don’t suppose I’ve read a single thing
    like this before. So nice to discover someone with a few genuine thoughts on this issue.
    Seriously.. thanks for starting this up. This website is one thing that is
    needed on the web, someone with a little originality!

    Also visit my blog: cbd oil (http://tinyurl.com)

  9. Kamagra En France En Ligne Jeargo [url=https://bbuycialisss.com/#]Buy Cialis[/url] Heemiumbob Achat De Cialis En Suisse EndurlEnrors Buy Cialis Shooth Online Propecia Canada

댓글 남기기