MacBookのグラフィックカードがAIモデルを実行できないのはもったいない:このディープラーニングツールはすべてのブランドのGPUをサポートしています

MacBookのグラフィックカードがAIモデルを実行できないのはもったいない:このディープラーニングツールはすべてのブランドのGPUをサポートしています

PlaidML と呼ばれるこのツールを使用すると、NVIDIA、AMD、または Intel のグラフィック カードに関係なく、ディープラーニングのトレーニングを簡単に実行できます。

[[315945]]

周知のとおり、ディープラーニングは2010年代のNVIDIAのGPUコンピューティング能力の向上により急速に発展しました。しかし、現在市場には多くのブランドのグラフィックカードがあり、それらも優れたパフォーマンスを備えています。後者はAIモデルのコンピューティング能力の基礎となることができるでしょうか?

[[315946]]

答えが「はい」であれば、私たちのラップトップ、特に多額のお金をかけて購入した MacBook Pro を使ってディープラーニング モデルを実行できます。

MacBookProはテクノロジー界隈で広く普及しており、品質も良いのですが、ディープラーニングには使えないのが残念です。 MacBookを購入する際、一部の人はディスクリートグラフィックカードに多額のお金をかけますが、ディープラーニングに関しては、お金が無駄になることに気づきます。なぜなら、長い間、ほとんどの機械学習モデルは、汎用GPUライブラリCUDAを通じてのみNVIDIAのGPUを使用できたからです。

しかし、本当に選択の余地はないのでしょうか? Medium のブロガーは、そうではないと述べています。 PlaidML と呼ばれるディープラーニング フレームワークがこのジレンマを解決できます。

並列コンピューティングに GPU を使用する理由は何ですか?

たとえば、家を建てる場合、一人でやる場合は 400 時間かかりますが、建築業者を雇えば、おそらくその時間を半分に短縮できます。雇う労働者の数が増えるほど、家は早く建ちます。これはアムダールの法則が明らかにしたものです。これは、並列コンピューティング後にプロセッサの効率を向上させる能力を表す、コンピュータ サイエンスにおける経験則です。

[[315948]]

では、なぜ GPU を使用するのでしょうか? GPU はもともとディープラーニング用に設計されたものではありませんが、並列コンピューティングの性質はグラフィックス処理に似ているようです。単一の GPU コアはパフォーマンスが劣りますが、高度な並列構造と多数のコアを備えているため、大規模なデータ ブロックのアルゴリズムを処理する場合、CPU よりも効率的です。グラフィックス処理とディープラーニングの本質的な類似性により、GPU はディープラーニングと並列コンピューティングの第一の選択肢となっています。

CUDA以外に選択肢はないのでしょうか?

しかし、GPU の並列機能を利用する場合、NVIDIA の CUDA は避けて通れません。この汎用並列コンピューティング ライブラリは、ディープラーニングには不可欠です。現在、高性能クラウド コンピューティングや DL サーバーが NVIDIA GPU を使用する主な理由は CUDA です。

ラップトップの並列機能を最大限に活用したいが、N カードを購入する余裕がない場合は、この記事で紹介した PlaidML が非常に適しています。

プロジェクトアドレス: https://github.com/plaidml/plaidml

PlaidML は、2017 年に Vertex.AI によってオープンソース化されたディープラーニング ツールキットです。 2018年にIntelはVertex.AIを買収した。 PlaidML 0.3.3 がリリースされた後、開発者は Keras を使用して、AMD および Intel GPU 上で並列ディープラーニング タスクを完了できるようになりました。先月、Vertex.AI は PlaidML のバージョン 0.7.0 をリリースしました。

PlaidML は、ラップトップ、組み込みデバイス、その他のデバイスでディープラーニングを可能にするポータブル テンソル コンパイラです。重要なのは、CUDA ではなく、オープン スタンダードの OpenCL に依存していることです。

OpenCL 汎用並列コンピューティング オープン スタンダードは、N カード専用に設計されていないため、AMD、Intel、NVIDIA のいずれであっても、ラップトップ GPU をサポートできます。

[[315949]]

多くの読者は、OpenCL エコシステムは CUDA ほど成熟しておらず、開発がそれほど安定して速くないのではないかと考えているかもしれません。ただし、複雑な基礎メカニズムは PlaidML に任せることができ、私たちはそれを使用するだけで済みます。

