LLMをRLで鍛えようとすると、最初にぶつかる壁が「RL環境の作り方がどこにも統一されていない」問題です。

2026年4月29日、Hugging Faceのエンジニア Adithya S K が、LLM強化学習向けRL環境の作り方をまとめたガイド「RL Environments 101」を公開しました。OpenEnv・ORS・NeMo Gym・Verifiers・SkyRL Gym・GEM の6フレームワークを、まったく同じ環境で実装して横並びで比較した構成です。

この記事でわかること:

  • LLM時代のRL環境で定義が乱立している背景
  • 6フレームワークの設計上の違いと選び方
  • 3種のリファレンス環境(Jupyter・Wordle・デスクトップ)の概要
  • フレームワークを選ぶ4つの意思決定軸

https://github.com/adithya-s-k/RL_Envs_101

RL環境の定義がLLM時代で崩れている

従来の強化学習では、RL環境といえばOpenAI Gym(現Gymnasium)スタイルの reset()/step() が事実上の標準でした。しかしLLMの台頭とともに、RL環境の意味が大きく変わりました。

「Jupyterでコードを書いて実行するLLMエージェント」「Wordleを解くLLM」「Linuxデスクトップを操作するLLM」——これらはすべてRL環境として成立しますが、必要な仕組みはまったく異なります。状態管理、ツール呼び出し、報酬の計算タイミング、デプロイ方式が6フレームワークそれぞれで異なる設計になっています。

RL Environments 101は、この混乱を整理するために作られました。同じ3種の環境を6フレームワーク全てで実装し、「同じことをどう書くか」を横並びで見せることで、どのフレームワークが自分のユースケースに合うかを判断できるようになっています。

6つのフレームワークと設計上の違い

フレームワーク 方式 報酬モデル 向いている用途
OpenEnv(Meta) HTTP/MCP 外部計算 長期サンドボックス・MCP連携
ORS HTTP/REST+SSE ツール呼び出しごと ステップ報酬・OpenReward市場
NeMo Gym(NVIDIA) HTTP/REST エピソード後に/verify NVIDIA Ray分散スタック
Verifiers インプロセス Rubricシステム 高速プロトタイプ
SkyRL Gym インプロセス step()が返す Gym形式・SkyRL学習スタック
GEM インプロセス step()が返す Gymnasium互換・純Pythonゲーム

大きな分類は「HTTPサーバー型」か「インプロセス型」かの2択です。

HTTPサーバー型(OpenEnv・ORS・NeMo Gym)は外部サンドボックスや大規模並列ロールアウトに向いています。インプロセス型(Verifiers・SkyRL Gym・GEM)はセットアップが速く、プロトタイプに向きます。

3つのリファレンス環境

RL Environments 101では、3種類の環境が6フレームワーク全てで実装されています。フレームワークを切り替えたとき何が変わり何が変わらないかを「同じ問題に対する6つの答え」として見ることができます。

Jupyterエージェントは、E2Bサンドボックス内でPythonを書いて実行するマルチターンエージェントです。コード実行・シェルコマンド・ノートブック状態取得など4つのツールを持ちます。外部バックエンドへの依存があり、セッション管理の複雑さを学ぶのに最適です。

Wordleソルバーは、5文字の単語を推測してフィードバックを受け取る純粋なPythonゲームです。外部サービスへの依存がなく、6フレームワークの実装差を「ノイズなし」で比較できます。guess(word) という1つのツールだけで成立するシンプルさが、環境設計の基礎を学ぶのに役立ちます。

デスクトップコンピュータ使用は、LinuxデスクトップのスクリーンショットをVision入力として受け取り、マウス・キーボードを操作するエージェントです。19種のツールはAnthropicの computer_20251124 スキーマに対応しており、Qwen3-VLやOpenAI computer-use-preview の出力をそのまま接続できます。現時点ではOpenEnvとORSの2実装のみです。

フレームワーク選びに使う4つの判断軸

RL Environments 101が示すフレームワーク選定の考え方は、「コードを書く前に4つのことを決める」というものです。

① インプロセスかHTTPサーバーか — 純PythonのロジックならインプロセスのVerifiersかSkyRL Gymが最速です。外部サンドボックスや大量の並列ロールアウトが必要ならHTTP型を選びます。迷ったらまずインプロセスで始め、限界が来たらHTTPに移行するのが定石です。

② シングルターンかマルチターンか — シングルターンにできるならそうすべきです。マルチターンはセッション管理・状態の永続化・終了条件の設計が一気に複雑になります。

③ 報酬はいつ計算するか — ツール呼び出しごとに報酬を出せるならORS、エピソード全体を見てから決めるなら外部計算型(OpenEnv・Verifiers・SkyRL)が合います。判断がつかなければ外部計算型から始めると柔軟に対応できます。

④ ツールはステートレスかステートフルか — コードを実行するツールのように状態を持つ場合、セッションIDやサンドボックスのライフタイム管理が必要になります。この設計コストを事前に見積もることが重要です。

環境設計でよくある失敗

報酬が疎すぎると、全ロールアウトが0.0を返してGRPOの学習シグナルがゼロになります。逆に報酬が密すぎると、モデルが抜け穴を学習します。

セッション管理が甘く、複数のロールアウトが同じ状態を共有するとエピソード間で汚染が起きます。最大ターン数の上限がないと、バグったモデルが無限ループして学習が止まります。観測フォーマットが巨大なJSONダンプやスタックトレースになっているとモデルがパースできず、学習が進まないこともあります。

ガイドでは「5本のトレジェクトリを手で読む」ことを強く推奨しています。1000ステップ学習するより、5本のトレジェクトリを目視確認する方が問題を見つけやすいという考え方です。RL環境設計の大半のミスは、この確認で発見できます。

GRPOTrainerとの接続

https://github.com/adithya-s-k/RL_Envs_101

各フレームワークフォルダには動作確認済みの rollout.py が含まれており、TRLの GRPOTrainer への接続方法もREADMEに記載されています。HTTPフレームワーク(OpenEnv・ORS・NeMo Gym)はHugging Face Spacesにデプロイ済みの環境が用意されており、クローンしてすぐロールアウトを試せます。

モデルはQwen3-Coder-480BをHF Inference Provider経由で使う構成が標準ですが、ROLLOUT_MODEL 環境変数でOpenAIのモデルも接続できます。まずVerifiersでプロトタイプを作り、本番はOpenEnvまたはORSに移行するという流れが推奨されています。