IBM Developer Blog

IBM Developer サイトで最新の出来事をフォローし、情報を入手しましょう。

IBM Db2 Warehouse には、Db2 Warehouse on Cloud 内に保管されているデータに対してモデルをトレーニングおよび実行する機械学習機能が組み込まれています。処理は Db2 Warehouse エンジン自体が行うため、データを移動する必要はありません。この仕組みにより、計算処理とその結果の取得という点でパフォーマンスを向上させることができます。


このブログはラーニング・パス「Db2 for AI」を構成するコンテンツです。

Db2 には長く、変化に富んだ歴史があります。Db2 は IBM メインフレーム専用のデータベースとして 1980 年代にリリースされました。1990 年代には Linux、Unix、Windows をサポートするようになりました。2000 年代になると Db2 for z/OS がリリースされ、MySQL 内のエンジンとして DB2 を使用できることが発表されました。クラウド一色の 2010 年代には、Db2 on Cloud と Db2 Warehouse on IBM Cloud がリリースされました。そして現在、AI が大流行する中、Db2 では AI のサポートを追加するようになっています。これはどういうことでしょうか?

私がこのブログ記事で明らかにしたいのは、Db2 は開発者と AI に大いに役立つという点です。この言葉が信じられないとしたら、この先を読み進めてください。Db2 バージョン 11.5 で導入されたいくつかの見事な機能と、Db2 を使用する開発者向けに作成された 2 つのツールについて紹介します。具体的には次の機能です。

  1. 最新のアプリケーションを構築するためによく使われている言語のそれぞれに対応した SDK
  2. 機械学習用のストアード・プロシージャー
  3. Db2Connect という VSCode 拡張機能,

よく使われている言語のそれぞれに対応した SDK

Db2 チームは最近の新しいプログラミング言語で作成したコネクターをオープンソース化しました。これにより、開発者は Node.js、Python、さらには Go などの言語を使ってアプリケーションを構築できるようになっています。いずれのコネクターも ibmdb 組織上でホストされています。以下はその数例です。

言語 リポジトリー
Java java-db2
Go go-db2
Python python-imdb
Node node-ibm_db

機械学習用のストアード・プロシージャー

IBM Db2 Warehouse には、Db2 Warehouse on Cloud 内に保管されているデータに対してモデルをトレーニングおよび実行する機械学習機能が組み込まれています。処理は Db2 Warehouse エンジン自体が行うため、データを移動する必要はありません。この仕組みにより、計算処理とその結果の取得という点でパフォーマンスを向上させることができます。IBM Db2 Warehouse on Cloud でストアード・プロシージャーという形でサポートしている各種のアルゴリズムについて詳しくは、こちらをご覧ください。

以下に、トレーニング・データセットを使用して線形回帰モデルを作成するストアード・プロシージャー・コールの例を示します。この例では、各航空会社での過去 12 か月間にわたる平均到着遅延を計算します。乗り継ぎや会議を予定しているエンド・ユーザーは、計算された平均到着遅延を踏まえ、フライトが目的地に定刻通りに到着するだろうと安心できます。このストアード・プロシージャー・コールにより、BFD12_TRAIN という名前のテーブル内にあるデータに基づく BFD12_ARR というモデルが作成されて、ARR_DELAY 列の値が予測されます。

