gather_trajectory_groups / gather_trajectories leave sibling rollouts running after a failure
Los mantenedores suelen responder en 1 día
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 78/100
Línea de trabajo
Encuentra las implementaciones de gather_trajectory_groups y gather_trajectories y después lee cómo usan asyncio.gather y gestionan max_exceptions. Añade pruebas asíncronas específicas para un rollout que falla junto a otro rollout bloqueado en ambos puntos de entrada. El trabajo estará terminado cuando la ruta de excepción cancele los rollouts hermanos y espere a que finalicen, mientras que los fallos tolerados y la cancelación de la tarea que espera sigan comportándose como se describe.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
gather_trajectory_groups and gather_trajectories run their rollouts through asyncio.gather. When a rollout raises past max_exceptions, asyncio.gather re-raises that exception immediately, but it does not cancel the other awaitables, which keep running. The caller sees the failure and moves on (or the training step aborts), while the remaining rollouts keep calling the inference server, the environment and any after_each judge (e.g. RULER) with no owner. This is the same lifecycle gap as #1140, in the other gather entry points.
Reproduced on main at 5f0c1fb, Python 3.12, no model or service:
import asyncio
import art
async def main():
entered, release = asyncio.Event(), asyncio.Event()
effects = []
async def slow_rollout():
entered.set()
await release.wait()
effects.append("finished after gather raised")
return art.TrajectoryGroup([art.Trajectory(reward=1)])
async def failed_rollout():
await entered.wait()
raise RuntimeError("rollout failed")
try:
await art.gather_trajectory_groups([failed_rollout(), slow_rollout()], pbar_desc=None)
except RuntimeError as error:
print("gather raised:", error)
release.set()
await asyncio.sleep(0.1)
print(effects)
asyncio.run(main())
Output:
gather raised: rollout failed
['finished after gather raised']
Expected: []. When the gather raises, the other rollouts should already be cancelled and awaited. gather_trajectories behaves the same way.
The tolerated-failure path (max_exceptions not exceeded) and cancellation of the awaiting task are fine today. asyncio.gather does propagate cancellation to its children; only the exception path leaks.
- Lenguaje dominante
- Python
- Estrellas
- 10.8k
- Forks
- 1k
- Merge medio
- 12 h 33 min
- PR fusionados (30 d)
- 126
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de OpenPipe/ART
-
Distributed group_mean casts group ids to float32, losing precision vs non-distributed pathPosiblemente ocupada @OnePunchMonk la tomó hace 22 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
Add from_entity parameter to _experimental_fork_checkpointQuizá libre de nuevo Un pull request para esta issue se cerró sin fusionarse. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
ruler_score_group drops group exceptions, metadata and metrics, and trajectory policy versionsPosiblemente ocupada @salma2vec la tomó hace 3 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 35/100
Los mantenedores suelen responder en 1 día
-
trajectory_group_batches leaves started rollouts running after close, error or cancellationPosiblemente ocupada @salma2vec la tomó hace 3 días. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 25/100
Los mantenedores suelen responder en 1 día
-
LocalBackend/Unsloth: gradient_accumulation_steps > 1 hangs the trainer (producer waits for one result per sequence)Posiblemente ocupada @monsterlag la tomó hace 3 días. Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 15/100
Los mantenedores suelen responder en 1 día
Todos los issues de OpenPipe/ART
Issues similares
-
bug P2 rust
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
jscott3201/rusty-bacnet#2085 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
evarness-ai/iris-harness#401 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
sistemicorp/scripts#62 ·
-
area/mac help wanted needs-qa
Dificultad 1/5 Menos de una hora Aptitud para principiantes 76/100