Ir al contenido
Español

EBench Docs

Desafio

EBench Challenge admite el envio en linea de resultados del benchmark. Sigue los pasos siguientes para preparar una ejecucion valida y enviarla al servicio del leaderboard.

Antes de enviar en linea, asegurate de poder ejecutar el benchmark localmente:

Debes comprobar que tu ejecucion local termina correctamente y genera un directorio de resultados completo antes de intentar el envio en linea.

El flujo en linea tiene tres etapas: crear una tarea en linea, esperar el endpoint de evaluacion y ejecutar los workers de evaluacion contra ese endpoint.

Abre la pagina principal de la plataforma:

https://internrobotics.shlab.org.cn/eval/landing-page

Luego:

  1. Inicia sesion en la plataforma.
  2. Abre la pagina de gestion de API keys o secretos.
  3. Crea una nueva API key y copia el valor del token.
Ventana de terminal
git clone https://gitee.pjlab.org.cn/L2/MultimodalVLA/GenManip-Client.git
cd GenManip-Client
conda create -n client python=3.11 -y
conda activate client
pip install -e .

Usa gmp online submit para solicitar un trabajo de evaluacion remoto:

Ventana de terminal
gmp online submit \
--base_url https://internrobotics.shlab.org.cn/eval \
--token "$EBENCH_SUBMIT_TOKEN" \
--task_id "$PREVIOUS_TASK" \ # opcional: continuar con una tarea anterior
--benchmark_set ebench_generalist \
--model_name internVLA \
--model_type VLA \
--submitter_name test \
--submitter_homepage test \
--is_public 0
ParámetroTipoEjemploDescripción
task_idstringT2025123100001Opcional, puede incluir task_id anterior para re-ejecución de tarea
model_namestringinternVLANombre del modelo
model_typestringVLATipo de modelo
benchmark_setstringEBenchTipo de conjunto de benchmark, actualmente solo se permite ebench_generalist
submitter_namestringSHlabNombre de organización/desarrollador
submitter_homepagestringhttp://example.comPágina web del remitente
is_publicint0Si es público
0 No
1 Sí

Cuando la tarea del backend este lista, el comando devuelve campos como estos:

Waiting for available server (task_id=b5dddc6de60c4aec8236500b8e3dc0e1)...
Still waiting... elapsed 0.1s. Next check in 5.0s.
Still waiting... elapsed 5.3s. Next check in 5.0s.
Ready after 10.4s. endpoint=https://internverse.shlab.org.cn/eval-server/2813aea1/api/predict/embodied_eval.genmanip_eas_1_master_prod
{
"task_id": "b5dddc6de60c4aec8236500b8e3dc0e1",
"endpoint": "https://internverse.shlab.org.cn/eval-server/2813aea1/api/predict/embodied_eval.genmanip_eas_1_master_prod",
"response": {
"code": 0,
"msg": "success",
"trace_id": "4a4136c66bdc80922ccc6485c44fa9e5",
"data": {
"ready": true,
"endpoint": "https://internverse.shlab.org.cn/eval-server/2813aea1/api/predict/embodied_eval.genmanip_eas_1_master_prod"
}
}
}

Guarda ambos valores:

  • task_id: usalo como run_id al ejecutar la evaluacion.
  • endpoint: usalo como la URL remota de evaluacion.

Demo: extraer automaticamente endpoint y task_id

Sección titulada «Demo: extraer automaticamente endpoint y task_id»

El siguiente ejemplo usa un script simplificado de Python para ejecutar gmp online submit y extraer endpoint y task_id de la salida devuelta:

