SQL Data Insights を使用した AI クエリの実行

SQL Data Insights (SQL DI ) は、AI 搭載の Db2 機能です。 これは、人工知能(AI)におけるディープラーニングと高度な IBM® Z テクノロジーを組み合わせ、 Db2 エンジンにユーザーテーブルとビューにおけるSQLベースの意味論的クエリを注入します。

リレーショナルデータベースの既存のデータモデル、SQLクエリ、テキスト拡張、ユーザー定義関数では、カラム内またはカラム間の値エンティティ間の意味的な関係を把握することができません。 SQL DIは、ディープラーニングとAIにおける自己監督学習アプローチであるデータベース埋め込みを使用して、ニューラルネットワークモデルを訓練し、リレーショナルテーブル内のユニークな値の意味を推論します。 数値ベクトル形式で推論された意味は、列間および列内のデータ間の関係性をカプセル化します。 SQL DIは、数値ベクトルで構成される学習済みモデルを使用して、 Db2 データにおける意味的な類似点や相違点を発見、照合、クラスタリングするAIクエリを実行します。

図1: SQL DI アーキテクチャ
図の説明の開始 SQL DI アーキテクチャ。 図の説明を終了する

SQL DI は、お客様の Db2 for z/OS® 環境にシームレスに統合されます。 この機能は、AIライブラリスタック、データおよびクエリエンジン、クライアントアプリケーションで構成されています。 AIライブラリスタックは、 z/OS にネイティブに存在する Z Deep Neural Network Library コンポーネントによって提供されます。 スタックは、 zDNNzAIOzADE ライブラリで構成されており、これにより SQL DIは IBM Z プロセッサを最大限に活用することができます。

データおよびクエリエンジンは Db2 for z/OS に組み込まれており、データの処理と意味検索のクエリ処理のサービスを提供します。 この処理エンジンの核となるのは、 AI_SIMILARITYAI_SEMANTIC_CLUSTERAI_ANALOGYAI_COMMONALITY の各スカラー関数です。 これらの組み込み関数を SQL ステートメントで使用して、データに関するセマンティック上の質問をすることができます。

SQL DI クライアントアプリケーションは、 Machine Learning for IBM z/OS ランタイムエンジン z/OS Spark。 これには、ウェブユーザーインターフェース(UI)、RESTfulアプリケーションプログラミングインターフェース(API)、およびシェルコマンドラインインターフェース(CLI)が含まれます。 SQL DI サーバー の設定管理、AI オブジェクトの作成、AI クエリ用オブジェクトの有効化、オブジェクトモデルの再トレーニング、その他のタスクの実行には、ウェブ UI、REST API、またはシェル CLI を使用できます。

SQL DI を使用すると、 Db2 内の膨大な量のミッションクリティカルなデータに素早くアクセスし、テーブルやビューにまたがる隠れた情報を簡単に発見して、実行可能な洞察を得ることができます。 膨大なデータをプラットフォーム間で移動させたり、高価なAIインフラを調達したり、高度なAIスキルを習得したりといった多大な労力やコストをかけずに、これらすべてを実現することができます。

SQL DI はどのように機能しますか?

ウェブUIの SQL DIワークフロー を例に取ってみましょう。 ログイン後、 SQL DI を Db2 に接続し、選択したソース Db2 のテーブルまたはビューから AI オブジェクトを作成し、AI クエリ用にオブジェクトを有効化し、いつでもオブジェクト上でクエリを実行します。

AIクエリをオブジェクトで有効にするために、 SQL DIはオブジェクト内のデータを前処理し、そのデータでニューラルネットワークモデルを訓練し、そのモデルを Db2 にロードします。 データの前処理として、 SQL DIは組み込みの Spark クラスタを使用して、有効化のために選択された Db2 列をテキストに変換します。これはAIオブジェクトのテキストデータとして知られています。 データ変換後、SQL DIは数値データ型の値をクラスタ化し、すべての数値値をクラスタ識別子に置き換えます。 テキスト形式では、データ内の数値データまたはカテゴリデータ型の値はすべて、そのカラム名とともにタグ付けされます。 さらに、すべての数値データ型の値にはクラスタ識別子が関連付けられています。