PlaidML に触れる必要すらありません。PlaidML は一般的なディープラーニング フレームワークに統合されており、ユーザーはどのハードウェアでも呼び出すことができます。現在、PlaidML は Keras、ONNX、nGraph などのツールをすでにサポートしています。Keras を直接使用してモデルを構築し、MacBook の GPU を簡単に使用できます。

さて、本題に入りましょう。ラップトップの GPU を使用してシンプルな CNN を実行する方法です。

ラップトップのGPUでニューラルネットワークを実行する

PlaidMLと関連コンポーネントをインストールして設定する

まず、ラップトップに Python 3 がインストールされていることを確認する必要があります。著者は、次のコードを仮想環境で実行することを推奨しています。

  1. #まだインストールしていない場合はpython3 virtualenv をインストールします
  2. pip3 仮想環境をインストールする
  3.   
  4. # ケース仮想環境を作成してアクティブ化します  
  5. python3 -m venv プレイドml-venv
  6. ソース plaidml-venv/bin/activate
  7.   
  8. # KerasでPlaidMLをインストールする
  9. pip インストール -U plaidml-keras

標準の TensorFlow フレームワークの Keras では PlaidML を使用できないため、PlaidML でカスタマイズされた Keras をインストールする必要があることに注意してください。

  1. # 適切なデバイスを使用するためにPlaidMLを設定します
  2. plaidml セットアップ

PlaidML の設定手順 2。

これで、選択したデバイスのリストが表示されます。著者のコンピューター Macbook Pro 15'2018 を例にとると、デバイス リストは次のようになります。

  • CPU
  • インテルUHDグラフィックス630
  • AMD Radeon Pro 560x グラフィック カード

最後に、「y」または「nothing」と入力して戻り、設定を保存します。これですべてがインストールされ、GPU を使用してディープラーニング プロジェクトを実行できるようになりました。

ファッション mnist で CNN 分類器を作成する

まず、Jupyter Notebook を起動します。

  1. ジュピターノートブック

次に、Keras バックエンドとして PlaidML を使用するために次のコードを実行します。それ以外の場合は、デフォルトで TensorFlow が使用されます。

  1. # PlaidMLをインポートしています。必ずこの順序に従ってください
  2. plaidml.kerasをインポートする
  3. plaidml.keras.install_backend()
  4. インポートOS
  5. os.environ[ "KERAS_BACKEND" ] = "plaidml.keras.backend"  

これで、パッケージをインポートしてファッション データセットをダウンロードできます。

  1. kerasをインポートする
  2. keras.modelsからSequentialをインポートする
  3. keras.layers からDense、Dropout、Flatten をインポートします
  4. keras.layers からConv2D、MaxPooling2Dをインポートします
  5. kerasからバックエンドをKとしてインポートします
  6.  
  7. # Kerasからファッションデータセットをダウンロードする
  8. ファッション_mnist = keras.datasets.fashion_mnist
  9. (x_train, y_train)、(x_test, y_test) = keras.datasets.fashion_mnist.load_data()
  10.  
  11. # データを再形成して正規化する
  12. x_train = x_train.astype( 'float32' ).reshape( 60000 , 28 , 28 , 1 ) / 255  
  13. x_test = x_test.astype( 'float32' ).reshape( 10000 , 28 , 28 , 1 ) / 255  

次に、Keras のシーケンシャル モジュールを使用して、単純な CNN を作成し、コンパイルします。

  1. # CNN モデルを構築します。このチャンクを実行すると、 「INFO:plaidml:Opening device xxx」と表示されます。
  2. モデル = keras.Sequential()
  3. model.add ( keras.layers.Conv2D (フィルター= 64 、カーネルサイズ= 2 、パディング= 'same' 、アクティベーション= ' relu' 、入力シェイプ=( 28、28、1 ) ))
  4. モデルを追加します(keras.layers.MaxPooling2D(pool_size= 2 ))
  5. モデルを追加します(keras.layers.Dropout( 0.3 ))
  6. model.add(keras.layers.Conv2D(フィルター= 32 、カーネルサイズ= 2 、パディング= 'same' 、アクティベーション= 'relu' ))
  7. モデルを追加します(keras.layers.MaxPooling2D(pool_size= 2 ))
  8. モデルを追加します(keras.layers.Dropout( 0.3 ))
  9. モデルを追加します(keras.layers.Flatten())
  10. モデルを追加します(keras.layers.Dense( 256 , activation= 'relu' ))
  11. モデルを追加します(keras.layers.Dropout( 0.5 ))
  12. モデルを追加します(keras.layers.Dense( 10 , activation= 'softmax' ))
  13.  
  14. # モデルをコンパイルする
  15. model.compile(optimizer= 'adam' ,
  16. 損失=keras.losses.sparse_categorical_crossentropy、
  17. メトリック=[ '精度' ])

