oneAPI 1.3 暫定仕様書 Rev. 1 の解説 (39)

その他

この記事は、https://www.oneapi.io/spec/ で 2023年9月14日に公開された『oneAPI 1.3 Provisional Specification Rev. 1』 (HTMLPDF) をベースにしています。原文は2000 ページ近くあり、翻訳の時間とリソースも限られるため、全文翻訳ではなく、記事形式で区切った仕様とその解説を提供することにしました。


この回では、『oneAPI 1.3 Provisional Specification Rev. 1』の「oneDAL」の「Data management」の節を取り上げています。

データ管理

ここには、データを操作する概念とオブジェクトが含まれます。oneDAL では、このような一連の操作 (データ管理) は、データ分析パイプライン (英語) の各ステージに分散されます。データ管理の観点から、このパイプラインには、データの取得、準備、計算の 3 つのステップが含まれます (以下の図を参照)。

  1. 生データの取得

    • 各種ソース (データベース、ファイル、リモートストレージ) からアウトオブメモリーにあるデータをインメモリーに転送します。

  2. データの準備

    • 異なるインメモリー・データ形式をサポートします。
    • データの圧縮と展開を行います。
    • データを数値表現に変換します。
    • 欠落しているデータを回復します。
    • データをフィルター処理して正規化を行います。
    • 平均、分散、共分散など、数値データのさまざまな統計メトリックを計算します。
  3. アルゴリズムの計算

    • インメモリーの数値データをアルゴリズムにストリームします。

複雑なシナリオでは、データフローはこの 2 つのステージを行き来します。例えば、計算を開始するときにデータ全体がまだ利用不可である場合、データをブロック化して利用できます。現在のブロックの計算が完了したら、次のブロックを取得して準備する必要があります。

主要な概念

oneDAL では、データ分析パイプライン (英語) のそれぞれのステージで、アウトオブメモリーまたはインメモリーのデータを操作する一連の概念を提供します。

データセット

oneDAL が動作する主なデータに関連する概念はデータセットです。これはデータを表形式で表したものであり、表の行は観測値を示し、列は特徴を示します。

データセットは、データ分析パイプラインのすべてのステージで使用されます。
例:

  1. 取得ステージでは、ローカルメモリーにダウンロードされます。
  2. 準備ステージでは、数値表現に変換されます。
  3. 計算ステージでは、アルゴリズムや記述子 (英語)プロパティーの入力 (英語) または結果 (英語)の 1 つとして使用されます。

データソース

データソースは、データセットのアウトオブメモリー・ストレージの概念です。これは、データ準備とデータ処理ステージにおいて次の用途に使用されます。

  • データベース、ファイル、リモートストレージなど外部ソースからデータセットを抽出します。

  • データセットをデバイスのローカルメモリーにロードします。アクセラレーターで処理を行う場合、データが常にローカルメモリーに収まるとは限りません。データソースは、データをバッチでロードして、デバイスのローカルメモリーに直接展開する機能があります。そのため、データソースを使用することで、オンライン計算など複雑なデータ分析シナリオが可能になります。

  • データセットを数値表現に変換します。データソースは、数値以外のカテゴリーおよび連続するデータ値を数値データ形式に自動的に変換します。

詳細は、「データソース」 (英語) の節をご覧ください。

テーブル

テーブルは、複数の行と列を持つ表形式表示に編成されたインメモリーの数値データ概念です。これは、データ準備とデータ処理ステージにおいて次の用途に使用されます。

  • データセットまたは他の表形式データ (行列、ベクトル、スカラーなど) のインメモリー表現。
  • 異種データを、密、疎、チャンク、連続など各種データ形式で保存します。
  • 外部データ表現からの変換で、不要なデータのコピーを回避します。
  • データのメモリー所有権をユーザー・アプリケーションからテーブルに転送するか、データを共有します。
  • データソースに接続して、データをアウトオブメモリーからインメモリー表現に変換します。
  • アルゴリズムへのデータのストリーミングをサポートします。
  • 要求されるデータ形式でデバイス上のデータにアクセスします。例えば、定義されたデータレイアウトのブロックなど。

注: スレッドセーフと外部エンティティーとの統合性の観点から、テーブルはデータへの読み取り専用アクセスを許可します。そのため、テーブル・オブジェクトは不変でなければなりません。

この概念では、データの論理構成と物理形式が異なります。

  • 論理的にテーブルは n 行と p 列で構成されます。すべての列には、独自のタイプのデータ値と許容される操作セットがあります。

  • 物理的には、テーブルはさまざまな形式で編成できます。バイト単位の同種の、連続した配列、または異なるデータタイプ配列の異種リストとして、圧縮された疎行形式を編成できます。データを格納するために必要なバイト数は、テーブル内の要素数 n×p とは異なります。

詳細は、「テーブル」 (英語)の節をご覧ください。

テーブルのメタデータ

テーブルのメタデータの概念は、テーブル内のデータに関する追加情報を提供します。

  1. 列のデータタイプ。
  2. 列データの論理タイプには、基準 (nominal)、順序 (ordinal)、区間 (interval)、または 比率 (ratio) があります。

テーブルの概念の定義に影響しないデータのプロパティーのみが、メタデータの概念の一部になります。

警告: テーブルの概念を拡張する場合、仕様の実装では追加する新しいプロパティーが特定のテーブルのサブタイプのプロパティーであるか、テーブルのメタデータのプロパティーであるかを区別する必要があります。

例えば、データレイアウトとデータ形式は、テーブルの構造、定義、および動作に影響するテーブル・オブジェクトのプロパティーです。テーブル内の特徴または列の名前リストは、メタデータ・プロパティーの一例です。

アクセサー

アクセサーは、テーブルからデータを抽出する方法を定義する概念です。これにより次のことが可能になります。

  • 実装の詳細を明確にすることなく、さまざまなタイプのテーブル・オブジェクトのデータに一元的にアクセスできます。
  • データの局所性を高めるため、テーブルのデータブロックのフラットなビューを提供します。例えば、アクセサーは行優先で格納されたテーブルの列を、連続した配列として返すことができます。
  • 特定の操作セットが定義されるデータを必要とするデータ形式で取得できます。
  • データへの読み取り専用アクセスを許可します。

詳細は、「アクセサー」 (英語)の節をご覧ください。

テーブルとアクセサー・オブジェクト間の相互作用の例

ここでは、テーブルとアクセサーの概念における基本的なシナリオを示し、それらの関連を示します。次の図は、この概念のオブジェクトを示し、それぞれの色で強調表示しています。

  • テーブル・オブジェクトは紺色です。
  • アクセサーはオレンジ色です。
  • テーブルのメタデータは水色です。

データセットを使用して計算を行うには、最初にテーブル・オブジェクトを作成する必要があります。これは、データソースを使用するか、ユーザー定義のメモリーから直接実行できます。この図では、ユーザーから提供されたデータ (図には示されていません) からテーブル・オブジェクト t を作成する例を示しています。テーブルの作成過程で、テーブルのメタデータ・オブジェクト tm が構築されて初期化されます。

テーブル・オブジェクトが作成されると、計算の入力として、もしくはアルゴリズムのパラメーターとして使用できます。テーブルのデータには、図に示すように、独自のインターフェイスや読み取り専用アクセサーを介してアクセスできます。


法務上の注意書き

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 またはその子会社の商標です。

* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

« パート 38        目次        パート 40 »
タイトルとURLをコピーしました