図2: SQL DI AI クエリ有効化
図の説明の開始 SQL DI AI クエリ有効化。 図の説明を終了する

データの前処理が完了すると、 SQL DIは zDNN スタックが提供する z/OS のAI機能を使用して、AIオブジェクトのテキストデータセットからの入力でモデルをトレーニングします。 トレーニングプロセスでは、データセット内のすべてのユニークな値に対して数値ベクトルが生成されます。 数値ベクトルは、オブジェクト内の異なるユニークな値間の列間および列内の意味的な関係を表します。これは、語彙とも呼ばれます。 SQL DIは、 Db2 LOADユーティリティを使用して、トレーニング済みのモデルを Db2 テーブルにロードします。

有効化に成功すると、いつでもオブジェクトに対して類似性、非類似性、クラスタリング、類似性、または共通性のクエリを実行できます。 クエリの種類を選択し、SQLステートメントを入力してクエリを実行するだけです。 選択したクエリタイプに応じて、 SQL DIは対応する Db2 AI function を使用してクエリを処理します。 これは、クエリ結果の最初の50行をUIに表示し、残りの行を Db2 テーブルにロードします。 SQL DI UI から表示されている行をエクスポートするか、 Db2 から結果セット全体をダウンロードすることができます。

モデルトレーニング中、 SQL DIは主要なデータ統計も収集し、オブジェクトとモデルの列影響度と識別スコアに変換します。 列の影響スコアは、列内のユーザー指定の NULL 値の数と相関し、オブジェクトモデルのトレーニングに対する列の影響を示します。 一方、識別スコアは、列内のユニークな値の数と相関し、テーブル内の他の値と意味的に区別する列の能力を測定します。 視覚化されたスコアは、対象に対するAIクエリの結果を理解するのに役立ちます。

データの変更に伴い、オブジェクトモデルの精度は時間の経過とともに低下する可能性があります。 必要に応じて、対象であればモデルを再トレーニングすることができます。 デフォルトでは、必要なメンテナンス(APAR)がすべて適用された SQL DI環境で最初にトレーニングされた新しいモデルは、再トレーニングの対象となります。 APARアプリケーションの前に存在するモデルについては、まずそれを削除する必要があります。 必要なAPARを適用し、 SQL DI環境をアップグレードした後、AIクエリ用のオブジェクトを無効にします。 無効化により、既存のモデルが削除されます。 その後、AIクエリ用にオブジェクトを再度有効化します。 成功した導入研修では、再研修の対象となる新しいモデルが自動的に育成されます。

SQL DI の概念と定義

SQL DI の学習、使用、管理に役立つ以下の概念と定義を紹介します

AI オブジェクト
Db2 ユーザーテーブルまたはビューを格納するために作成できる SQL DIアセット。 その後、 SQL DI UI でオブジェクトをAIクエリ用に有効にすることができます。
AIオブジェクトテキストデータ
AIクエリを有効にするためにテキスト形式に変換およびフォーマットされたAIオブジェクト内のデータ。 このテキストデータはモデルのトレーニングの入力となります。 データ内のトークンの数は、AI オブジェクトのモデルトレーニング用に選択されたすべてのカテゴリおよび数値の列の値です。
語彙
AIクエリを有効にするためのAIオブジェクト内の選択した SQL DIカテゴリカラムのユニークな値の総数と、選択した数値カラムに関連するクラスタの数。
SQL DI データ型
AIオブジェクトのカラム構成およびモデルトレーニング用にカラムに割り当てることができる、SQL DI固有のデータカテゴリー記述子。 列に以下の SQL DIデータ型のいずれかを割り当てることができます
  • カテゴリ型 :SQL DI categorical データ型は、それぞれが独立した値を持つ列に使用されます。
  • 数値 :SQL DI numeric データ型は、連続した値を持つカラムに使用されます。
  • キー: SQL DI key データ型は、列が行全体を表していることを示すために使用されます。

