daisukeの技術ブログ

AI、機械学習、最適化、Pythonなどについて、技術調査、技術書の理解した内容、ソフトウェア/ツール作成について書いていきます

【解説】DB4Sの使い方:インストール方法、Optunaのデータベースの操作方法

今回は、フリーソフトのDB4Sのインストール方法と、使い方を説明します。

対象は、SQLiteで、Optunaののデータベースファイルを使って、具体的な操作方法をを記載します。

また、Google Colaboratoryで、SQL命令を実行する方法についても紹介します。

この内容が参考になれば幸いです。

参考文献

はじめに

Optunaの記事一覧です。良かったら参考にしてください。

Optunaの記事一覧
開発環境の構築:開発環境の構築手順(用途:AI関連、Python)
Optunaの全体像:書籍の解説:Optunaによるブラックボックス最適化
単目的最適化:Google ColaboratoryでOptunaを実行(Study再現性の確保)
可視化:Google ColaboratoryでOptuna Dashboardを使う方法
Optunaのデータベース:DB4Sのインストール方法、データベースの操作方法 ← 今回

まず、GUIで簡単にSQLiteのデータベースファイルの内容を確認できるDB Browser for SQLite(DB4S)をインストールする手順を説明します。

DB4Sは、SQLiteのデータベース ファイルを作成、設計、編集することができるGUIのオープンソースのツールです。

Optunaのストレージの内容を確認できるだけでなく、データベースファイルを編集することもできるため、スタディの内容を少し変更したい場合などに大変重宝します。

実際に役立った例をあげると、Optuna Dashboardでグラフなどを表示できますが、外れ値のような学習結果があると、見たいスケールで見れない場合がよくあります。その場合に、DB4Sでデータベースを開き、外れ値のような学習結果を、完了から失敗に書き換える(COMPLETE→FAIL)と、グラフが見やすいものになります。

では、やっていきましょう!

DB Browser for SQLite(DB4S)のインストール方法

まずは、DB4Sをインストールしていきます。

このリンクの「DB Browser for SQLite - Standard installer for 64-bit Windows」をダウンロード(32bit環境の場合はそのファイルをダウンロード)します。

sqlitebrowser.org

DB4Sのダウンロード
DB4Sのダウンロード

以下は、インストール手順です。

注意点は、ShortCutsで、全てにチェックを入れることです!

ここにチェックを入れないと、WindowsのメニューにDB Browser for SQLiteが追加されないため、DB4Sを起動するのがとても面倒になります!

Nextをクリック
Nextをクリック

使用許諾を確認し、チェックを入れて、Nextをクリック
使用許諾を確認し、チェックを入れて、Nextをクリック

ショートカットの作成の選択、全部チェック入れた方がいいです!
ショートカットの作成の選択、全部チェック入れた方がいいです!

インストール場所の指定とインストールパッケージの選択、そのままNextをクリック
インストール場所の指定とインストールパッケージの選択、そのままNextをクリック

Installをクリック
Installをクリック

インストール完了
インストール完了

以上で、インストールは完了です。お疲れ様でした。

DB Browser for SQLite(DB4S)の使い方

インストールが完了したら、実際にOptunaのストレージの内容を確認してみます。

手順

  • DB Browser (SQLite)を起動する
  • 「データベースを開く」をクリック
  • パソコン版Googleドライブをインストールしてれば、Googleドライブをマウントしているドライブから「optuna.db」を探して開く(パソコン版Googleドライブをインストールしていない場合は、ブラウザでGoogleドライブを開き、optuna.dbをローカルにダウンロードして開く)

以下のような画面になります。

DB Browser for SQLiteでOptunaのストレージを読み込んだ
DB Browser for SQLiteでOptunaのストレージを読み込んだ

データベース構造のタブが表示されており、optuna.dbが持つ13個のテーブルが確認できます。

続いて、データ閲覧のタブをクリックしてみます。具体的なデータが見えると思います。

テーブルを他のテーブルに切り替えると、そのテーブルの内容が確認できます。

以下は、studiesテーブルを選択したところです。

optuna.dbのstudiesテーブルの内容が確認できた
optuna.dbのstudiesテーブルの内容が確認できた

ここでは、3つのスタディが確認できます。

続いて、trialsテーブルを選択します。

optuna.dbのtrialsテーブルの内容が確認できた
optuna.dbのtrialsテーブルの内容が確認できた

上記のstudiesテーブルの内容を確認したところで、「ch2-rf」は「study_id」が3でした。trialsテーブルには、全てのスタディのトライアルが格納されており、「study_id」で、どのスタディのトライアルかが識別できます。

「state」という列が、1回のトライアル(1回の学習)の状態を示し、「COMPLETE」の場合は正常にトライアル(学習)が終了したという意味になります。

トライアルを編集したい場合は、この画面で、編集したいトライアルの行の、編集したい列(例えば、state)を選択し、右上のテキストボックスに表示された値を変更し、「適用」を押します(この時点ではデータベースファイルに反映されてないので注意!)。

変更内容を確認して、問題がなければ、「変更を書き込み」をクリックすると、データベースファイルに反映されます。

Google Colaboratoryでストレージのデータベースファイルを扱う

Google Colaboratoryで、直接データベースファイルを扱う方法について説明します。

通常は、DB4SのGUIを使った方が楽ですが、ipynbファイルの一連の実行の途中に、データベースを扱いたいときなどに便利だと思います。

次からJupySQLというライブラリを使いますが、同じようなツールとして、「ipython-sql」というライブラリがあります。

こちらは古いツールで、不具合が多い(テーブル一覧を参照できないなど)ので、ここでは、JupySQLを使っていきます。

JupySQLのインストール

!pip install jupysql duckdb-engine

JupySQLでストレージ(データベース)の内容を確認する

データベース(optuna.db)に接続します。

%load_ext sql
%sql sqlite:///optuna.db

実行結果

Deploy Dash apps for free on Ploomber Cloud! Learn more: https://ploomber.io/s/signup
Connecting to 'sqlite:///optuna.db'

次に、optuna.dbのテーブルを確認します。

%config SqlMagic.displaylimit = 30
%sql select name from sqlite_master where type='table';

実行結果

Running query in 'sqlite:///optuna.db'
name
studies
version_info
study_directions
study_user_attributes
study_system_attributes
trials
trial_user_attributes
trial_system_attributes
trial_params
trial_values
trial_intermediate_values
trial_heartbeats
alembic_version

DB4Sで確認したのと同様に、13個のテーブルが確認できました。

%sqlをつけて、SQL文を実行すれば、DB4Sと同様の操作が可能です。

今回は以上です!