wandb
Weights & Biases は、機械学習関連のあれこれを管理・可視化してくれるサービス。
機械学習は試行錯誤の過程で様々なデータセット・パラメータを検討するため、上手く管理しないと「これはどの設定でやったやつだっけ」がわからなくなる。
それを保存して、学習の進み具合や結果の精度もいい感じに可視化してくれるサービス。
Pythonスクリプト内からそのサービスを利用するためのAPI的なライブラリが wandb となる。
トラブルメモ
仮想環境内でのエージェントの実行
wandb はモジュールだが、直接ターミナルからコマンドで 'wandb sweep …
' のように実行することもできる。
pip や jupyter と似た感じ。
wandbを使ってハイパーパラメータチューニングを行いたい!となった時、ターミナルから
> wandb sweep {設定ファイル.yaml} (設定ファイルが読まれ、sweep_id が発行される) > wandb agent {sweep_id}
とすると、チューニングが開始される。(スクリプト内に設定を書いて、.py を実行するという形での実行ももちろんできる)
agentからは、逐次、学習を行うプロセスが立ち上げられるのだが、この際、venvなどの仮想環境を使っていると、
ターミナル上で 'wandb
' コマンドを実行する時にはその環境が使われていても、立ち上げられるプロセスはグローバルなものが使用されてしまう。
設定ファイル.yaml内に「command」というセクションを追加することで対策できる。
グローバルから仮想環境のPythonを使用するコマンド(poetry なら 'poetry run python
' など)を指定することで、
そのコマンドによって新規プロセスが立ち上げられるので、無事、仮想環境が使えるようになる。
- 設定ファイル.yaml
parameters: learning_rate: ... (略) command: - poetry - run - python - ${program} - ${args} ※poetryの仮想環境の例
まぁ、ちゃんと読めば上記のドキュメントに書いてあるんだけどね。なかなか、その記述がこの問題に対応していると気付きにくい。