#W&Bとは
W&B
tensor boardのweb版です。
違いは、オンラインのページで確認できるほか、昔の実験結果などを保管しておくこともできます。
機械学習のログの記録や結果をみるのに便利なサイトです。
以下のページを参考に記事をかきます。
wandb Quickstart
#セットアップ
pipを使って、wandbのライブラリをインストールします。
pip install wandb
webのアプリなので会員登録が必要です。容量に制限はありますが、学生やアカデミック用途では無料です。
以下のページから登録できます。githubのアカウントでできるので、自分はすぐできてしまいました。
次に使用する環境のターミナルで
wandb login
とすると、以下のページがでてきます。
wandb: You can find your API key in your browser here: https://app.wandb.ai/authorize
wandb: Paste an API key from your profile and hit enter:
https://app.wandb.ai/authorizeのページにアカウントを登録したPCからアクセスすると
40桁くらいのAPIkeyがあるので、これをコピーして上のenter:のところに貼り付けます。
これでサーバーなどとwebのアカウントが紐付けされます。
#コードの書き換え
まず冒頭に以下のコードを足します。
# Inside my model training code
import wandb
wandb.init(project="my-project")
プロジェクト名ごとで結果をまとめておくことができます。
保存したい引数がある場合はconfigメソッドで保存できます。
wandb.config.dropout = 0.2
wandb.config.hidden_layer_size = 128
次に訓練データ内で記録用のコードをいれます。
def my_train_loop():
for epoch in range(10):
loss = 0 # change as appropriate :)
wandb.log({'epoch': epoch, 'loss': loss})
通常ならprint(loss)を行う部分にwandb.log({dict})をいれます。
dictで渡した引数の分だけグラフが作成されます。
末尾に以下のコードをいれると、学習ログを保存することができます。
wandb.save("mymodel.h5")
#動かしてみる
import wandb
wandb.init(project="test-project")
lr = 0.1
wandb.config.lr = lr
def my_train_loop():
loss = 10
for epoch in range(10):
loss = loss * lr # change as appropriate :)
wandb.log({'epoch': epoch, 'loss': loss})
wandb.save("mymodel.h5")
def main():
my_train_loop()
if __name__ == "__main__":
main()
上記のコードを実行し、
W&Bのページにアクセするすると、
このようなlossの推移が得られます。
なぜepochがあるかというと、基本的には横軸はstep数となります。
そのため、グラフを作成する際に横軸としてepochを記録しておくことで、
このようにepoch vs lossなどのグラフを作ることができます。
configに追加したlrも記録されるため、再現する際にも役に立ちます。
#簡単です。
実は触って2日目なのですが、追加するコードは少なく、グラフを出すのもさくっとでてきます。
また、webに記録することで様々なサーバーでの結果を1つに集めて保管できます。
ぜひ触ってみてください!