この記事は、https://www.oneapi.io/spec/ で 2023年9月14日に公開された『oneAPI 1.3 Provisional Specification Rev. 1』 (HTML、PDF) をベースにしています。原文は2000 ページ近くあり、翻訳の時間とリソースも限られるため、全文翻訳ではなく、記事形式で区切った仕様とその解説を提供することにしました。
この回では、『oneAPI 1.3 Provisional Specification Rev. 1』の「oneDAL」の節を取り上げています。
oneDAL
このドキュメントでは、oneAPI データ・アナリティクス・ライブラリー (oneDAL) の実装要件を示します。
oneDAL は、データ解析 (前処理、変換、解析、モデリング、検証、意思決定) のすべてのステージで高度に最適化されたアルゴリズムのビルディング・ブロックをバッチで、オンラインで、および分散処理モードでの計算を提供することで、ビッグデータ解析の高速化を支援するライブラリーです。oneDAL の現在のバージョンでは、従来の C++ インターフェイスに加えデータ並列 C++ (DPC++) API 拡張を提供します。
一般的な情報については、oneDAL GitHub* ページ (英語) をご覧ください。
はじめに
oneAPI データ・アナリティクス・ライブラリー (oneDAL) は、データ解析のすべてのステージ (データソースからのデータ取得、前処理、変換、データマイニング、モデリング、検証および意思決定) をカバーするビルディング・ブロックを提供するライブラリーです。
oneDAL は、データ分析のいくつかのステージがエッジデバイスで実行されている場合 (データの生成と消費が近い場合)、エンドツーエンド分析の概念をサポートします。具体的には、oneDAL アプリケーション・プログラミング・インターフェイス (API) は、特定のクロスデバイス通信技術にとらわれないため、異なるエンドツーエンドの解析フレームワーク内で使用することができます。
oneDAL は、次の主要コンポーネントで構成されます。
データ管理 (英語) コンポーネントには、データの取得、前処理と正規化、(サポートされるデータソースにより行われる) 数値形式へのデータ変換、モデル表現用のクラスとユーティリティーが含まれます。
アルゴリズム (英語) コンポーネントは、データ解析 (データマイニング) およびデータモデリング (トレーニングと予測) 用のアルゴリズムを実装するクラスから構成されます。これらのアルゴリズムには、クラスター化、分類、回帰、および推奨アルゴリズムが含まれます。アルゴリズムは、次の計算モードをサポートしています。
- バッチ処理 (英語): アルゴリズムは最終結果を生成するためデータセット全体を処理します。
- オンライン処理 (英語): アルゴリズムは、デバイスのメモリーにストリームされたブロックでデータブロックを処理します。
- 分散処理 (英語): アルゴリズムは複数のデバイス (計算ノード) に分散されたデータを処理します。
oneDAL の分散アルゴリズムは、デバイス間の通信技術を抽象化するため、各種マルチデバイスの計算とデータ転送で利用できます。
使用方法に応じて、アルゴリズムは実際のデータ (データセット) とデータモデルの両方を処理します。
- 解析アルゴリズムは通常、データセットを処理します。
- トレーニング・アルゴリズムは通常、データセットを処理して適切なデータモデルをトレーニングします。
- 予測アルゴリズムは通常、トレーニングされたデータモデルと作業データセットを処理します。
ユーティリティー・コンポーネントには、クラスの設計やメモリー・アロケーター、タイプ特性などのメソッドの実装に使用することを目的とした補助機能が含まれています。
その他のコンポーネントには、解析パイプラインの各種ステージでアルゴリズムをカスタマイズおよび最適化するため、oneDAL アルゴリズムとアプリケーションで使用することを目的とした機能が含まれます。このようなアルゴリズムには、ソルバーや乱数生成器が含まれます。
データ管理、アルゴリズム、ユーティリティーおよびその他のコンポーネント・クラスは、最も重要な使用シナリオをカバーし、直接 API 呼び出しにより複雑なデータ解析ワークフローのシームレスな実装を可能にします。同時に、ライブラリーはライブラリーの特定のクラスとメソッドを再定義することで API をカスタマイズできるオブジェクト指向のフレームワークです。
法務上の注意書き
The content of this oneAPI Specification is licensed under the Creative Commons Attribution 4.0 International License (英語). Unless stated otherwise, the sample code examples in this document are released to you under the MIT license (英語).
This specification is a continuation of Intel’s decades-long history of working with standards groups and industry/academia initiatives such as The Khronos Group*, to create and define specifications in an open and fair process to achieve interoperability and interchangeability. oneAPI is intended to be an open specification and we encourage you to help us make it better. Your feedback is optional, but to enable Intel to incorporate any feedback you may provide to this specification, and to further upstream your feedback to other standards bodies, including The Khronos Group SYCL* specification, please submit your feedback under the terms and conditions below. Any contribution of your feedback to the oneAPI Specification does not prohibit you from also contributing your feedback directly to other standard bodies, including The Khronos Group under their respective submission policies.
By opening an issue, providing feedback, or otherwise contributing to the specification, you agree that Intel will be free to use, disclose, reproduce, modify, license, or otherwise distribute your feedback at its sole discretion without any obligations or restrictions of any kind, including without limitation, intellectual property rights or licensing obligations.
This document contains information on products, services and/or processes in development. All information provided here is subject to change without notice.
© Intel Corporation. Intel、インテル、Intel ロゴ、その他のインテルの名称やロゴは、Intel Corporation またはその子会社の商標です。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。