RAPIDSを使用したGPUを利用したデータサイエンス(ディープラーニングではない)

ソースノード: 997659

RAPIDSを使用したGPUを利用したデータサイエンス(ディープラーニングではない)

ディープ ラーニング作業をあまり行わない場合でも、GPU のパワーを通常のデータ サイエンスや機械学習に活用する方法。



ヘッダー画像
画像ソースPixabay (無料画像)

「GPU を活用したデータ サイエンス」をお探しですか?

 
 
自分がデータサイエンティスト、ビジネスアナリスト、または物理学/経済学/神経科学の学術研究者であると想像してみてください。

あなたはたくさんのことをします データラングリング、クリーニング、統計テスト、視覚化 定期的に。 あなたもたくさんいじります 線形モデル データをフィッティングし、時には冒険してみる ランダムフォレスト。 あなたも夢中です クラスタリング 大規模なデータセット。 十分おなじみですね?

ただし、扱うデータセットの性質 (ほとんどが表形式で構造化されている) を考えると、ディープ ラーニングにはあまり踏み込む必要はありません。 派手なディープ ラーニング モデルに費やすよりも、所有しているすべてのハードウェア リソースを実際に日常的に行っていることに注ぎたいと考えるでしょう。 またまたおなじみですか?

の驚異的なパワーと超高速の計算能力について聞いたことがありますか? あらゆる種類の産業および科学アプリケーション向けの NVidia のような GPU システム。

そして、あなたは考え続けます—”私には何があるでしょうか? 特定のワークフローでこれらの強力な半導体を活用するにはどうすればよいですか? "

あなたは GPU を活用したデータ サイエンスを探しています。

このアプローチを評価するための最良の (そして最速の) オプションの XNUMX つは、次の組み合わせを使用することです。 土星の雲 + 急流詳しく説明しましょう…

AI/ML の伝承における GPU は主にディープラーニング用でした

 
 
GPU と分散コンピューティングの使用は、コア AI/ML タスク (例: 1000層のディープニューラルネットワーク 画像分類用または XNUMX億パラメータBERT 音声合成モデルなど)、通常のデータ サイエンスやデータ エンジニアリングのタスクでの有用性に関しては、あまりカバーされていないことがわかりました。

それにもかかわらず、 データ関連のタスクは、AIパイプラインのMLワークロードの重要な前兆です そしてそれらは多くの場合、 時間と知的努力の大部分が データ サイエンティストや ML エンジニアによっても支出されます。 最近、有名なAIの先駆者
アンドリュー・ン 話しました AI に対するモデル中心からデータ中心のアプローチへの移行 ツール開発。 これは、実際のAIワークロードがパイプラインで実行される前に、生データを使用して前処理することに多くの時間を費やすことを意味します。

したがって、重要な質問は次のとおりです。 通常のデータ処理ジョブに GPU と分散コンピューティングの能力を活用できますか??



画像ソース: 著者が無料画像からコラージュを作成 (Pixabay)

 

GPU と分散コンピューティングの使用は、コア AI/ML タスクに関して学界やビジネス界で広く議論されていますが、通常のデータ サイエンスやデータ エンジニアリング タスクにおける GPU の有用性についてはあまり取り上げられていません。

素晴らしい RAPIDS エコシステム

 
 
  ソフトウェア ライブラリと API の RAPIDS スイート 通常のデータサイエンティスト (必ずしもディープラーニングの実践者である必要はない) に、実行するためのオプションと柔軟性を提供します。 エンドツーエンドのデータ サイエンスと分析のパイプラインは完全に GPU 上にあります。

このオープンソース プロジェクトは、CUDA プリミティブを利用するツールを構築することによって、Nvidia によってインキュベートされました。 特に焦点を当てているのは、 データサイエンスに適した Python 言語を通じて、GPU 並列処理と高帯域幅メモリ速度機能を公開します.

一般的なデータの準備とラングリングタスク RAPIDS エコシステムでは高く評価されています。 多額の融資も行っています マルチノード、マルチGPU展開、分散処理のサポート。 可能な限り、他のライブラリと統合します。 メモリ不足 (つまり、個々のコンピューターのRAMよりも大きいデータセットサイズ)データ処理は、個々のデータサイエンティストにとって簡単でアクセスしやすいものです。



画像ソース: 著者作成のコラージュ

 

