> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coreweave.com/llms.txt
> Use this file to discover all available pages before exploring further.

# VERL

> Weave で VERL のロールアウトをトレースし、RL ファインチューニング中のマルチターン会話、ツール呼び出し、報酬スコアリングを検査します。

[VERL](https://github.com/volcengine/verl) (Volcano Engine Reinforcement Learning) は、LLM 向けのオープンソース RL ポストトレーニングフレームワークです。VERL には組み込みの Weave トレースバックエンドが搭載されており、W\&B がすでに記録しているトレーニングメトリクスと並行して、LLM 生成とツール呼び出しをトレースできます。

Weave を VERL とともに使用すると、以下のことが可能になります。

* 各ロールアウト軌跡を、プロンプト、モデル応答、ツール呼び出しを含めてステップごとに検査します。
* ステップ、サンプルインデックス、ロールアウト番号、実験名で軌跡をフィルターします。
* 複数の軌跡を並べて比較し、トレーニングステップ全体でのエージェント動作をデバッグします。

<h2 id="prerequisites">
  前提条件
</h2>

* CoreWeave Forge アカウントと [APIキー](/ja/products/wandb/platform/app/settings-page/user-settings#api-keys)。
* ロールアウト トレースをサポートする VERL インストール。ロールアウト トレースは [verl#2345](https://github.com/volcengine/verl/pull/2345) で追加されました。
* 非同期ロールアウト設定。トレースは非同期ロールアウトにのみ適用され、同期ロールアウトはトレースされません。

<h2 id="enable-weave-tracing">
  Weave トレースを有効にする
</h2>

VERL が CoreWeave Forge アカウントで認証できるように、環境に APIキーを設定します：

```bash theme={"system"}
export WANDB_API_KEY=[YOUR-WANDB-API-KEY]
```

次に、VERL のトレーニングコマンドに以下のフラグを追加してください：

* `actor_rollout_ref.rollout.trace.backend=weave`: Weave をトレースバックエンドとして選択します。
* `actor_rollout_ref.rollout.mode=async`: vLLM または SGLang の非同期ロールアウトを有効にします。同期ロールアウトにはトレースの効果はありません。
* `trainer.project_name`: トレースとメトリクスをログする project を設定します。
* `trainer.experiment_name`: 実験の名を設定します。
* `trainer.logger=['console','wandb']`: Weave と並行して wandb ロガーを有効にし、メトリクスとトレースが同じ project に表示されるようにします。

結果のコマンドは次のようになります：

```bash theme={"system"}
python -m verl.trainer.main_ppo \
  actor_rollout_ref.rollout.trace.backend=weave \
  actor_rollout_ref.rollout.mode=async \
  trainer.project_name=[YOUR-PROJECT-NAME] \
  trainer.experiment_name=[YOUR-EXPERIMENT-NAME] \
  trainer.logger=['console','wandb'] \
  # ... その他のトレーニングフラグ
```

Weave は Weights & Biases の project と実験名から自動的に初期化されます。`weave.init()` を呼び出す必要はありません。

<h2 id="tune-trace-volume">
  トレース量を調整する
</h2>

デフォルトでは、VERL はすべてのロールアウトのすべてのサンプルをトレースするため、非常に大量のトレースデータが生成される場合があります。`ppo_trainer.yaml` 設定ファイルで以下のフィールドを設定することで、トレース量を制限できます。

* `max_samples_per_step_per_worker`: トレーニングステップごとにワーカーがトレースする一意のサンプル数。すべてのサンプルをトレースする場合のデフォルトは `null` です。
* `token2text`: `True` に設定すると、デコードされた `prompt_text` と `response_text` を `ToolAgentLoop.run` の出力に追加します。パフォーマンスのためのデフォルトは `False` です。Weights & Biases UI で直接プロンプトと完了を確認したい場合に有効にしてください。

結果のフィールドはファイル内で次のようになります。

```yaml theme={"system"}
actor_rollout_ref:
  rollout:
    trace:
      backend: weave
      token2text: False
      max_samples_per_step_per_worker: 5
```

<h2 id="view-traces">
  トレースを表示
</h2>

トレーニング中に発行されたトレースを表示するには、Weights & Biases の project ページを開き、**トレース** を選択します。各トレースはロールアウトの軌跡に対応します。

複数のトレースを選択し、Weave の Comparison ビューを使用して軌跡間の差異を確認できます。これにより、トレーニングステップや実験全体でのエージェントの動作の変化をデバッグするのに役立ちます。

<h2 id="trace-additional-functions">
  追加の関数をトレースする
</h2>

VERL はデフォルトのトレースカバレッジを拡張するための2つのヘルパーを公開しています：

* `rollout_trace_op`: `weave.op` にマッピングされるデコレーターで、クラスインスタンス上のメソッドをトレース対象としてマークします。デフォルトでは少数のメソッドのみが装飾されています。カスタムエージェントループやツール実装のメソッドにこのデコレーターを追加して、より詳細な情報を取得できます。
* `rollout_trace_attr`: 軌跡のエントリをマークし、軌跡のメタデータ (サンプルインデックス、ステップ、ロールアウト番号、実験名) をアタッチするコンテキストマネージャーです。新しいエージェントタイプを導入する場合、その軌跡エントリポイントを `rollout_trace_attr` でラップして、トレースが run に関連付けられるようにしてください。

詳細な設定情報については、[VERL の ロールアウト トレース ドキュメント](https://verl.readthedocs.io/en/latest/advance/rollout_trace.html) を参照してください。


## Related topics

- [Run veRL on SUNK](/products/sunk/tutorials/verl-on-sunk.md)