CALL IDAX.LINEAR_REGRESSION
('model=BFD12_ARR,
intable=BFD12_TRAIN,
id=ID,
target=ARR_DELAY,
incolumn=OP_CARRIER; MANUFACTURER; MODEL; DAY_OF_WEEK; MONTH; DEP_TIME_BLK,
coldefrole=ignore, calculatediagnostics=false');

上記のストアード・プロシージャー・コールで作成されたモデルを使用すれば、predict linear regression ストアード・プロシージャーを使って新しいフライトの到着遅延を予測できます。以下はその一例です。

CALL IDAX.PREDICT_LINEAR_REGRESSION
('model=BFD12_ARR,
intable=BFD12_TEST,
outtable=BFD12_ARR_OUT,
id=ID');

上記のストアード・プロシージャー PREDICT_LINEAR_REGRESSION は線形回帰モデル BFD_12_ARR を使用して、BFD12_TEST テーブル内のデータで到着遅延を予測し、BFD12_ARR_OUT テーブル内に出力を保管します。新しく生成された各テーブルは、主キー ID を使用してリンクされます。

仕組み

上述したようにストアード・プロシージャーを使用するには、その前に、教師なしニューラル・ネットワークを構築する必要があります。モデルが作成された後は、正しい SQL 構文を使用してモデルを呼び出すことができます。人工ニューラル・ネットワークのトレーニングは処理のオーバーヘッドであり、ストアード・プロシージャー・コールではありません。どのニューラル・ネットワークでもそうですが、データの進化に合わせてモデルを更新する必要があります。

従来の SQL

以下のスニペットは、ストアード・プロシージャーを使用せずに、従来の SQL で同じ処理を行う方法を示しています。

SELECT "OP_CARRIER", AVG("ARR_DELAY") AS "AVERAGE ARRIVAL DELAY"
FROM BFD_12MONTHS
GROUP BY "OP_CARRIER"
ORDER BY "AVERAGE ARRIVAL DELAY" ASC;

結果

この従来の SQL は、既存のデータに基づいて平均到着遅延を計算します。この従来の SQL で将来のフライトの遅延を予測することはできません。この問題を克服するには、Db2 Warehouse の組み込みストアード・プロシージャーを使用できます。組み込みストアード・プロシージャーによってモデルを作成し、そのモデルを使って将来の結果を予測できるからです。

この機能について詳しくは、Db2 上での機械学習クエリーの実行に関するコード・パターンを参照してください。

開発者にとって重要な点

  • AI を利用してアプリケーションを強化できます。
  • モデルを作成するのは骨の折れる作業であり、時間もかかります。モデルをロード/更新するにも、データを採点するにも、新しい関数/抽象化が必要になります。
  • 機械学習がストアード・プロシージャーとして用意されていれば、これらすべての問題が解消されます。この場合、TensorFlow でモデルを作成する方法を学ばなくても、機械学習を利用できます。他のデータベース呼び出しと同じように簡単にストアード・プロシージャー・コールを使用して、アプリケーションに AI を注入できます。
  • 処理は Db2 Warehouse エンジン自体が行うため、データを移動する必要はありません。この仕組みにより、計算処理とその結果の取得という点でパフォーマンスを向上させることができます。

Db2 Augmented Data Explorer

IBM Db2 Augmented Data Explorer (ADE) は高度な分析手法を採用した、自然言語での検索とディスカバリーの操作を可能にするツールです。しかも、無料で使用できます。開発者がアプリケーション内に検索機能を用意する必要がある場合、検索と索引付けから使いやすいグラフィカル・ユーザー・インターフェースに至るまでのスタック全体の構築を考慮しなければなりません。

ADE の RESTful API を使用すれば、開発者はデータをクロールして索引を付けてから、そのデータに対する検索エクスペリエンスを提供できます。しかも、このエクスペリエンスには自動的に選択される視覚化も含まれます。検索エクスペリエンスの初めから終わりまでを考慮するのではなく、この無料のテクノロジーを統合して使用することで、最高クラスの検索およびディスカバリー・エクスペリエンスをアプリケーション・ユーザーに提供できます。 詳細についてはこちらをご覧ください。

VSCode 拡張機能

最後に取り上げる話題は、Db2Connect という新しい VSCode 拡張機能です。Db2Connect を使用すると、アプリをデプロイすることなく、Db2 接続をセットアップしてローカルで接続とアプリをテストできます。

L-R: 拡張検索結果、拡張機能のインストール・ページ、拡張機能の構成パネル VSCode 拡張機能

まとめ

以上の内容をすべて踏まえると、Db2 for AI を利用すると次のメリットがもたらされることになります。

  • より簡単に – 開発者はモデルの作成方法を知らなくても、モデルを呼び出すだけで機械学習を利用できます。オープンソース・コネクターを使用すれば、機械学習がいとも簡単になります。
  • より安全に – データとモデルは同じ場所に保管されます。
  • より迅速に – モデルは同じデータベース内に保管されるので、モデルをディスクからロードする必要はありません。

このブログは、IBM Db2 for AI の機能と使い方を迅速に把握できるようガイドするラーニング・パスを構成するコンテンツです。このラーニング・パスは、手順を説明するパターンと実際に使用できる完全なコード・サンプルで構成されています。このラーニング・パスに従うと、Db2 for AI の他の機能とさまざまな使用ケースを学ぶことができます。

早速、ラーニング・パスを開始しましょう。最初のステップでは、IBM Db2 Warehouse on Cloud を利用して、データベース内のレコードを作成、更新、削除する Web アプリケーションを Node.js で作成する方法を学びます。