Skip to content

Commit 3d2a875

Browse files
committed
fix
1 parent 3a28c36 commit 3d2a875

File tree

2 files changed

+18
-6
lines changed

2 files changed

+18
-6
lines changed

verl/workers/fsdp_workers.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -625,7 +625,8 @@ def _build_rollout(self, trust_remote_code=False):
625625
# For sync mode, we directly switch to trainer mode here.
626626
# For async mode, we can't call run_until_complete here, so we will switch to trainer mode in AgentLoopManager.
627627
if rollout_config.mode == "sync" and self._is_actor:
628-
asyncio.run(self.trainer_mode())
628+
loop = asyncio.get_event_loop()
629+
loop.run_until_complete(self.trainer_mode())
629630

630631
async def rollout_mode(self):
631632
"""Context switch hybridengine to rollout mode."""
@@ -901,14 +902,19 @@ def generate_sequences(self, prompts: DataProto):
901902

902903
timing_generate = {}
903904
if self._is_actor: # For rollout only, we do not switch context.
904-
asyncio.run(self.rollout_mode())
905+
try:
906+
loop = asyncio.get_event_loop()
907+
except RuntimeError:
908+
loop = asyncio.new_event_loop()
909+
loop.run_until_complete(self.rollout_mode())
905910
log_gpu_memory_usage("After switch to rollout mode", logger=logger)
906911

907912
with simple_timer("generate_sequences", timing_generate):
908913
output = self.rollout.generate_sequences(prompts=prompts)
909914

910915
if self._is_actor:
911-
asyncio.run(self.trainer_mode())
916+
loop = asyncio.get_event_loop()
917+
loop.run_until_complete(self.trainer_mode())
912918
log_gpu_memory_usage("After switch to trainer mode", logger=logger)
913919

914920
# We calculate the average timing across all ranks

verl/workers/megatron_workers.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -439,7 +439,8 @@ def _build_rollout(self, trust_remote_code=False):
439439
# For sync mode, we directly switch to trainer mode here.
440440
# For async mode, we can't call run_until_complete here, so we will switch to trainer mode in AgentLoopManager.
441441
if rollout_config.mode == "sync" and self._is_actor:
442-
asyncio.run(self.trainer_mode())
442+
loop = asyncio.get_event_loop()
443+
loop.run_until_complete(self.trainer_mode())
443444

444445
@register(dispatch_mode=Dispatch.ONE_TO_ALL)
445446
def init_model(self):
@@ -668,14 +669,19 @@ def generate_sequences(self, prompts: DataProto):
668669

669670
timing_generate = {}
670671
if self._is_actor: # For rollout only, we do not switch context.
671-
asyncio.run(self.rollout_mode())
672+
try:
673+
loop = asyncio.get_event_loop()
674+
except RuntimeError:
675+
loop = asyncio.new_event_loop()
676+
loop.run_until_complete(self.rollout_mode())
672677
log_gpu_memory_usage("After switch to rollout mode", logger=logger)
673678

674679
with simple_timer("generate_sequences", timing_generate):
675680
output = self.rollout.generate_sequences(prompts=prompts)
676681

677682
if self._is_actor:
678-
asyncio.run(self.trainer_mode())
683+
loop = asyncio.get_event_loop()
684+
loop.run_until_complete(self.trainer_mode())
679685
log_gpu_memory_usage("After switch to trainer mode", logger=logger)
680686

681687
# We calculate the average timing across all ranks

0 commit comments

Comments
 (0)