optuna.storages.journal.JournalFileBackend

class optuna.storages.journal.JournalFileBackend(file_path, lock_obj=None)[source]

Journal ログのファイルストレージクラス。

SQLite3と比較して、このバックエンドの利点は、ファイルシステムが fcntl() ファイルロックをサポートしていない環境により適していることです。 例えば、 SQLite3 FAQ に記載されているように、 SQLite3は多くのNFS実装で fcntl() ファイルロックが機能しないため、NFS(Network File System)では動作しない可能性があります。このような場合、このバックエンドはファイルロックのためのいくつかの回避策を提供します。詳細については、 Mediumブログ投稿 を参照してください。

SQLite3と同様に、このクラスも SQLAlchemyドキュメント で説明されているように、高い書き込み同時実行性をサポートしていないことに注意が必要です。ただし、目的関数が計算コストが高い場合、Optunaユーザーはこの制限を気にする必要はありません。なぜなら、目的関数が report()set_user_attr() を過度に呼び出さない限り、書き込み操作がボトルネックにならないからです。

Parameters:
  • file_path (str) – ログを永続化するファイルのパス。

  • lock_obj (BaseJournalFileLock | None) – プロセス排他制御のためのロックオブジェクト。 JournalFileSymlinkLockJournalFileOpenLock のインスタンスを渡すことができます。

メソッド

append_logs(logs)

Append logs to the backend.

read_logs(log_number_from)

Read logs with a log number greater than or equal to log_number_from.

append_logs(logs)[source]

バックエンドにログを追加します。

Parameters:

logs (list[dict[str, Any]]) – jsonシリアライズ可能なログを含むリスト。

Return type:

None

read_logs(log_number_from)[source]

log_number_from 以上のログ番号のログを読み取ります。

log_number_from が0の場合、すべてのログを読み取ります。

Parameters:

log_number_from (int) – 読み込むログを示す非負の整数値。

Returns:

log_number_from 以上のログ番号のログ。

Return type:

list[dict[str, Any]]