1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Kaggle with Wandb入門した

Last updated at Posted at 2024-01-09

black_cat_cartoon.jpg

背景

実験管理をマニュアルで行ってきましたが、効率化欲が高まったためWandbの利用を試みることにしました

概要

今回はKaggle notebookからの利用を試します
利用ケースは”GBDTのハイパラとCV記録を行いたい”とします。
具体的にはCatboostのハイパラとCV記録を取っていきます。
(LightGBMはwandb_callbackが準備されていることが分かりいろいろ出来そうなのでやるとしたら次回)

前提

  • Kaggleへの登録/Kaggle notebookが利用できる
  • wandBへの登録/APIキーの取得

作業

wandBのインスタンス化/ハイパラ記録

import wandb

params = {
    'loss_function': 'RMSE',
    'eval_metric': 'RMSE',
    'iterations': 1,
    'learning_rate': 0.1,
    'random_seed': 0,
    "early_stopping_rounds": 200,
    "max_depth": 10,
    "subsample": 0.9,
} 

#wandb初期化
run = wandb.init(config = params, project="wandb_test", name="wandb_test_run")

configにparamsを辞書型で入れることでハイパラの記録が可能
projectは管理する箱の名前
nameはprojectの中で管理する実験名 こちらは実験するたびに名称変更することになる部分

実行するとAPIキーを求められるため、あらかじめ取得したAPIキーを入力する
image.png

cvごとの結果を記録するテーブル作成

cv_table = wandb.Table(columns=['Fold_%d'%d for d in range(5)])

cvごとの結果を記録するためのテーブルを作成
columnsにはテーブルの列をリスト型で定義 今回はn_splits=5を想定

実験結果を記録

# scoresはcvごとの結果が入っているリスト型
# 例: [0.7, 0.2, 0.3, 0.4, 0.5]
cv_table.add_data(*scores)

run.log(
    {        
        "cv_table": cv_table
    }
)

run.log({f"oof_score_mean: ": np.mean(scores)})
run.log({f"oof_score_std: ": np.std(scores)})

学習後に取得されたscoresをあらかじめ作成したcv_tableにadd_dataメソッドを使って記録
add_dataのにはcv_tableで作成した列の数だけ引数を与える必要があるため、*scoresとしてリストを分解して与えている

記録の終了

run.finish()

finishメソッドで実験記録の終了

記録の結果

image.png

WandBサイトにアクセスしてログインしてみると、定義したprojectが作成されていて、Runsにnameで指定した実験名で記録がされました

マニュアルで実験管理を行なってた際は面倒でCV毎の記録は取ってなかったですが、これであれば簡単に記録ができて全CVで改善がされているかの確認もできることになるので嬉しい

まとめ

実験管理を効率化するためにWandB入門をしました。
ディープ系についてよく使われているのは見ていたのですがGBDT系でも使えることがわかり有益でした。
まだまだスイープやアーティファクトなどまだまだ機能が盛り沢山そうなので色々試してみようと思います。

参考文献

5行でカッコいい可視化を「WandB」入門 - Qiita
Quickstart | Weights & Biases Documentation
Starter_Notebook with WandB

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?