FioneのPython刷新案でCSVから予測APIまでの流れを確認する

FioneをPythonで書き直すPRが公開されています。CSVをアップロードし、自動でモデルを作って予測するという流れを引き継ぎながら、Fessプラグインから単独のAutoMLサーバーへ変える案です。

FessとH2Oを用意する構成から変わる

今回の修正ではFastAPIを使うWebアプリケーションと、LightGBM・XGBoost・CatBoost・ExtraTreesをOptunaで調整する独自のAutoMLエンジンを組み合わせます。メタデータはSQLite、データセットとモデルはローカルファイルまたはS3互換ストレージへ保存します。付属のCompose構成ではSeaweedFSを使い、Fess・H2O・MinIOへの依存を外します。

EasyMLでは「プロジェクト作成 → CSVアップロード → 予測する列と最大実行時間の指定 → 学習 → 予測結果サマリー → 新しいCSVの予測」という流れです。詳細表示にはリーダーボードやモデルのエクスポートがあり、REST APIは/api/v1に置かれます。

試す場合はPRのコードを取得する

DockerとCompose v2、Git、OpenSSLを用意します。正式版の手順と混同しないよう、PR #13を専用の作業コピーへ取得します。

git clone https://github.com/codelibs/fione.git fione-v2-review
cd fione-v2-review
git fetch origin pull/13/head
git switch --detach FETCH_HEAD
openssl rand -hex 16
openssl rand -hex 32

最後の2つの出力を、それぞれdocker/.envの次の項目へ設定します。実際の値をGitへ登録しないようにしてください。

FIONE_S3_ACCESS_KEY=生成した16バイトの16進数
FIONE_S3_SECRET_KEY=生成した32バイトの16進数
docker compose -f docker/compose.yaml --env-file docker/.env up -d --build --wait
docker compose -f docker/compose.yaml --env-file docker/.env logs fione

ComposeのWebポートは初期値で127.0.0.1:8080です。ログのSetup tokenを使い、ブラウザーで最初の管理者を作成します。既定の管理者パスワードはありません。ビルドキャッシュなどに約6GBのディスク容量と、別途データ用の容量が必要です。

初期値と運用上の制限

学習ジョブの同時実行数FIONE_MAX_CONCURRENT_TRAIN_JOBSは1、CSVアップロード上限FIONE_MAX_UPLOAD_BYTESは1GiBです。アプリケーションは1プロセス・1ワーカーで動かす前提で、コンテナを複数へ増やす構成にはできません。データ全体をメモリに読み込むため、ファイルサイズだけで利用可能な規模は決まりません。

学習したモデルはFione Servingで予測APIにできますが、モデルとイメージのタグをそろえる必要があります。予測API自体には認証がないため、ローカルで試すポート指定は-p 127.0.0.1:8081:8080とし、外部利用では認証を持つプロキシなどを別途用意します。公開済みイメージの利用を前提にせず、PRのコードからビルドしてください。

v1のH2Oモデル、データ、ユーザーは自動移行されません。CSVを再アップロードし、学習とユーザー作成をやり直します。独自Pythonモジュールも新しいAPIへ書き直しが必要で、アップロードしたモジュールはサンドボックスなしで動きます。

PR #14の説明可能性と、PR #15のSDK・Notebook連携は計画文書です。現段階で利用できる機能として扱わないでください。試用結果の評価には、学習に使わないテストデータも用意しておくとよいと思います。

関連PR

まだまだ、作業中ではありますが、使いやすいものにできれば良いなと考えて進めています。

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です