Stable Baselines3 (SB3) は、PyTorch をベースに実装した、信頼性の高い強化学習アルゴリズム(PPO, DQN, SAC 等)のオープンソースライブラリです。OpenAI Baselines の改良版で、統一された API により、数行のコードで環境の学習・評価・保存が容易に行えるため、研究やプロトタイピングの効率を大幅に向上できます。
強化学習モデルの学習中に、エピソード毎に解析したい情報を引き出す方法について Microsoft Copilot(以降、単に Copilot)に相談していたところ TensorBoard で可視化する話がでたので、突っ込んで聞いてみました。TensorBoard はその名前から TensorFlow の専用ツールだと勝手に思っていたのですが、全くの誤解でした。
「知らない」っていうのは怖いですね。TensorBoard を利用することで RL(強化学習)モデルの学習時の内部状態を(ほぼ)リアルタイムで確認できるようになりました。
TensorBoard について
Copilot が TensorBoard について下記のようにまとめてくれました。
- 学習中の指標(episode reward, loss など)をグラフでリアルタイム可視化するツール
- ブラウザで http://localhost:6006 を開いて眺めるスタイル
- TensorBoard は TensorFlow 専用ではない
- ログファイルを読み取るだけの汎用可視化サーバー
- SB3 は標準で TensorBoard 出力に対応している
- RL の “見えない内部状態” を可視化する最強ツール
TensorBoard の基本的な使い方
備忘録として、以前とりあげた倒立振子問題 (CartPole) [3] の学習を TensorBoard で可視化します。
動作環境は、パッケージのバージョンが更新されていることを除けば、倒立振子問題 (CartPole) の記事 [3] と同じですが、さらに TensorBoard をインストールします。
$ pip install tensorboard
TensorBoard を利用するには、モデル生成時、tensorboard_log に TensorBoard 用ログの出力ディレクトリ(存在していなくとも良い)を指定します。
model = PPO(
"MlpPolicy",
env,
verbose=1,
tensorboard_log="./ppo_cartpole_tensorboard/",
)
編集したプログラム cartpole_rl.py を起動して学習を始めた後に、別ターミナルで TensorBoard を起動します。その際に --logdir に、モデル生成時に指定したログの出力ディレクトリを指定します。
$ tensorboard --logdir ./ppo_cartpole_tensorboard/
ブラウザで http://localhost:6006 を開きます。
他の PC からアクセスする場合
LAN 内の他の PC のブラウザからアクセスをしたい場合は、TensorBoard のポート番号がファイアウォールを通るようにしておきます。
$ sudo firewall-cmd --add-port=6006/tcp --permanent $ sudo firewall-cmd --reload
TensorBoard を起動する時に外部からアクセスできるように --bind_all を付けます。
$ tensorboard --logdir ./ppo_cartpole_tensorboard/ --bind_all
実行例
TensorBoard 用のログを出力できるようにしたプログラム cartpole_rl.py を起動します。
$ python cartpole_rl.py
Using cpu device
Wrapping the env in a DummyVecEnv.
Logging to ./ppo_cartpole_tensorboard/PPO_1
---------------------------------
| rollout/ | |
| ep_len_mean | 20.3 |
| ep_rew_mean | 20.3 |
| time/ | |
| fps | 46 |
| iterations | 1 |
| time_elapsed | 44 |
| total_timesteps | 2048 |
---------------------------------
-----------------------------------------
| rollout/ | |
| ep_len_mean | 26.4 |
| ep_rew_mean | 26.4 |
| time/ | |
| fps | 46 |
| iterations | 2 |
| time_elapsed | 88 |
| total_timesteps | 4096 |
| train/ | |
| approx_kl | 0.008908875 |
| clip_fraction | 0.0802 |
| clip_range | 0.2 |
| entropy_loss | -0.686 |
| explained_variance | 0.000353 |
| learning_rate | 0.0003 |
| loss | 6.18 |
| n_updates | 10 |
| policy_gradient_loss | -0.0121 |
| value_loss | 45.3 |
-----------------------------------------
...
(以降省略)
別ターミナルで TensorBoard の起動します。
$ tensorboard --logdir ./ppo_cartpole_tensorboard/
Firefox を起動して http://localhost:6006 にアクセスします。
参考サイト
- Tensorboard Integration — Stable Baselines3 documentation
- tensorflow/tensorboard: TensorFlow's Visualization Toolkit
- bitWalk's: 倒立振子問題 (CartPole) [2025-10-03]
にほんブログ村
#オープンソース


