# Hugging FaceでのStable-Baselines3の使用方法

`stable-baselines3` は、PyTorch による強化学習アルゴリズムの信頼性の高い実装のセットです。

## HubにおけるStable-Baselines3の探索

[モデルページ](https://huggingface.co/models?library=stable-baselines3)の左側でフィルタリングを行うことで、Stable-Baselines3のモデルを見つけることができます。

Hub上のすべてのモデルには、便利な機能が備わっています:
1. 説明、トレーニング設定などを含む、自動生成されたモデルカード。
2. 検索可能性を高めるためのメタデータタグ。
3. 他のモデルと比較するための評価結果。
4. エージェントの動作を視聴できる動画ウィジェットです。

## ライブラリをインストール

`stable-baselines3`ライブラリをインストールするには、2つのパッケージをインストールする必要があります:
- `stable-baselines3`: Stable-Baselines3 ライブラリ。
- `huggingface-sb3`: HubからStable-baselines3モデルを読み込み、アップロードするための追加コード。

```
pip install stable-baselines3
pip install huggingface-sb3
```

## 既存のモデルを使用する
`load_from_hub`関数を使用して、Hubからモデルをダウンロードするだけです。

```
checkpoint = load_from_hub(
    repo_id="sb3/demo-hf-CartPole-v1",
    filename="ppo-CartPole-v1.zip",
)
```

2つのパラメータを定義する必要があります:
- `--repo-id`: ダウンロードしたい Hugging Face リポジトリの名前。
- `--filename`: ダウンロードしたいファイル。

## モデルの共有
2つの異なる関数を使用して、モデルを簡単にアップロードできます。

1. `package_to_hub()`: モデルを保存し、評価を行い、モデルカードを生成し、エージェントのリプレイ動画を記録してから、完全なリポジトリを Hub にプッシュします。

```
package_to_hub(model=model, 
               model_name="ppo-LunarLander-v2",
               model_architecture="PPO",
               env_id=env_id,
               eval_env=eval_env,
               repo_id="ThomasSimonini/ppo-LunarLander-v2",
               commit_message="Test commit")
```

7つのパラメータを定義する必要があります:
- `--model`: 学習済みモデル。
- `--model_architecture`: モデルのアーキテクチャ名（DQN、PPO、A2C、SAC など）。
- `--env_id`: 環境の名前。
- `--eval_env`: エージェントの評価に使用される環境。
- `--repo-id`: 作成または更新したい Hugging Face リポジトリの名前です。`<your huggingface username>/<the repo name>` の形式になります。
- `--commit-message`.
- `--filename`: Hubにプッシュしたいファイル。

2. `push_to_hub()`: ファイルを Hub にプッシュするだけです

```
push_to_hub(
    repo_id="ThomasSimonini/ppo-LunarLander-v2",
    filename="ppo-LunarLander-v2.zip",
    commit_message="Added LunarLander-v2 model trained with PPO",
)
```
3つのパラメータを定義する必要があります:
- `--repo-id`: 作成または更新したい Hugging Face リポジトリの名前です。`<your huggingface username>/<the repo name>` の形式になります。
- `--filename`: Hubにプッシュしたいファイル。
- `--commit-message`.

## 追加のリソース

* Hugging Face Stable-Baselines3 [ドキュメント](https://github.com/huggingface/huggingface_sb3#hugging-face--x-stable-baselines3-v20)
* Stable-Baselines3 [ドキュメント](https://stable-baselines3.readthedocs.io/en/master/)

