インテル® DAAL とは?

インテル® oneDALビッグデータ

この記事は、インテル® デベロッパー・ゾーンに公開されている「What is Intel® DAAL?」(https://software.intel.com/en-us/articles/what-is-intel-daal) の日本語参考訳です。


インテル® DAAL とは?

インテル® Data Analytics Acceleration Library (インテル® DAAL) は、データ分析のすべてのステージをカバーするインテル® アーキテクチャーに最適化されたビルディング・ブロックです: データソースからのデータ収集、前処理、変換、データマイニング、モデル化、検証および意思決定。広範囲のインテル® プロセッサー上で最高のパフォーマンスを実現するため、インテル® DAAL はインテル® マス・カーネル・ライブラリー (インテル® MKL) とインテル® インテグレーテッド・パフォーマンス・プリミティブ (インテル® IPP) の最適化されたアルゴリズムを使用します。

データ分析のいくつかのステージがエッジデバイス上 (データの生成と消費が近い場合) で実行されている場合、インテル® DAAL はエンド・ツー・エンドの分析概念をサポートします。具体的には、インテル® DAAL アプリケーション・プログラミング・インターフェイス (API) は、特定のクロスデバイス通信技術にとらわれないため、異なるエンド・ツー・エンドの分析フレームワーク内で使用することができます。

インテル® DAAL は、データ分析アプリケーションを加速するビルディング・ブロックで広く利用されるライブラリーです。IA Android* ベース上での分析から、ハイパフォーマンス・クラスター上で大規模な分散ビッグデータ分析を行うに至るまで、さまざまなシナリオをサポートします。

ライブラリーは、データ分析のパフォーマンスと電力効率を含め全体の生産性に注目するソフトウェア開発者を対象としています。一般的に利用されるデータ分析アルゴリズムのビルディング・ブロックにより、開発者は実装と最適化に多くの日数を費やす必要はありません。

インテル® DAAL は、多くのデータ分析アプリケーションの開発者に馴染みやすいライブラリーです。インテル® DAAL アプリケーション・プログラミング・インターフェイス (API) は C++ と Java* 言語をサポートし、ソフトウェア開発者が C++ と Java* アプリケーションとシームレスにインテル® DAAL と統合することを可能にすることで、プラットフォームはマネージドコード環境でネイティブコードのパフォーマンスを高めることができます。

インテル® DAAL は、他のライブラリーとは異なりマシンラーニングとデータマイニングを対象とし、SQL と 非 SQL データソースからのデータ取得から、データ分析、学習および予測のためのデータ変換におけるワークフロー全体を最適化します。

このライブラリーはどのような問題を解決できますか?

インテル® DAAL は、知識発見やデータマイニング、マシンラーニング、予測分析、AI、パターン認識、ニューロ・コンピューティング、および大量のデータを扱う多くのその他の問題分析と意思決定をより高速化するために利用できます。

どのような分野のアプリケーションでこのライブラリーを利用できますか?

今日、すべてのアプリケーションは、テキスト、画像、ビデオ、オーディオ、センサーデータ、利用者の振る舞い、金融データなど対象のデータを生成しています。

それに基づいて、ショッピングにおける顧客の行動の予測や広告をプッシュしたり、またオンラインポータルへのユーザーの訪問情報から購入する可能性の高い製品を紹介したり、ドラッグストアで患者のデータからよりお勧めの薬を探したり、各種センサー入力からのデータを分析することで電力消費を軽減したり、銀行の顧客のローン返済の可能性を予測したり、それぞれの分野における大量のデータ生成、準備、分析にインテル® DAAL を利用できます。

どのようなアルゴリズムが提供されますか?

インテル® Data Analytics Acceleration Library (インテル® DAAL) のアルゴリズム・コンポーネントは、 データ分析 (データマイニング) とデータモデリング (学習と予測) 向けのアルゴリズムを実装するクラスで構成されています。インテル® DAAL に含まれる各種アルゴリズムは、データ分析のさまざまなステージで利用できます。

  • データマイニングと分析向けのアルゴリズム:
    • 相関距離とコサイン距離の計算
    • 主成分分析 (相関、SVD)
    • 行列分解 (SVD、QR、コレスキー)
    • 統計モーメントの計算
    • 分散共分散と相関行列の計算
    • 分位の計算
    • 単変量と多変量の外れ値検出
    • 相関ルール探索
    • 線形および放射基底関数カーネル
  • 教師あり/なしのマシンラーニング向けのアルゴリズム:
    • 線形回帰
    • 単純ベイズ分類器
    • ブースティング (AdaBoost、LogitBoost、および BrownBoost) 分類器
    • サポート・ベクトル・マシーン (SVM) 分類器
    • K 平均クラスタリング
    • ガウス混合モデル (GMM) の期待値最大化 (EM)
    • 混同メトリック、精度、正確性、リコールおよび Fscore を含む分類向けの評価メトリックをサポートします。

バッチ/オンライン (ストリーミング)/分散処理

インテル® DAAL のアルゴリズムは、次の計算モードをサポートします:

  • バッチ処理
  • オンライン処理
  • 分散処理

アルゴリズムの初期化で計算モードを選択できます。

バッチ処理: インテル® DAAL のすべてのアルゴリズムは、少なくともバッチ処理モードをサポートします。オンライン処理モードでは、特定のアルゴリズム・クラスのメソッドを使用します。

オンライン処理: インテル® DAAL で提供されるアルゴリズムのいくつかはデータセットをブロックで処理できます。オンライン処理モードでは、特定のアルゴリズム・クラスの compute() と finalizeCompute() メソッドを使用します。この計算モードでは、データはブロック i = 1,2,3 … n で到達することを想定します。新たな入力が利用可能になるたびに compute() メソッドを呼び出します。最後のデータブロックが到達すると、最終結果を生成するため finalizeCompute() メソッドを呼び出します。非同期モードでデータを入力する場合、getStatus() メソッドを使用して新しいデータブロックが読み込み可能であるかデータソースをチェックすることができます。

分散処理: インテル® DAAL で提供されるアルゴリズムのいくつかは、データセットを分散して複数のデバイス間で処理できます。分散処理モードでは、特定のアルゴリズム・クラスの compute() と finalizeCompute() メソッドを使用します。この計算モードでは、データセットが計算ノード間で n ブロックに分割されることを想定します。

コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください

タイトルとURLをコピーしました