詳細は、「SQL DI ウェブ UI での AI クエリの有効化または無効化 」を参照してください。

AI 照会
AIオブジェクト上で実行できる意味論的なクエリで、オブジェクト内のエンティティ間の隠れた関係性を推論します。 AIクエリの種類は次のものから選択できます
SQL DI AI クエリタイプと対応する Db2 AI functions
SQL DI クエリタイプ 説明 Db2 宛て AI function
意味的類似性 類推クエリは、2つのエンティティ間の関係が、2番目のエンティティペアにも当てはまるかどうかを判断します。 AI_ANALOGY
意味クラスタリング クラスタリングクエリはレコード内のエンティティのクラスタを形成し、追加のエンティティがそのクラスタに属するかどうかを評価します。 AI_SEMANTIC_CLUSTER
意味上の共通性 共通性クエリは、最も一般的なパターンまたは非一般的なパターンを示すレコード内のエンティティを特定します。 AI_COMMONALITY
意味の相違 非類似性クエリは、レコードの標準から外れた値を検出します。 AI_SIMILARITY
意味の類似性 類似クエリは、類似したレコードまたはレコード内のエンティティのグループを特定します。 AI_SIMILARITY

詳細は、「SQL DI web UI での AI クエリの実行 」を参照してください。

ベクトルプリフェッチ
SQL DI が数値ベクトルを類似スコア計算用に zAIO ライブラリにアップロードする際に使用する高度なプロセス。 ベクトルはAIオブジェクトのテキストデータセットから生成されます。 既存のクエリ処理アーキテクチャでは、 Db2 AI functions がベクトルをレコードごとに z/OS に送信し、処理を行うよう指示しています。 クエリーのパフォーマンスを大幅に改善するために、 SQL DIはベクトルプリフェッチを実装し、 Db2 が一度に複数のベクトルを一括アップロードできるようにしました。
ibm-data2vec
z/OS ネイティブ AI function で、 SQL DI がモデルのトレーニングに使用するもの。 ibm-data2vec 機能は、自己監視型データベース埋め込みアルゴリズムの実装です。 データベース埋め込みでは、マルチモーダル関係テーブルから作成されたテキストファイルを入力とし、関係データモデルを使用してテキストトークン間の関係マップを構築します。 リレーショナルテーブルから生成された入力トレーニング文書は、元の Db2 テーブルまたはビューにおける異なるリレーショナルエンティティを表す文字列トークンで構成されます。 ibm-data2vec 機能は、トレーニング文書を一連の文として表示し、各文はリレーショナルテーブルの行を表します。

モデルトレーニングが完了すると、 ibm-data2vec は各トークンに対してあらかじめ定義された長さ(次元)の数値ベクトルを生成し、そのベクトルがトークンの意味をエンコードします。 トレーニングプロセスのコアとなる数値計算は、マルチスレッドを使用することで並列化され、ハードウェアによる数値計算を使用することで高速化されます。 最終的なトレーニングモデルは、 Db2 ZLOAD ユーティリティを使用するバイナリファイルとして保存されます。 詳細は ibm-data2vec 詳細はこちらをご覧ください。

base10Cluster
z/OS 数値クラスタリングアルゴリズムは、異なるバケット内で数値的に近いアイテムをまとめてクラスタ化し、それぞれが個別のクラスタを表します。 SQL DIは、 base10Cluster アルゴリズムを使用して入力データセットを処理し、バケットの数とそれに対応する最小値を記載した出力ファイルを生成します。 詳細は base10Cluster 詳細はこちらをご覧ください。
列影響スコア
列のユーザー指定値とSQL NULL値の数に関連するスコアであり、オブジェクトモデルのトレーニングに対する列の影響力を示す。 その列のNULL値が少ないほど、影響スコアが高くなります。
列識別スコア
列のユニークな値の数と相関するスコアであり、テーブル内の他の値と意味的に区別する列の能力を測定する。 その列が持つユニークな価値が多ければ多いほど、より高い識別スコアが生成されます。