一般のデータ サイエンティストにとって特に興味深い XNUMX つの最も著名な (そして Python の) コンポーネントは次のとおりです。

  • キュピ: Numpy とまったく同じ見た目と操作性を備えた CUDA ベースの配列ライブラリですが、cuBLAS、cuDNN、cuRand、cuSolver、cuSPARSE、cuFFT、NCCL などのさまざまな CUDA ライブラリを使用して、その下の GPU アーキテクチャを最大限に活用します。
  • CuDF: これは、データのロード、集約、結合、フィルタリング、操作を行うための GPU データフレーム ライブラリです。 パンダのような API。 データ エンジニアやデータ サイエンティストは、CUDA プログラミングの基礎を学ぶことなく、強力な GPU を使用してタスク フローを簡単に高速化するために使用できます。
  • CuML: このライブラリを使用すると、データ サイエンティスト、アナリスト、研究者は、GPU の能力を最大限に活用して、従来型/古典的な ML アルゴリズムと関連処理タスクを実行できます。 当然のことながら、これは主に表形式のデータセットで使用されます。 Scikit-learn について、また、GPU カード上の何百もの Cuda コアと Tensor コアを使って何ができるかを考えてみましょう。 そのため、ほとんどの場合、cuML の Python API は Scikit-learn の API と一致します。 さらに、それは提供しようとします マルチGPUおよびマルチノードGPUのサポート by ~と優雅に統合する ダスク真の分散処理/クラスター コンピューティングを活用するために、可能な限り。


GPU と分散コンピューティングの力を、通常のデータ処理ジョブや構造化データを使用した機械学習に活用できますか?

Apache Spark を使用するのとは違いますか?

 
 
この GPU を活用したデータ処理が、Apache Spark を使用する場合とどう違うのか疑問に思われるかもしれません。 実際には、いくつかの微妙な違いがあり、つい最近になって、Spark 3.0 では GPU が Spark ワークロードの主流のリソースになりました。

GPU と RAPIDS による Apache Spark 3.0 の高速化 | NVIDIA 開発者ブログ
 

この GPU を活用したデータ サイエンスのアプローチと、特に Apache Spark に適したビッグ データ タスクの独自の違いについて議論する時間もスペースもありません。 しかし、これらの質問を自問してみると、おそらく微妙な違いが理解できるでしょう。

経済取引とポートフォリオ管理をモデル化するデータサイエンティストとして、私は次のような問題を解決したいと考えています。 線形方程式系 100,000 個の変数を使用します。 純粋な線形代数ライブラリまたは Apache Spark を使用しますか?? "

画像圧縮パイプラインの一部として、次を使用したいと考えています。 特異値分解 何百万ものエントリからなる大規模なマトリックス上で。 Apache Spark はそのために良い選択ですか?? "

問題のサイズが大きいからといって、必ずしも Apache Spark や Hadoop エコシステムを意味するわけではありません。 ビッグ コンピューティングはビッグ データと同等ではありません。 総合的なデータ サイエンティストとして、あらゆる種類の問題に取り組むには、両方の知識が必要です。

RAPIDS が特に焦点を当てているのは、 Python API を介して GPU 並列処理と高帯域幅メモリ速度機能を公開します。

この記事では何を示しているのでしょうか?

 
 

CuPy と CuML のみの鮮明な例

 
したがって、この記事では、CuPy と CuML のわかりやすい例を説明するだけです。

  • 対応する Numpy および Scikit-learn 関数/推定器と (速度の点で) 比較する方法
  • この速度の比較において、データ/問題のサイズがどのように重要であるか。

CuDF の例については後の記事で説明します

 
Pandas データ処理に似たデータ エンジニアリングの例は多くのデータ サイエンティストにとって高い関心を集めていますが、CuDF の例については後の記事で説明します。

GPU ベースのハードウェア プラットフォームは何ですか?

 
私は使用しています 土星の雲 Tesla T4 GPU インスタンスをスピンアップするには文字通り 5 分の作業が必要です。 クラウド上の完全な機能とロードされた (DS および AI ライブラリを含む) コンピューティング リソース 私のすべてのデータサイエンス作業は彼らのサービスを利用して行われました。 Jupyter Notebook の使用量が月あたり 10 時間を超えない限り、無料です! サービスについて詳しく知りたい場合は、

Saturn Cloud Hosted が開始されました: GPU データ サイエンスが誰でも利用可能!

GPU コンピューティングはデータ サイエンスの未来です。 RAPIDS、TensorFlow、PyTorch などのパッケージにより、超高速の…

持っていることに加えて、 テスラ T4 GPU、これは、4 GB の RAM と 8259 GB の永続ディスクを備えた 2.50 コア Intel(R) Xeon(R) Platinum 16CL CPU @ 10GHz マシンです。 したがって、これはハードウェア構成の観点からはごく普通の設定です (無料枠のためハードドライブが限られています)。つまり、データ サイエンティストは誰でもこの種のハードウェアを所有している可能性があります。 唯一の特徴は、GPU の存在と、RAPIDS スイートが問題なく動作するようにすべての CUDA および Python ライブラリを適切な方法でセットアップしていることです。


問題のサイズが大きいからといって、必ずしも Apache Spark や Hadoop エコシステムを意味するわけではありません。 ビッグ コンピューティングはビッグ データと同等ではありません。 総合的なデータ サイエンティストとして、あらゆる種類の問題に取り組むには、両方の知識が必要です。

