エージェント間相互作用中のトークンIDの記録による強化学習の改善
Amazon Science は、強化学習におけるトークンレベルの記録不整合問題を解決する「Turnstile」というツールを公開し、エージェントの学習精度向上に成功したと発表した。
キーポイント
トークンIDの不整合がRL学習を阻害する問題
同じテキストでもフォーマットやトークナイザーの違いによりトークンIDが変わる「再トークナイズドリフト」が発生し、モデルが実際に経験した履歴とトレーニングデータが一致しないことで最適化が失敗する課題を指摘。
生成直後の正確な記録を保証するTurnstileの登場
Rustで書かれたプロキシツール「Turnstile」により、エージェントハネスとモデルバックエンドの間に設置し、生成された瞬間の厳密なトークン履歴を記録・エクスポートする仕組みを提供。
実証実験での学習効果の確認
コード生成専用エージェントとマルチモーダルコンピューター使用エージェントの両方で、ハネスを変更せずTurnstile経由でデータを流すことで、強化学習による性能向上が確認された。
影響分析・編集コメントを表示
影響分析
この発表は、大規模言語モデルのエージェント化と強化学習の現場において、長年のデータ不整合という根本的な課題に対する具体的な解決策を示した点で重要です。特に、複雑なフォーマットやツール呼び出しにおける「見かけ上の同一性」と「内部表現の違い」を解消することで、より安定かつ効率的な学習ループの実現が可能となり、産業レベルでのエージェント開発の品質向上に寄与します。
編集コメント
強化学習の実装において、データの前処理や記録の厳密さが学習成果に直結することを浮き彫りにした重要な技術的知見です。開発現場では「テキストが同じなら同じ」と考えがちですが、内部表現のズレが学習を阻害するケースへの対策として非常に参考になります。
強化学習(RL)は、コードの記述やウェブサイトのナビゲーション、研究ワークフローの実行など、持続的で多段階的なタスクにおいて言語モデルをより良くするための手法の一つです。そのような環境ではモデルが単独で行動するのではなく、ツールを呼び出し、その使用結果を観察し、次に何をすべきかを決定できるようにする「ハネス」と呼ばれるソフトウェアに囲まれています。このモデルを RL で改善するためには、ハネス内で多くのタスクを試行させ、各試行の成果をスコアリングし、そのスコアを用いてモデルのパラメータを成功した選択へと誘導します。しかし、実際には難しいのは記録管理です。スコア付きの試行をパラメータ更新に変換するためには、トレーナーがモデルが生成した内容の正確な記録が必要です。要約でもなく、完全なやり取りを捉えているように見えても重要な情報を欠落しているような転記稿でもありません。内部では、モデルはテキストをトークンと呼ばれる番号付きユニットのシーケンスとして認識します。英語の文には 10〜20 のトークンが含まれることがあり、それぞれが「トークナイザー」と呼ばれるソフトウェアによって整数 ID に割り当てられます。転記稿上で同じように見える二つの文字列でも、書式を少し変更するだけで異なるトークン ID にマッピングされる可能性があります。このギャップはどれほど小さくても、トレーナーがモデルが実際に経験した過去とはわずかに異なる過去のデータに対して最適化を行ってしまう原因となります。
本日、私たちは Rust プログラミング言語で記述された小さなプロキシ「Turnstile」をリリースします。これはあらゆるエージェントハネスとモデルを実行するバックエンドシステムの間に位置し、リクエストが発生するたびに正確なトークンレベルの履歴を記録します。その履歴が曖昧さなく正しいのは、生成が行われた瞬間だけです。その後、既存の RL 学習スタックに供給できる汎用的でフレームワークに依存しない軌跡(トラジェクトリ)をエクスポートします。私たちは Turnstile を用いて実際の RL 学習実行を駆動しています。ここで報告する検証では、テキストのみを対象としたコーディングエージェントと、マルチモーダルなコンピュータ操作エージェントという二つの異なるエージェントが、RL 実行の過程で着実に改善しました。どちらの場合もエージェントハネスは変更されず、Turnstile が記録したデータは学習スタックに直接流れ込み、エンドツーエンドで期待される学習シグナルを生成しました。
トークン、ロールアウト、そしてなぜエージェントの転記稿が嘘をつくことがあるのか
この投稿の後半で最も重要な役割を果たす三つの用語について、まず基礎知識を確認しておく価値があります。トークナイザーとは、テキストを整数のトークン ID のリストに変換し、逆にトークン ID をテキストに戻す決定論的な関数です。各モデルには特定のトークナイザーがペアになっており、互いに置き換えることはできません。このトークナイザーは容赦がありません。余分なスペース、ツール呼び出しを JSON で記述する別の方法、あるいはチャットテンプレート(サービングシステムがロールとメッセージを単一のテキスト入力にラップしてモデルが読み込めるようにするためのフォーマット文字列)のわずかな違いであっても、人間には同じように見える場合でもトークン ID が変化します。すでに目にしたテキストに対してトークナイザーを再実行することによって生じるこの種の不一致を「リトークナライゼーションドリフト」と呼び、周囲のフォーマットが変化する際に生じるものを「チャットテンプレートドリフト」と呼びます。
ロールアウトとは、タスクに対する一つの記録された試行のことです。プロンプト、すべてのツール呼び出し、ツールのフィードバック、モデルの応答、そして最終的な結果が含まれます。そのロールアウトを生成したモデルのバージョンは「行動方策(behavior policy)」と呼ばれます。方策勾配法に基づく RL の数学がきれいに機能するのは、トレーナーが行動方策が実際に目にしたコンテキストに対してモデルの行動を最適化する場合だけです。プロンプトを再レンダリングしてわずかに異なるトークンシーケンスになってしまった場合、私たちは行動方策にとって見慣れないコンテキストに対してモデルを訓練していることになります。学習シグナルは劣化し、モデルがまだ学習しているように見えるため、時には目に見えない形で起こります。これがエージェントハネスが問題を悪化させるばかりで改善しない理由です。ハネスは静的なプロンプトではなく、単一のロールアウトの間にも、コンテキストを節約するために古いメッセージを圧縮したり、不正なツール呼び出しを再試行したり、サブエージェントに分岐してその結果を統合したり、履歴を要約したりします。これらはすべて正常で有用なエージェントの行動です。しかし、それぞれの書き換えは、次のリクエストのトークンシーケンスが直前のターンでモデルが実際に生成したものとずれてしまう新たな機会となります。ハネスが生み出す転記稿は会話の忠実な記録ではありますが、一般的にはトークンの忠実な記録ではなく、トレーナーが必要とするのはまさにそのトークンです。
プロキシ境界でのトークン捕捉
Turnstile の中心的な設計思想は、ロールアウト終了後にテキストからトークンレベルの状態を再構築しようと試みないことです。状態がすでに正しい生成の瞬間にそれを捕捉し、ハネスを変更することなくそれを行います。このプロキシは、現代のエージェントハネスがすでに使用している同じ HTTP API を通じて通信します。具体的には「OpenAI Chat Completions API」であり、これは「メッセージリストを送信して応答を受け取る」という事実上の標準となっています。ハネスは Turnstile とロールアウトグループを作成し、Chat Completions クライアントの先を本物のバックエンドではなく Turnstile のアドレスに指し示して、変更なしで実行します。裏側では、すべてのリクエストが Turnstile を経由して推論バックエンド(現在は SGLang、vLLM は計画中)へ流れます。Turnstile はモデルがサンプリングした正確なトークン ID、トークンごとの対数確率(各トークンに対するモデル自身の信頼度値を対数で表したもの;トレーナーはこれを用いて更新を計算する必要があります)、および損失マスク(どのトークンをモデルが生成して学習に寄与させるべきか、どのトークンをユーザー、ツール、システムプロンプトから取得したもので学習に寄与させないべきかをマークするもの)を記録します。ロールアウトが完了すると、ハネスは Turnstile に記録された軌跡を要求します。各軌跡は、トークン ID、対数確率、シーケンス全体の損失マスク、およびシーケンスのどのスパンでモデルの重みのどのバージョンがアクティブだったかを記録した「TrainingSequence」オブジェクトです。(トレーナーはこれらの重みバージョンの境界を知ることで、非同期更新によってロールアウト中にモデルパラメータが変更されたかどうかを判断できます。)これをトレーナーが望む特定のバッチ形状に変換するのは、単純なアダプター作業です。報酬を追加し、マスクを展開して引き渡すだけです。
既存のハネスはブラックボックスのままでもよい
OpenHands、Codex、Terminus などのエージェントハネスはいくつかあり、すでに有用ですが、学習実行ランタイムとして設計されたものではありません。Turnstile がなければ、これらを使用して RL 学習実行を駆動するには、トークン ID、対数確率、マスク、ルーティング追跡を記録する必要がありますが、実際にはこの作業は学習システム内部に構築された別のハネス形状のコンポーネントに任されることが多いです。いずれにせよ、ハネスは最終的にトークンレベルの RL データパイプラインとして機能することになり、それは不適切な抽象化です。ハネスはモデルに送信しようとした情報を把握していますが、一般的にはモデルが実際に使用した正確なトークンシーケンス、キャッシュ状態、ルーティング追跡、または処理されたマルチモーダル入力を把握していません。それらはバックエンド内に存在します。Turnstile を用いれば、本番のハネスは学習データをログする必要はありません。Chat Completions クライアントを推論バックエンドではなく Turnstile に指し示すだけで、他は変更なしで実行されます。Turnstile はモデル側のロールアウト状態を記録します。ハネスのプライベートな制御フローやコンテキストが変化した意味的な理由を理解する必要はありません。次のリクエストが以前のものの忠実なトークンレベルでの拡張である場合、Turnstile はそれを同じ軌跡にマージします。もしハネスがメモリを圧縮したり、履歴を書き換えたり、サブエージェントの結果を統合したり、あるいは証明不可能な方法でプレフィックスを変更した場合は、Turnstile は新しいシーケンスを開始し、学習可能なサフィックスの誠実さを保ちます。これらはすべて厳密なブラックボックスケースに適用されます。内部が学習システムから閉じられた proprietary なハネスであっても、ソースレベルでの統合なしで RL 学習実行を駆動できます。以下は、オープンソースのハネスと Turnstile をブラックボックス形式で使用した二つの例です。
マルチターンエージェントとプレフィックス認識型軌跡
これらの記録を保存する素朴な方法は、すべてのリクエストを独立したトレーニング例として扱うことです。これは無駄です。なぜなら、新しいリクエストにはこれまでの会話全体が含まれるため、同じトークン文字列が何度も重複してしまうからです。また、それは微妙に誤りでもあります。ターン間の関係性が失われてしまうからです。代わりに Turnstile は、パスがモデルが実際に目にしたものに忠実である限り、マルチターンのロールアウトを単一の成長するトークンパスとして保存します。モデルに対する後のリクエストが、前のリクエストの末尾に数個の新しいトークン(新しいユーザーメッセージ、ツールの結果、LLM の応答)を追加しただけのものである場合、Turnstile はレンダリングされた文字列を比較するのではなく、以前に捕捉したトークン ID が新しいリクエストの先頭で確かに変更されていないかを確認することで、トークンレベルでの重複を認識します。もしそうであれば、二つのターンは一つの連続した学習可能シーケンスとなり、損失マスクがどのスパンがモデルの出力であったかを正しく識別します。次のリクエストが以前のものから安全に拡張できない場合(ハネスが以前のメッセージを書き換えたか、何らかの原因でトークンがずれたため)、Turnstile はそれを偽りなく扱いません。新しいトレーニングシーケンスを開始します。これを「軌跡の爆発(exploding the trajectory)」と呼びます。楽観的な代替案よりも多くの学習トークンを消費しますが、RL 学習に使用されるすべてのトークン文字列が行動方策が実際に目にしたものであることを保証します。目的はコンパクトさを最大化することではなく、トレーナーに対して何が起きたのかを嘘をつかないことです。
エキスパート混合(MoE)ルーティングによる隠された次元
一部の現代モデルでは、エキスパート混合(MoE)アーキテクチャを使用しており、特定の入力トークンに対してモデルパラメータのごく一部のみが活性化されます。この「専門家」の選択自体も計算の一部であり、各層にある小さなルーターネットワークによって行われます。ルーティング決定は各層での活性化に依存し、以前のトークンの処理方法における微小な違いが、どのエキスパートが選ばれるかを変化させます。これは RL において重要です。たとえ二つのリクエストが同じトークン ID を持っていたとしても、異なる実行でトークンが異なるエキスパートにルーティングされる可能性があるからです。昨秋、北京大学の研究者たちはこの不一致を特徴づけ、トレーナーがそれを再生できるように MoE モデルのルーティング決定を記録することを提案しました。私たちは同じ原則を採用しています。MoE 捕捉が有効になっている場合、Turnstile は推論バックエンドからルーティング追跡を要求し、トークンと一緒に記録します。トークンパスを拡張するたびに、共有プレフィックスに対するルーティングが直前のターンで記録されたものと一致しているかを確認します。もし一致しない場合(例えば、キーバリューキャッシュミスによってバックエンドがプレフィックスを再計算して異なるエキスパートを選んだため)、Turnstile は誤ったルーティングの下で訓練するのではなく軌跡を分割します。
マルチモーダルロールアウト
モデルが画像も入力として受け取る場合(ビジョンランゲージモデル)、ロールアウトには追跡すべきもう一つの状態要素があります。モデルはアップロードされた画像の生バイト列を見るのではなく、画像プロセッサの出力を見ます。これは画像のリサイズとクロップを行い、ピクセル値のテンソルに変換し、テキストにプレースホルダートークンを挿入して画像がどこに入るかをマークする固定パイプラインです。同じ画像バイト列でも、異なるプロセッサバージョン、異なるリサイズポリシー、あるいは異なるパッチ幾何学の結果として異なるテンソルを生成することがあり、プレースホルダーの数は入力次元によって変化します。RL トレーナーが画像を最初から再処理しなければならない場合、学習中の視覚的プレフィックスは行動方策が目にした視覚的プレフィックスと一致しない可能性があります。Turnstile は画像処理をロールアウトの一部として扱います。リクエストに画像が含まれる場合、Turnstile はそれをデコードし、監査用に元のバイト列のハッシュを保存し、モデルの設定されたプロセッサを実行し、プレースホルダーが現れる順序で、トークン ID と同じ軌跡に処理済みのピクセル特徴を記録します。エクスポートされるシーケンスには生データと処理済みデータの両方が含まれているため、トレーナーは必要な方を使用できます。
今後の展望
Turnstile はまだ初期段階です。現在の実装には Rust コア、SGLang バックエンド、プロセス内学習スクリプト用の Python バインディング、プレフィックス認識型マルチターン捕捉、オプションの MoE ルーティング捕捉、およびマルチモーダルサポートが含まれています。近未来的な作業はより広範で、vLLM バックエンド、より多くのトレーニングフレームワークアダプター、そしてより多くのマルチモーダルモデルのカバレッジが予定されています。長期的な形状は、私たちが始めた設計から変わっていません。エージェントハネスは RL データパイプラインになる必要はなく、トレーナーはレンダリングされたテキストから何が起きたのかを推測する必要はないのです。モデルがサンプリングしたトークンを、私たちは記録します。
参考文献
Turnstile README
Turnstile data design
Turnstile multimodal image support design
SGLang multimodal compatibility notes
OSWorld and its open-source agent harness
OpenHands
THUDM/slime Prime Intellect renderers blog
Prime Intellect renderers GitHub
prime-rl algorithms (extension property, multi-turn trajectory merging)
prime-rl inference (router replay)
Polar: Agentic RL on Any Harness at Scale
NVIDIA-NeMo/ProRL-Agent-Server
Stabilizing MoE Reinforcement Learning by Aligning Training and Inference Routers
rLLM Agent Lightning
Strands Agents
SGLang provider
原文を表示
Reinforcement learning (RL) is one of the techniques we use to make language models better at sustained, multistep tasks like writing code, navigating a website, or carrying out a research workflow. The model doesn't act alone in those settings; it's wrapped in a piece of software we call a harness, which lets it call tools, observe the results of using them, and decide what to do next. To improve such a model with RL, we let it attempt many tasks inside the harness, score how well each attempt went, and use the score to nudge the model's parameters toward the choices that worked. The hard part turns out to be the bookkeeping. To turn a scored attempt into a parameter update, the trainer needs an exact record of what the model produced — not a summary, and not a transcript that looks as though it captures a complete exchange but drops vital information. Internally, models see text as a sequence of numbered units called tokens; an English sentence might have 10 or 20 tokens, each assigned an integer ID by a piece of software called a tokenizer. Two strings that look identical in a transcript can map to different token IDs after a small change of formatting, and that gap, however small, is enough to make the trainer optimize against a slightly different past than the one the model actually experienced. Today we're releasing Turnstile, a small proxy written in the Rust programming language that sits between any agent harness and the backend system that runs the model. Turnstile records the exact token-level history of every request as it happens, at the only point where that history is unambiguously correct: the moment of generation. It then exports a generic, framework-neutral trajectory that can feed into whichever RL training stack you already use. We use Turnstile to drive real RL training runs. In the validations we report here, two different agents — a text-only coding agent and a multimodal computer-use agent — improved steadily over the course of their RL runs. In both cases the agent harness was left unchanged, and the data Turnstile records flowed directly into the training stack and produced the expected learning signal end to end. Tokens, rollouts, and why agent transcripts can lie Three pieces of vocabulary do most of the work in the rest of this post, so it's worth grounding them up front. A tokenizer is a deterministic function that turns text into a list of integer token IDs and token IDs back into text. Each model is paired with a specific tokenizer; you can't substitute one for another. The tokenizer is unforgiving: a stray space, a different way of writing a tool call as JSON, or a slightly different chat template (the format string a serving system uses to wrap roles and messages into a single text input the model can read) can change the token IDs even when the rendered text looks the same to a human. We'll call this kind of mismatch retokenization drift when it comes from rerunning a tokenizer over text we’ve already seen and chat template drift when it comes from the surrounding format changing under us. A rollout is one recorded attempt at a task: the prompt, every tool call, tool feedback, the model’s responses, and the final outcome. The version of the model that produced the rollout is called the behavior policy. The mathematics of policy-gradient RL works cleanly only when the trainer optimizes the model's behavior against the context the behavior policy actually saw. If we rerender the prompt and end up with a slightly different token sequence, we're now training the model against a context unfamiliar to the behavior policy. The training signal degrades, sometimes invisibly, since the model still appears to be learning. That is why agent harnesses make the problem worse rather than better. A harness is not a static prompt; during a single rollout it may compact older messages to save context, retry a malformed tool call, branch into subagents, merge their results back, or summarize history. All of that is normal, useful agent behavior. But each rewrite is another chance for the next request's token sequence to drift away from what the model actually generated last turn. The transcript a harness produces is a faithful record of the conversation; it is not, in general, a faithful record of the tokens, and it is the tokens the trainer needs. Capturing tokens at the proxy boundary Turnstile's central design choice is to stop trying to reconstruct token-level state from text after the rollout is over. We capture it at the moment of generation, where it is already correct, and we do that without changing the harness. The proxy speaks the same HTTP API every modern agent harness already speaks: the OpenAI Chat Completions API, which has become the de facto standard for "send a list of messages, get back a response." The harness creates a rollout group with Turnstile, points its Chat Completions client at Turnstile's address instead of the real backend, and runs unchanged. Behind the scenes, every request flows through Turnstile to the inference backend (today SGLang, with vLLM planned). Turnstile records the exact token IDs the model sampled, the per-token log probabilities (the model's own confidence values for each token, expressed as logarithms; the trainer needs these to compute its update), and a loss mask that marks which tokens were generated by the model and should contribute to training versus which came from the user, tools, or the system prompt and should not. When the rollout is finished, the harness asks Turnstile for the recorded trajectories. Each trajectory is a TrainingSequence object containing the token IDs, log probabilities, the loss masks for the full sequence, and a record of which version of the model's weights was active during which spans of the sequence. (The trainer needs these weight version boundaries to know if the model parameters changed mid-rollout because of an asynchronous update.) Turning that into the specific batch shape your trainer wants is straightforward adapter work: attach the reward, expand the mask, and hand it off. Existing harnesses can stay black boxes There are a number of agent harnesses, such as OpenHands, Codex, and Terminus, that are already useful but were not designed as training runtimes. Without Turnstile, using one of these to drive an RL training run requires it to record token IDs, log probabilities, masks, and routing traces; in practice, that work often falls to a separate harness-shaped component built inside the training system. Either way, a harness ends up acting as a token-level RL data pipeline, and that is the wrong abstraction. The harness knows the information it intended to send to the model, but it does not, in general, know the exact token sequence, cache state, routing trace, or processed multimodal inputs the model actually used. Those live in the backend. With Turnstile, the production harness doesn't have to log training data. It points its Chat Completions client at Turnstile instead of the inference backend and otherwise runs unchanged. Turnstile records the model-facing rollout state: it does not need to understand the harness's private control flow or the semantic reason a context changed. If the next request is a faithful token-level extension of an earlier one, Turnstile merges it into the same trajectory. If the harness compressed memory, rewrote history, merged a subagent result, or otherwise changed the prefix in a way that cannot be proven equivalent, Turnstile starts a new sequence and keeps the trainable suffix honest. All this applies in the strict black-box case: a proprietary harness whose internals are closed to the training system can still drive an RL training run, with no source-level integration at all. Below are two examples of using Turnstile with open-source harnesses in a black-box fashion. Multiturn agents and prefix-aware trajectories A naïve way to store these recordings would be to treat every request as an independent training example. That’s wasteful, because each new request includes the whole conversation so far, so the same token strings would end up being duplicated over and over. It’s also subtly wrong, because it loses the relationship between turns. Instead, Turnstile stores a multiturn rollout as a single growing token path — so long as the path is faithful to what the model actually saw. When a later request to the model is just the previous request plus a few new tokens at the end (the new user message, a tool result, an LLM response), Turnstile recognizes the overlap at the token level — not by comparing rendered strings but by checking that the previously captured token IDs really do appear unchanged at the start of the new request. If they do, the two turns become one continuous trainable sequence with the loss mask correctly identifying which spans were the model's outputs. When the next request cannot be safely extended from a previous one — because the harness rewrote earlier messages, or the tokens drifted for some reason — Turnstile does not pretend otherwise. It starts a new training sequence. We call this "exploding the trajectory". It costs more training tokens than the optimistic alternative, but it ensures that every token string used for RL training is one the behavior policy actually saw. The point is not to maximize compactness; the point is never to lie to the trainer about what happened. Mixture-of-experts routing adds a hidden dimension Some modern models use a mixture-of-experts (MoE) architecture, in which only a small subset of the model's parameters — called experts — are activated for any given input token. The choice of experts is itself part of the computation, made by a small router network at every layer. The routing decision depends on the activations at each layer, and tiny differences in how the previous tokens were processed can change which experts are picked. This matters for RL because, even if two requests have the same token IDs, the tokens might get routed to different experts on different runs. Last fall, researchers at Peking University and their colleagues characterized this discrepancy and proposed recording the MoE model’s routing decisions so the trainer can replay them. We adopt the same principle. When MoE capture is enabled, Turnstile asks the inference backend for the routing trace and records it alongside the tokens. Every time it extends the token path, it checks that the routing for the shared prefix matches what was recorded last turn. If it doesn't — for example, because a key-value cache miss forced the backend to recompute the prefix and pick different experts — Turnstile splits the trajectory rather than train under the wrong routing. Multimodal rollouts When the model also takes images as input — a vision-language model — the rollout has another piece of state to keep track of. The model doesn't see the raw bytes of the uploaded image; it sees the output of an image processor, a fixed pipeline that resizes and crops the image, converts it into a tensor of pixel values, and inserts placeholder tokens into the text to mark where the image goes. The same image bytes can produce different tensors as the result of a different processor version, a different resize policy, or a different patch geometry, and the placeholder count can change with the input dimensions. If the RL trainer has to reprocess the image from scratch, the visual prefix it trains under may not be the visual prefix the behavior policy saw. Turnstile treats image processing as part of the rollout. When a request includes an image, Turnstile decodes it, hashes and stores the original bytes for audit, runs the model's configured processor, and records the processed pixel features in the same trajectory as the token IDs, in the order in which the placeholders appear. The exported sequence carries both the raw and processed visual data, so the trainer can use whichever it needs. Where this is going Turnstile is early. The current implementation has a Rust core, an SGLang backend, Python bindings for in-process training scripts, prefix-aware multiturn capture, optional MoE routing capture, and multimodal support. Near-term work is broader: a vLLM backend, more training-framework adapters, and more multimodal-model coverage. The long-term shape is unchanged from the design we started with: agent harnesses should not have to become RL data pipelines, and trainers should not have to guess what happened from rendered text. The model sampled the tokens. We record them. References Turnstile README Turnstile data design Turnstile multimodal image support design SGLang multimodal compatibility notes OSWorld and its open-source agent harness OpenHands THUDM/slime Prime Intellect renderers blog Prime Intellect renderers GitHub prime-rl algorithms (extension property, multi-turn trajectory merging) prime-rl inference (router replay) Polar: Agentic RL on Any Harness at Scale NVIDIA-NeMo/ProRL-Agent-Server Stabilizing MoE Reinforcement Learning by Aligning Training and Inference Routers rLLM Agent Lightning Strands Agents SGLang provider
関連記事
今日のまとめ
AI日報で今日の重要ニュースをまとめ読み