次に、モデルを適合させてその精度をテストします。

  1. # トレーニングセットにモデルを適合させる
  2. モデル.fit(x_train, y_train,
  3. バッチサイズ = 64
  4. エポック = 10 )
  5.  
  6. # テストセットでモデルを評価する
  7. スコア = model.evaluate(x_test, y_test, 詳細 = 0 )
  8. # 印刷テストの精度
  9. print( '\n' , 'テスト精度:' , score[ 1 ])

その他の結果。

私たちがトレーニングした畳み込みニューラル ネットワーク モデルは、ファッション分類タスクで 91% の精度を達成し、トレーニングにはわずか 2 分しかかかりませんでした。この数字はそれほど印象的ではないかもしれませんが、CPU のトレーニングにかかる​​時間を考慮してください。

CPUを使用して同じタスクを完了するには2219秒(約37分)かかり、この間Macのファンは狂ったように出力します。

上記の結論から、Macbook Pro の GPU を使用したディープラーニング計算は、単純に CPU を使用する場合よりも 15 倍高速であることがわかります。 PlaidML を使用すると、自分のラップトップを使用してディープラーニング モデルをトレーニングすることがさらに簡単になります。

現在(2020 年 2 月)の時点で、PlaidML はさまざまなブランドの GPU と互換性があり、CUDA/cuDNN なしで NVIDIA グラフィック カードを使用した場合でも同様のパフォーマンスを実現できます。

PlaidML の GitHub ページで、さらに多くのデモや関連プロジェクトを見ることができます。このツールが開発され続けるにつれて、より多くのアルゴリズムがサポートされるようになると思います。ラップトップで小さなモデルを素早くテストすることもできます。

<<:  過剰に防御的?モスクワのバス運転手は中国人乗客の身元を手動で確認し、顔認識システムの使用も許可されている。

>>:  機械学習に必要なエンジニアリングの量は将来大幅に削減されるだろう

ブログ    
ブログ    

推薦する

AIが皮膚がんの診断で17カ国の皮膚科医58人に勝利

現代医学の発展は、病気の診断と治療のための新しいツール、テクノロジー、方法を開発してきた医師と科学者...

...

...

YOLO-NAS: 最も効率的なターゲット検出アルゴリズムの1つ

YOLO-NAS 物体検出導入YOLO (You Only Look Once) は、ディープ ニュ...

2021年に最も役立つ顔認識ソフトウェア9選をチェック

この記事は公開アカウント「Reading Core Technique」(ID: AI_Discov...

人工直感は人工知能の次の発展方向となるだろう

AI はこれまでに開発された最も強力なテクノロジーの 1 つですが、すでに 4 回の進化を経ています...

SKU多次元属性状態判定アルゴリズム

問題の説明この問題は、製品属性を選択するシナリオから発生します。たとえば、服や靴を購入するときは、通...

Appleは自動車製造を諦めてAIに目を向けたが、Li Xiang氏はこう答えた。「その通りだ!」その背後にある真実は人々に深く考えさせる

この2日間で大きなニュースがありました。Appleが自動車の製造をやめると発表したのです。このニュー...

フレームワーク作者の視点から:Reactスケジューリングアルゴリズムの反復プロセス

みなさんこんにちは、カソンです。 React 内で最も理解しにくい部分は「スケジューリング アルゴリ...

飛行、地中への潜水、海への潜水も可能な多機能ソフトロボット

2月10日のニュース(劉亜珠)最近、科学者たちは変形して運転、飛行、水泳ができる新しい「ソフト」ロボ...

スマートシティ交通ソリューションへのテクノロジーの影響

インテリジェントな交通管理システムは、スマートシティの開発に欠かせない要素です。具体的には、スマート...

...

...

GNN の推奨システムとアプリケーション

1. GNN推奨システムの基礎となる計算能力の進化過去 20 年間にわたり、コンピューティングは進化...

360スマートブレインモデルが一般公開されました

9月5日、360 Intelligent Brainモデルが今後一般公開され、360の「ファミリーバ...