線形方程式系を解く

 
さまざまなサイズの線形方程式系を作成し、Numpy (および CuPy) を使用します。 linalg.solve次のコードでそれを解決するルーチン、



そして、CuPy 実装ではコードが XNUMX 文字だけ (複数の呼び出しで) 変更されます。



また、引数として Numpy 配列から CuPy 配列を作成する方法にも注目してください。

しかし、結果は劇的です。 CuPy は、Numpy よりも遅いか、同じようなペースで開始しますが、問題のサイズ (方程式の数) が大きい場合は、CuPy を完全に上回ります。



特異値分解

 
次に、ランダムに生成されたさまざまなサイズの正方行列 (正規分布から描画) を使用して、特異値分解の問題に取り組みます。 ここではコード ブロックを繰り返しませんが、簡潔にするために結果のみを示します。



この問題クラスでは、CuPy アルゴリズムが Numpy アルゴリズムよりも顕著に優れたパフォーマンスを示さないことに注意することが重要です。 おそらく、これは CuPy 開発者が改善すべき点です。

基本に立ち返る: 逆行列

 
最後に、基本に立ち返り、(ほぼすべての機械学習アルゴリズムで使用される) 逆行列の基本的な問題を検討します。 この結果でも、CuPy アルゴリズムによるパフォーマンスの向上が、Numpy パッケージによるパフォーマンスの向上よりも非常に有利であることがわかります。



K 平均法クラスタリング問題への取り組み

 
次に、よく知られた K 平均法アルゴリズムを使用したクラスタリングの教師なし学習問題を考えます。 ここでは、CuML 関数を Scikit-learn パッケージの同等の推定器と比較しています。

参考までに、これら XNUMX つの推定ツール間の API の比較を次に示します。



画像ソースシキット学習 および CuML ウェブサイト (オープンソースプロジェクト)

 

以下は、10 個のフィーチャ/ディメンションを持つデータセットの結果です。



そして、これは 100 個の特徴データセットを使用した別の実験の結果です。



GPU ベースのアクセラレーションがどのように優れたパフォーマンスを発揮するかには、サンプル サイズ (行数) と次元数 (列数) の両方が重要であることは明らかです。

あまりにもよく知られた線形回帰問題

 
表形式のデータセットを扱う際に、速度比較のために線形回帰問題を無視できる人がいるでしょうか? 以前と同様のリズムに従って、問題のサイズ (今回はサンプル数と次元の両方を同時に変更) を変更し、CuML のパフォーマンスを比較します。 LinearRegression 推定量を Scikit-learn 安定版から取得した推定量に置き換えます。

次の図の X 軸は、1,000 サンプル/50 特徴から 20,000 サンプル/1000 特徴までの問題のサイズを表します。

繰り返しますが、CuML 推定器は、問題の複雑さ (サンプル サイズと次元数) が大きくなるにつれて、パフォーマンスが大幅に向上します。



まとめ

 
 
私たちは、RAPIDS フレームワークの XNUMX つの最も基本的なコンポーネントに焦点を当てました。これは、データ サイエンティストがディープ ラーニング タスクを実行しない場合でも、データ分析や機械学習の日常的なタスクに GPU のパワーをもたらすことを目的としています。



画像ソース: 無料の Pixabay 画像を使用して作者が作成した (リンク-1リンク-2リンク-3)

 

我々は使用しました 土星の雲 Tesla T4 ベースのインスタンス 簡単、無料、迅速なセットアップ また、CuPy および CuML ライブラリのいくつかの機能と、広く使用されているアルゴリズムのパフォーマンス比較を示しました。

  • RAPIDS ライブラリのすべてのアルゴリズムが大幅に優れているわけではありませんが、ほとんどのアルゴリズムは優れています。
  • 一般に、問題の複雑さ (サンプル サイズと次元数) が増大するにつれて、パフォーマンスの向上は急速に増加します。
  • GPU をお持ちの場合は、常に RAPIDS を試し、パフォーマンスが向上しているかどうかを比較およびテストし、データ サイエンス パイプラインの信頼できる主力製品にしてください。
  • コードの変更は最小限であり、切り替えのための変更はほとんどありません。

GPU のパワーで分析とデータ サイエンスのワークフローを活性化しましょう.

作者を確認できます GitHubの リポジトリ 機械学習とデータサイエンスのコード、アイデア、リソース。 私と同じように、AI /機械学習/データサイエンスに情熱を持っている場合は、お気軽に LinkedInに追加してください or Twitterで私に従ってください.

メルさんのおかげです。

 
元の。 許可を得て転載。

関連する

出典: https://www.kdnuggets.com/2021/08/gpu-powered-data-science-deep-learning-rapids.html

タイムスタンプ:

より多くの KDナゲット