import os
import json
import subprocess
def submit_online_task() -> tuple[str, str]:
cmd = [
'gmp', 'online', 'submit',
'--base_url', 'https://internrobotics.shlab.org.cn/eval',
'--token', os.environ['EBENCH_SUBMIT_TOKEN'],
'--benchmark_set', 'ebench_generalist',
'--model_name', 'internVLA',
'--model_type', 'VLA',
'--submitter_name', 'test',
'--submitter_homepage', 'test',
'--is_public', '0',
]
result = subprocess.run(cmd, capture_output=True, text=True, check=True)
output = result.stdout
json_start = output.find('{')
payload = json.loads(output[json_start:])
endpoint = payload['endpoint']
task_id = payload['task_id']
print('endpoint=' + endpoint)
print('task_id=' + task_id)
return endpoint, task_id

Despues de ejecutar el script, imprimira directamente endpoint y task_id, que luego puedes usar en la llamada posterior al worker de evaluacion.

Ejecuta el evaluador contra el endpoint devuelto. Esta es una evaluación de prueba. Sigue la documentación para crear tu propia evaluación de modelo.

endpoint, task_id = submit_online_task()
client = EvalClient(
base_url=endpoint,
token=os.environ['EBENCH_SUBMIT_TOKEN'],
run_id=task_id,
worker_ids=["0"]
)
model = ModelClient(...)
try:
obs = client.reset()
done = False
while not done:
# Generar acciones para todo el chunk
action_chunk = model.get_action_chunk(obs)
# El servidor ejecuta el chunk internamente; devuelve obs en el siguiente punto de re-inferencia
obs, done = client.step(action_chunk)
finally:
client.close()

Puedes iniciar varios eval clients con diferentes IDs. Por ejemplo:

client = EvalClient(
base_url=endpoint,
token=os.environ['EBENCH_SUBMIT_TOKEN'],
run_id=task_id,
worker_ids=["1"]
)
...

El servidor admite hasta 16 trabajadores simultáneos por ejecución. Las conexiones se terminarán después de diez minutos de inactividad. Puede reiniciar un envío de evaluación fallido utilizando el mismo task_id.

Ventana de terminal
# reiniciar la tarea anterior
gmp online submit \
--base_url https://internrobotics.shlab.org.cn/eval \
--token "$EBENCH_SUBMIT_TOKEN" \
--task_id 9ea5fb6ae980430da626958c4433ea18 \
# ...

Si encuentra tiempos de espera de conexión, reinicie el cliente para recuperarlo. El progreso se guardará en el servidor.

Despues de crear la tarea en linea, la pagina de la plataforma mostrara la tarea correspondiente. Los resultados finales de la evaluacion se escriben en el mismo registro remoto de la tarea.

Tambien puedes verificar el estado del servidor y el progreso de la tarea desde la terminal.

Ventana de terminal
gmp status \
--url "$EBENCH_ONLINE_ENDPOINT" \
--token "$EBENCH_SUBMIT_TOKEN" \
--run_id "$EBENCH_TASK_ID"

Detenga una sesión de evaluación con:

gmp online stop \
--url "$EBENCH_ONLINE_ENDPOINT" \
--token "$EBENCH_SUBMIT_TOKEN" \
--run_id "$EBENCH_TASK_ID" \
--user_id "$USER_ID" # obtener de la página web, su página de cuenta

Crea tareas mediante la URL base oficial de la plataforma:

https://internrobotics.shlab.org.cn/eval

Despues de gmp online submit, usa el endpoint devuelto para esa tarea en la evaluacion:

https://internverse.shlab.org.cn/evalserver/<task-endpoint>
  • Cada episodio evaluado produce una puntuacion de tarea entre 0.0 y 1.0.
  • Una tarea recibe la puntuacion completa cuando la condicion objetivo requerida se completa dentro del episodio; de lo contrario recibe 0.0.
  • La puntuacion del leaderboard es el promedio de las puntuaciones de tarea de todos los episodios evaluados en el benchmark enviado.
  • Para la semantica de exito especifica de cada tarea, consulta Vista de tareas, donde cada tarea incluye su descripcion de Location, Instruction y Score.
  • Baseline o modelo personalizado ejecutado localmente
  • Track y split correctos seleccionados
  • Token de envio configurado
  • URL de envio en linea confirmada
  • Archivos de resultados listos para subir