8
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Windows+AMDなGPUの組み合わせで機械学習簡単にやるにはPlaidMLがおすすめ?

Posted at

機械学習の勉強はじめました

ここしばらく色々とトレンド追うのをサボってましたが、余裕が出てきたのでやっと機械学習の勉強を始めました。
かなり周回遅れなきもするけど、いろんな参考書見ながらちょっとずつ頑張ってます。
知識ゼロからやってるので本記事で的はずれなこと書いているかもしれませんが生暖かく見てください。

ディープラーニング用ライブラリ

さて、ディープラーニングの勉強始めてまずフルスクラッチ系の参考書籍で、ライブラリを使わずに理論的に説明しているものを勉強しました。
それと並行してライブラリを使っていかに簡単に実装するかも調べてみました。
有名所で勉強始める前から知っているTensorFlowなんかがいいのかなと思いつつ少し調べて色々とわかってきたのでそれを書き留めておきます。
その他いくつかライブラリやフレームワークあるのがわかりましたが一番大きな壁がGPUでした。

TensorFlow等のメジャーな機械学習ライブラリはCUDAでnVidiaのGPUには対応しているのですが、根っからのAMD党でデスクトップにはRadeon RX580、ノートPCもRyzen 3700uを搭載している自分の環境ではGPU支援を使うことができませんでした。
CPUのみだときついのでGPU支援環境を求めて色々調べることに

CUDA

まずAMD対応の前にCUDAの話を
先に述べたとおりCUDAならTensorFlowやJava用ライブラリのDeeplearning4Jで対応していました。
ココらへんが機械学習をやるならnVidia一強になっている所以ですね。

Rocm

AMD環境で使う方法を調べるとまずRocm(Radeon Open Compute)(https://github.com/RadeonOpenCompute/ROCm)という環境があることを知りました。
nVidiaのCUDAに相当するGPGPU環境です。
Rocm用TensorFlowも用意されており、これならRadeonでもイケるようです。
しかしこれを使うにはハードルがあって、OSがUbuntuでなければいけません。
自作PCなデスクトップならともかく、容量の少ないノート環境でデュアルブートはしたくなかったので他にもっと簡単な環境はないかなと調べました。

OpenCL

GPGPUでオープンな規格といえばOpenCL
これに対応しているものを探そうとしましたがなかなかありません。
DeepLearning4Jが対応しようとしているみたいですがまだ実装はされていませんでした。
そのような中見つけたのがPlaidML(https://github.com/plaidml/plaidml)
TensorFlowと同じくPython用機械学習ライブラリなのですが、こちらはOpenCL対応!
pipでインストールできてWindows+AMDな環境でGPU支援ができました。

さらにフロントエンドとしてKerasが使用できるため、TensorFlow+Kerasを使っている参考資料だとほぼそのまま流用する事ができます。
試した感じだとこれが一番楽にGPU支援できそうな感じです。

最後に

ここまで頑張って環境作ったけどちょっとしたことやるならGoogle ColaboratoryのGPU環境でやったほうが何倍も速かった、辛い……

8
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?