Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion rpent/benchmarks/docs.css

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions rpent/benchmarks/embed.css

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions rpent/benchmarks/index.html

Large diffs are not rendered by default.

Binary file modified rpent/benchmarks/leaderboard-en-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified rpent/benchmarks/leaderboard-en-light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified rpent/benchmarks/leaderboard-zh-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified rpent/benchmarks/leaderboard-zh-light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 5 additions & 1 deletion rpent/benchmarks/leaderboard.css

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

23 changes: 20 additions & 3 deletions rpent/benchmarks/leaderboard.js
Original file line number Diff line number Diff line change
Expand Up @@ -124,17 +124,33 @@
if(id==='robotwin') return lang==='en'?'Clean-to-Randomized Success':'Clean-to-Randomized 成功率';
return tr(views.get(id).label)+' · '+t('rate');
}
const evaluationNotes = new Map([
['aspire', 1], ['rpent-flash-mode', 2],
['gpt-6-astra-low-motor-only', 3], ['gpt-6-astra-low', 4]
]);
const noteId = number => number===4?'libero-pro-astra-memory':`libero-pro-note-${number}`;
function noteReference(record) {
const section=d.sections.find(s=>s.id==='libero-pro');
const number=section.views.includes(record.view_id)?evaluationNotes.get(record.configuration_id):null;
if(!number)return '';
const description=lang==='en'?`Evaluation note ${number} for ${label(record)}`:`${label(record)}的评测说明 ${number}`;
return `<sup class="note-reference"><a href="#${noteId(number)}" role="doc-noteref" aria-label="${h(description)}">[${number}]</a></sup>`;
}
function noteParagraph(paragraph, number) {
const marked=paragraph.startsWith('* ')?`* <span class="note-number">[${number}]</span> ${h(paragraph.slice(2))}`:h(paragraph);
return `<p id="${noteId(number)}" class="scope-note${number===4?' memory-context':''}" tabindex="-1" role="note">${marked}</p>`;
}
function chart(view, kind='primary') {
const rows=allRows(view).filter(r=>r.rate!==null);
return `<div class="chart ${kind}" aria-label="${h(headline(view.id))}"><div class="chart-grid" aria-hidden="true">${Array.from({length:6},()=>'<i></i>').join('')}</div><div class="chart-rows">${rows.map(r=>
`<div class="chart-row" tabindex="0" data-record="${r.id}" aria-label="${h(label(r)+', '+detailLabel(r)+', '+r.rate+'%, '+count(r))}"><div class="method-label"><span class="method-text"><span class="method-name">${h(label(r))}</span><span class="method-description">${h(detailLabel(r))}</span></span></div><div class="bar-track"><div class="bar${Number(r.rate)===0?' zero':''}" style="--value:${Number(r.rate)}%;--bar-color:${color(r,view)}"><span class="bar-value">${r.rate}%</span></div></div></div>`).join('')}</div><div class="axis" aria-hidden="true">${[0,20,40,60,80,100].map(x=>`<span>${x}</span>`).join('')}</div></div>`;
`<div class="chart-row" tabindex="0" data-record="${r.id}" aria-label="${h(label(r)+', '+detailLabel(r)+', '+r.rate+'%, '+count(r))}"><div class="method-label"><span class="method-text"><span class="method-name">${h(label(r))}${noteReference(r)}</span><span class="method-description">${h(detailLabel(r))}</span></span></div><div class="bar-track"><div class="bar${Number(r.rate)===0?' zero':''}" style="--value:${Number(r.rate)}%;--bar-color:${color(r,view)}"><span class="bar-value">${r.rate}%</span></div></div></div>`).join('')}</div><div class="axis" aria-hidden="true">${[0,20,40,60,80,100].map(x=>`<span>${x}</span>`).join('')}</div></div>`;
}
function comparisonMatrix(s) {
const columns=s.views.map(id=>views.get(id));
const rows=d.configurations.filter(c=>columns.some(v=>v.record_ids.some(id=>records.get(id).configuration_id===c.id&&records.get(id).rate!==null)));
return `<details class="comparison-matrix" data-details="${s.id}"><summary>${t('allScores')} <span>${rows.length} ${lang==='en'?'configurations':'配置'}</span></summary><div class="table-wrap" tabindex="0" role="region" aria-label="${h(s.name+' '+t('allScores'))}"><table><thead><tr><th>${t('method')}</th>${columns.map(v=>`<th class="rate">${h(tr(v.label))}</th>`).join('')}</tr></thead><tbody>${rows.map(c=>{
const sample=columns.flatMap(allRows).find(r=>r.configuration_id===c.id&&r.rate!==null);
return `<tr data-method="${c.id}"><th scope="row"><div class="matrix-label"><span>${h(label(sample))}<small> ${h(detailLabel(sample))}</small></span></div></th>${columns.map(v=>{
return `<tr data-method="${c.id}"><th scope="row"><div class="matrix-label"><span>${h(label(sample))}${noteReference(sample)}<small> ${h(detailLabel(sample))}</small></span></div></th>${columns.map(v=>{
const r=allRows(v).find(r=>r.configuration_id===c.id);
return `<td class="rate"${r?` data-matrix-record="${r.id}"`:''} title="${h(tr(r?.evaluation_note)||tr(v.label))}">${r?.rate!=null?r.rate+'%':`<span class="not-reported" aria-label="${t('unreported')}">—</span>`}</td>`;
}).join('')}</tr>`;
Expand All @@ -147,7 +163,7 @@
function renderSection(s) {
const element=document.getElementById('panel-'+s.id);
const note=tr(s.notes);
element.innerHTML=sectionBody(s)+(note?note.split('\n\n').map(paragraph=>`<p class="scope-note">${h(paragraph)}</p>`).join(''):'')+(s.context?`<p id="${s.id}-astra-memory" class="scope-note memory-context">${h(tr(s.context))}</p>`:'');
element.innerHTML=sectionBody(s)+(note?note.split('\n\n').map((paragraph,index)=>noteParagraph(paragraph,index+1)).join(''):'')+(s.context?noteParagraph(tr(s.context),4):'');
setupTables(element,s.id);
}
function setupTables(element,key) {
Expand Down Expand Up @@ -274,6 +290,7 @@
const anchor=e.target.closest('a[href^="#"]');
if(anchor&&document.getElementById(normalizeAnchor(anchor.hash))){
e.preventDefault();navigate(normalizeAnchor(anchor.hash),true);
if(anchor.closest('.note-reference'))document.getElementById(normalizeAnchor(anchor.hash)).focus({preventScroll:true});
}
const summary=e.target.closest('.module-header');
if(summary)markModule(summary.parentElement.dataset.module);
Expand Down
56 changes: 39 additions & 17 deletions rpent/benchmarks/results.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"schema_version": 2,
"checked_at": "2026-09-18",
"checked_at": "2026-09-22",
"paper_revision": "2607.08448v4",
"repository_revision": "43f32aa08cba07bd4d49a4bfa5eba4ef633e9b92",
"configurations": [
Expand Down Expand Up @@ -843,13 +843,13 @@
"view_id": "long-task",
"configuration_id": "gpt-5-5-xhigh",
"status": "reported",
"rate": "52.0",
"successes": null,
"rate": "70.00",
"successes": 70,
"episodes": 100,
"source_ids": [
"paper-table-3"
"repo-libero-long-reproduction-20260922"
],
"protocol_id": "rpent-pro"
"protocol_id": "rpent-pro-long-reproduction"
},
{
"id": "long-task--gpt-6-astra-low",
Expand All @@ -870,13 +870,13 @@
"view_id": "long-swap",
"configuration_id": "gpt-5-5-xhigh",
"status": "reported",
"rate": "49.0",
"successes": null,
"rate": "55.00",
"successes": 55,
"episodes": 100,
"source_ids": [
"paper-table-3"
"repo-libero-long-reproduction-20260922"
],
"protocol_id": "rpent-pro"
"protocol_id": "rpent-pro-long-reproduction"
},
{
"id": "long-swap--gpt-6-astra-low",
Expand All @@ -896,14 +896,25 @@
"id": "libero-pro--gpt-5-5-xhigh",
"view_id": "libero-pro",
"configuration_id": "gpt-5-5-xhigh",
"status": "reported",
"rate": "72.1",
"status": "derived",
"rate": "75.13",
"successes": null,
"episodes": 800,
"source_ids": [
"paper-table-3"
"paper-table-3",
"repo-libero-long-reproduction-20260922"
],
"protocol_id": "rpent-pro"
"protocol_id": "rpent-pro-updated-long",
"derived_from": [
"spatial-task--gpt-5-5-xhigh",
"spatial-swap--gpt-5-5-xhigh",
"object-task--gpt-5-5-xhigh",
"object-swap--gpt-5-5-xhigh",
"goal-task--gpt-5-5-xhigh",
"goal-swap--gpt-5-5-xhigh",
"long-task--gpt-5-5-xhigh",
"long-swap--gpt-5-5-xhigh"
]
},
{
"id": "libero-pro--gpt-6-astra-low",
Expand Down Expand Up @@ -3211,6 +3222,17 @@
"id": "contributor-motor-only-long-task-20260920",
"type": "contributor_report",
"note": "Contributor-reported complete Long Task evaluation on another server: 38 successes in 100 episodes. Codex / GPT-6 Astra / low reasoning; execute_action motor-only control without VLA / primitives or memory. This aggregate is independent of the incomplete local motor-only campaign; no unreported suite, runtime, or token measurements are inferred."
},
{
"id": "repo-libero-long-reproduction-20260922",
"url": "https://github.com/RLinf/RPent/blob/15420b438e3adbf82e6640799a0668a2609e3bb7/docs/source-en/rst_source/usage/libero.rst#reproducing-results",
"note": "Codex / GPT-5.5 / xhigh reproduction on reproduce/libero reports Long Task 70/100 and Long Swap 55/100. The updated leaderboard combines these two results with the six unchanged Table 3 suites: (81+69+94+91+75+66+70+55)/8 = 75.125%, displayed as 75.13%. This derived Overall is not the paper's original aggregate."
},
{
"id": "flash-memory-confirmation-20260922",
"kind": "contributor-confirmed",
"url": "https://huggingface.co/datasets/RLinf/RPent-memory",
"note": "The contributor confirms that the displayed Flash Mode evaluation uses directly downloaded, officially released GPT-5.5 exploration memory and the best-performing seed from s0-s9. Molmo2-8B is used for visual localization. No memory snapshot revision is inferred."
}
],
"astra": {
Expand Down Expand Up @@ -3351,8 +3373,8 @@
"zh": "Astra · low · reasoning:92.63%(741/800)"
},
"context": {
"en": "GPT-6 Astra (memory-enabled configuration): Long Task/Swap and the other six suites use separate memory-file snapshots frozen after their respective exploration phases, with no updates during evaluation. Overall combines two non-overlapping batches: Long 157/200 plus the other suites 584/600, giving 741/800 (92.63%); the 800 episodes do not share a single memory snapshot.",
"zh": "GPT-6 Astra(使用 memory 的配置):Long Task/Swap 与其余六套件使用各自探索后冻结的 memory 文件快照,评测期间不更新。Overall 合并两个不重叠批次:Long 157/200,加上其余套件 584/600,得到 741/800(92.63%);并非全部回合共享同一份 memory 快照。"
"en": "* GPT-6 Astra (memory-enabled configuration): Long Task/Swap and the other six suites use separate memory-file snapshots frozen after their respective exploration phases, with no updates during evaluation. Overall combines two non-overlapping batches: Long 157/200 plus the other suites 584/600, giving 741/800 (92.63%); the 800 episodes do not share a single memory snapshot.",
"zh": "* GPT-6 Astra(使用 memory 的配置):Long Task/Swap 与其余六套件使用各自探索后冻结的 memory 文件快照,评测期间不更新。Overall 合并两个不重叠批次:Long 157/200,加上其余套件 584/600,得到 741/800(92.63%);并非全部回合共享同一份 memory 快照。"
},
"default_view": "libero-pro",
"views": [
Expand All @@ -3367,8 +3389,8 @@
"long-swap"
],
"notes": {
"en": "ASPIRE: Long Task and Long Swap use zero-shot transfer from the LIBERO-90 skill library.\n\nRPent / GPT-6 Motor Only uses motor-only control: it directly outputs end-effector pose increments and gripper commands through execute_action, without invoking VLA / primitives or loading memory.",
"zh": "ASPIRE:Long Task 和 Long Swap 使用 LIBERO-90 技能库进行 zero-shot 迁移。\n\nRPent / GPT-6 Motor Only 为纯电机控制方法,通过 execute_action 直接输出末端位姿增量与夹爪指令,不调用 VLA / primitive,不加载 memory"
"en": "* ASPIRE: Long Task and Long Swap use zero-shot transfer from the LIBERO-90 skill library.\n\n* RPent Flash Mode uses directly downloaded, officially released GPT-5.5 exploration memory; Molmo2-8B is used for visual localization. These results use the best-performing seed from s0-s9.\n\n* RPent / GPT-6 Motor Only uses motor-only control: it directly outputs end-effector pose increments and gripper commands through execute_action, without invoking VLA / primitives or loading memory.",
"zh": "* ASPIRE:Long Task 和 Long Swap 使用 LIBERO-90 技能库进行 zero-shot 迁移。\n\n* RPent Flash Mode 使用直接下载的、官方公开的 GPT-5.5 explore memory;Molmo2-8B 用于视觉定位。该测试结果使用了 s0-s9 中表现最好的 seed。\n\n* RPent / GPT-6 Motor Only 为纯电机控制方法,通过 execute_action 直接输出末端位姿增量与夹爪指令,不调用 VLA / primitive,不加载 memory。"
}
},
{
Expand Down
8 changes: 7 additions & 1 deletion rpent/benchmarks/table-sort.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,16 @@
if(state.highlightBest&&column!==state.idColumn&&maximum!==null&&valueOf(row.cells[column])===maximum)row.cells[column].classList.add('metric-best');
}
}
function exportText(cell) {
const copy=cell.cloneNode(true);
copy.querySelectorAll('.note-reference').forEach(marker=>marker.remove());
const text=copy.textContent.trim();
return text==='—'?'':text;
}
function exportTable(table) {
const quote=v=>'"'+String(v??'').replaceAll('"','""')+'"';
const state=table._rpentSort;
const rows=[state.headers.map(th=>th.dataset.label),...[...table.tBodies[0].rows].map(row=>[...row.cells].map(cell=>cell.textContent.trim()==='—'?'':cell.textContent.trim()))];
const rows=[state.headers.map(th=>th.dataset.label),...[...table.tBodies[0].rows].map(row=>[...row.cells].map(exportText))];
const url=URL.createObjectURL(new Blob(['\uFEFF'+rows.map(row=>row.map(quote).join(',')).join('\r\n')],{type:'text/csv;charset=utf-8'}));
const a=document.createElement('a');a.href=url;a.download=state.key.replaceAll(/[^a-zA-Z0-9-]/g,'-')+'.csv';a.click();
setTimeout(()=>URL.revokeObjectURL(url),3000);
Expand Down