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

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

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

ブログ    
ブログ    
ブログ    

推薦する

あなたは人工知能の前で「透明な人」ですか?

プライバシーがないと感じる人が増えているのは紛れもない事実です。最も直接的な例は、買い物をしたい場合...

機械学習と脳科学が次の10年間の教育発展をリードする

[51CTO.comよりオリジナル記事] 昨今人気の技術として、産業界における人工知能の応用が徐々に...

...

Daguan Data が自社開発の OCR と NLP 技術を統合し、インテリジェント RPA をリリース<

2019年7月26日、人工知能企業Daguan Dataは北京で「大道知建」をテーマにした製品発表...

深度に関するあらゆる情報: 大規模なラベルなしデータから深度推定を解き放つ

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...

高度な分析とコンピューティング技術の出現が世界のインテリジェントアプリケーション市場を牽引

世界的なスマート アプリケーション市場の成長は、高度なコンピューティングおよび分析テクノロジによって...

DeepSense: モバイルセンサーの時系列データを処理するためのディープラーニングフレームワーク

DeepSense は、エンドデバイス上で実行されるディープラーニング フレームワークです。ローカル...

ジェネレーティブ AI でデータ エンジニアリングを変革する方法

企業が生産性を高め、顧客体験を強化する方法を模索する中、生成 AI は今後 10 年間であらゆる業界...

...

AlphaDev がソートアルゴリズムを 70% 高速化! C言語ライブラリの作者がDeepMindの最新AIについて解説

数日前、DeepMind はソートアルゴリズムを 70% 直接的に高速化する AlphaDev をリ...

多くのライターがChatGPTを著作権侵害で非難した。OpenAI: 著作権の範囲を誤解している

8月31日、OpenAIは今週、原告に数人の作家を含むほぼ同一の集団訴訟2件に応じた。彼らは、Cha...

顔認識技術のまとめ:従来の方法からディープラーニングまで

1970 年代以来、顔認識はコンピューター ビジョンと生体認証の分野で最も研究されているトピックの ...

銀行におけるクラウドコンピューティングと人工知能の利点

クラウド コンピューティング プロバイダーは、データを分析し、スキルの低いユーザー (または予算が限...

...

6 つの基本的な AI 用語: 優れた人工知能コンサルティング サービスを提供するには?

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