< 目次

インテル® DAAL 2017 デベロッパー・ガイド

インテル® DAAL について

インテル® Data Analytics Acceleration Library (インテル® DAAL) は、データの取得から、前処理、変換、データマイニング、モデリング、検証、意思決定まで、すべてのデータ解析段階をカバーする、インテル® アーキテクチャー向けに最適化されたビルディング・ブロックのライブラリーです。さまざまなインテル® プロセッサーで最高のパフォーマンスが得られるように、インテル® DAAL はインテル® MKL およびインテル® IPP の最適化アルゴリズムを利用しています。
Data analytics stages

インテル® DAAL は、一部のデータ解析段階が (データが生成され、最終的に消費される場所に近い) エッジデバイスで実行される際のエンドツーエンド解析の概念をサポートします。具体的には、インテル® DAAL アプリケーション・プログラミング・インターフェイス (API) は、特定のクロスデバイス・コミュニケーション・テクノロジーに依存しないため、異なるエンドツーエンド解析フレームワーク内で使用できます。
End-to-end analytics

インテル® DAAL は、次の主要コンポーネント (データ管理、アルゴリズム、サービス) から構成されています。
Intel® DAAL components

データ管理コンポーネントには、データの取得、前処理と正規化、(サポートしているデータソースにより行われる) 数値形式へのデータ変換、モデル表現用のクラスとユーティリティーが含まれます。 データ管理コンポーネント内の NumericTable クラスおよびその派生クラスは、インメモリー数値データ操作に使用されます。Model クラスは、実際のデータが不足、不完全、ノイズが多い、利用不可能な場合にライブラリーを使用できるように、実際のデータを模倣してコンパクトな方法で表します。これらはアルゴリズムでデータセットを処理するための重要なインターフェイスです。DataSourceDictionary クラスと NumericTableDictionary クラスは、特定のデータ特徴へのアクセス、特徴数の設定と取得、新しい特徴の追加のような、辞書操作の一般的なメソッドを提供します。

アルゴリズム・コンポーネントは、データ解析 (データマイニング) およびデータモデリング (訓練と予測) 用のアルゴリズムを実装するクラスから構成されます。これらのアルゴリズムには、行列分解、クラスタリング、分類、回帰アルゴリズムと相関ルールが含まれます。

アルゴリズムは、次の計算モードをサポートしています。

「バッチ処理」モードでは、アルゴリズムはデータセット全体を処理して最終結果を生成します。その時点でデータセット全体が利用可能でないか、データセットがデバイスメモリーに収まらない場合、シナリオはより複雑になります。

「オンライン処理」モードでは、アルゴリズムは部分結果を段階的に更新して (最後のデータブロックを処理すると完了します) デバイスメモリーに転送されたブロックのデータセットを処理します。

「分散処理」モードでは、アルゴリズムは複数のデバイス (計算ノード) に分散されたデータセットを処理します。アルゴリズムは各ノードで、最終的にマスターノードの最終結果にマージされる、部分結果を生成します。

インテル® DAAL の分散処理アルゴリズムは、根本的なクロスデバイス・コミュニケーション・テクノロジーから抽出されているため、さまざまなマルチデバイス・コンピューティングやデータ転送シナリオでライブラリーを使用することができます。MPI* ベースのクラスター環境、Hadoop*/Spark* ベースのクラスター環境、低水準のデータ交換プロトコルなどが含まれますが、これらに制限されているわけではありません。

MPI*、Hadoop*、Spark* の一般的なユースケースは、https://software.intel.com/en-us/product-code-samples?field_software_product_tid[]=79775 (英語) を参照してください。

使用方法に応じて、アルゴリズムは実際のデータ (データセット) とデータモデルの両方を処理します。解析アルゴリズムは通常、データセットを処理します。訓練アルゴリズムは通常、データセットを処理して適切なデータモデルを訓練します。予測アルゴリズムは通常、訓練されたデータモデルと作業データセットを処理します。

訓練アルゴリズムで生成されたモデルは、モデルを特徴付けるメトリックを生成するインターフェイスに関連付けられます。これらのメトリックは、品質を把握するためにモデルの作成中に使用できます。あるいは、実際のデータとデータを表すモデル間の一致率を追跡するためにプロダクション・モードで使用できます。

サービス・コンポーネントには、データ管理およびアルゴリズム・コンポーネントで使用されるクラスとユーティリティーが含まれます。 これらのクラスにより、メモリー割り当て、エラー処理、コレクションや共有ポインターの実装を行うことができます。コレクションにより、統合された方法で、異なるタイプのオブジェクトを格納することができます。インテル® DAAL では、コレクションはアルゴリズムの入出力処理とエラー処理に使用されます。インテル® DAAL は、割り当て解除のようなメモリー管理操作に必要なメモリー処理が可能になるように、共有ポインターを実装します。

データ管理、アルゴリズム、サービス・コンポーネントで実装されたクラスは、最も重要な使用シナリオをカバーし、直接 API 呼び出しにより複雑なデータ解析ワークフローをシームレスに実装できます。ライブラリーは、ライブラリーの特定のクラスとメソッドを再定義することにより API をカスタマイズできる、オブジェクト指向のフレームワークです。

最適化に関する注意事項

インテル® コンパイラーでは、インテル® マイクロプロセッサーに限定されない最適化に関して、他社製マイクロプロセッサー用に同等の最適化を行えないことがあります。これには、インテル® ストリーミング SIMD 拡張命令 2、インテル® ストリーミング SIMD 拡張命令 3、インテル® ストリーミング SIMD 拡張命令 3 補足命令などの最適化が該当します。インテルは、他社製マイクロプロセッサーに関して、いかなる最適化の利用、機能、または効果も保証いたしません。本製品のマイクロプロセッサー依存の最適化は、インテル® マイクロプロセッサーでの使用を前提としています。インテル® マイクロアーキテクチャーに限定されない最適化のなかにも、インテル® マイクロプロセッサー用のものがあります。この注意事項で言及した命令セットの詳細については、該当する製品のユーザー・リファレンス・ガイドを参照してください。

注意事項の改訂 #20110804