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

SQL Data InsightsSQL DI )は、AIを活用した Db2 for z/OS® 機能であり、データ内の意味的検索、類似性の発見、および異常検出を実現します。 Db2AIや最先端 IBM® Z のテクノロジーを活用し、トランザクションデータに対してSQLベースのセマンティッククエリを実行することで、コストのかかるデータ移動や複雑なAIモデルの管理を必要とせずに、リアルタイムのインサイトを提供します。

SQL DI を使用すると、従来の SQL クエリでは検出できないデータ内の意味的な関係性を明らかにすることができます。 データベースの埋め込みと深層自己教師なし学習を用いて、ニューラルネットワークモデルを学習させ、ユーザーテーブルやビュー内の固有値から意味的な意味を推論します。 数値ベクトルの形で表される推論された意味は、列や行にわたるデータの関係を包含している。 その後、学習済みのモデルを用いてAIクエリを実行し、従来のSQLクエリでは見つけられなかったレコード内のパターン、関連性、傾向を明らかにします。

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

SQL DI は、お客様の Db2 環境にシームレスに統合されます。 model training engineこの機能には、ランタイム、データおよびクエリエンジン、クライアントアプリケーションが含まれています。 この model training engine は、 および AI ライブラリスタック z/OS によって z/OS Spark 動作しています。 このスタックの中心となるのは、 (zDNN)、 Z AI Optimization (zAIO)、および Z AI Data Embedding (zADE) ライブラリ Z Deep Neural Network Library であり、これらを組み合わせることで、 SQL DI は プロセッサの IBM Z 機能を最大限に活用できるようになります。

データおよびクエリエンジンは に Db2 組み込まれており、データ処理やセマンティッククエリのためのサービスを提供します。 このエンジンの中核をなすのは、4つの組み込みスカラー関数、すなわち AI_SIMILARITY AI_SEMANTIC_CLUSTERAI_ANALOGY、、および AI_COMMONALITYです。 これらの関数をSQL文で使用することで、データについて問いかけたり、パターンを特定したり、関係性を発見したり、共通点を分析したりすることができます。

このSQL DI クライアントアプリケーションには、Webユーザーインターフェース(UI)、RESTfulアプリケーションプログラミングインターフェース(API)、およびシェルコマンドラインインターフェース(CLI)が含まれています。 いずれのインターフェースでも、 SQL DI サーバーの設定管理、AIオブジェクトの作成、AIクエリ用のオブジェクトの有効化、オブジェクトモデルの再学習、およびユーザータスクの実行を行うことができます。 また、API や CLI を利用することで、こうした作業の一部を簡略化したり自動化したりすることもできます。

SQL DI を使用すれば、膨大な量のミッションクリティカルなトランザクションデータに迅速にアクセスし、 Db2 テーブルやビューにまたがる隠れた情報を容易に発見して、実用的な知見を得ることができます。 データを他のプラットフォームに移行したり、追加のAIインフラを導入したり、AIに関する専門的な知識を習得したりすることなく、これらすべてを実現できます。

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

SQL DI なら、AI機能に通常伴う複雑さを気にすることなく、エンタープライズレベルのAI分析を簡単に利用できます。 ここでは、Web UI における SQL DI のワークフローを例に挙げてみましょう。 Db2サインイン後、 SQL DI を接続し、ソース Db2 テーブルまたはビューから AI オブジェクトを作成し、そのオブジェクトに対して AI クエリを有効にして、いつでもそのオブジェクトに対してクエリを実行できます。

Db2オブジェクトをAIクエリに対応させるために、 SQL DIはオブジェクト内のデータを前処理し、ニューラルネットワークモデルを学習させ、そのモデルを.に読み込みます。 データの事前処理において、 SQL DI は を使用して z/OS Spark 、選択された列をテキストに変換します。これは、AI オブジェクトのテキストデータとして知られています。 データ変換の後、 SQL DI は数値データ型の値をクラスタ化し、それらをクラスタ識別子に置き換えます。 テキスト形式では、数値型およびカテゴリ型のすべてのデータ値には列名がタグ付けされており、さらに数値型のデータ値にはクラスタ識別子も関連付けられています。

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

Sparkデータの処理が完了すると、 SQL DIは、およびスタック zDNN を用いて、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環境で最初にトレーニングされた新しいモデルは、再トレーニングの対象となります。 更新前に存在していたモデルについては、まずそれを削除する必要があります。 必要なメンテナンスを実施し、 SQL DI 環境をアップグレードした後、AI クエリ用のオブジェクトを無効にしてください。 無効化により、既存のモデルが削除されます。 その後、AIクエリ用にオブジェクトを再度有効化します。 成功した導入研修では、再研修の対象となる新しいモデルが自動的に育成されます。

SQL DI の概念と定義

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

AI オブジェクト
Db2 ユーザーテーブルまたはビューを格納するために作成できる SQL DIアセット
AIオブジェクトテキストデータ
AIクエリの実行を可能にするためにテキストとして変換・整形され、モデル学習の入力として使用されるAIオブジェクト内のデータ。 データ内のトークン数は、AIオブジェクトのモデル学習用に選択された、すべてのカテゴリ型、数値型、およびテキスト型の列に含まれる値の数です。
語彙
AIクエリ対応のためのAIオブジェクトにおいて、選択されたSQL DI のカテゴリ型列に含まれる一意の値の総数、および選択された数値型およびテキスト型列に関連付けられたクラスタの数。
SQL DIデータ・タイプ
SQL DI が AI オブジェクト内のテーブルまたはビューのデータを分類するために使用するデータカテゴリ記述子。 AI オブジェクトの列には、列の設定やモデルのトレーニングのために、以下の SQL DI データ型のいずれかを割り当てることができます:
  • カテゴリ型 :この categoricalSQL DI データ型は、離散的な値を持つ列に使用され、それぞれの値が独立した実体となります。
  • 数値型 :この numericSQL DI データ型は、連続値を持つ列に使用されます。
  • 凡例 :データ型 key 「」は SQL DI 、その列が1行全体を表すことを示すために使用されます。

詳細は、「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共通性
意味の相違 非類似性クエリは、レコードの標準から外れた値を検出します。 AI_SIMILARITY
意味の類似性 類似クエリは、類似したレコードまたはレコード内のエンティティのグループを特定します。 AI_SIMILARITY

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

ベクトルプリフェッチ
SQL DI が、スコアリング計算のために数値ベクトルをサービス zAIO にアップロードする際に使用する高度な処理。 ベクトルはAIオブジェクトのテキストデータセットから生成されます。 既存のクエリ処理アーキテクチャでは、 Db2AI functions がベクトルをレコードごとに処理先へ送信することが定められています。 zAIO クエリーのパフォーマンスを大幅に改善するために、 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値が少ないほど、影響スコアが高くなります。
列識別スコア
列のユニークな値の数と相関するスコアであり、テーブル内の他の値と意味的に区別する列の能力を測定する。 その列が持つユニークな価値が多ければ多いほど、より高い識別スコアが生成されます。