File tree Expand file tree Collapse file tree 1 file changed +10
-0
lines changed
Expand file tree Collapse file tree 1 file changed +10
-0
lines changed Original file line number Diff line number Diff line change @@ -374,6 +374,16 @@ <h1>Source code for lzero.worker.muzero_evaluator</h1><div class="highlight"><pr
374374 < span class ="n "> ready_env_id</ span > < span class ="o "> =</ span > < span class ="n "> ready_env_id</ span > < span class ="o "> .</ span > < span class ="n "> union</ span > < span class ="p "> (</ span > < span class ="nb "> set</ span > < span class ="p "> (</ span > < span class ="nb "> list</ span > < span class ="p "> (</ span > < span class ="n "> new_available_env_id</ span > < span class ="p "> )[:</ span > < span class ="n "> remain_episode</ span > < span class ="p "> ]))</ span >
375375 < span class ="n "> remain_episode</ span > < span class ="o "> -=</ span > < span class ="nb "> min</ span > < span class ="p "> (</ span > < span class ="nb "> len</ span > < span class ="p "> (</ span > < span class ="n "> new_available_env_id</ span > < span class ="p "> ),</ span > < span class ="n "> remain_episode</ span > < span class ="p "> )</ span >
376376
377+ < span class ="c1 "> # In a parallel evaluation setting, it's possible for all active environments to finish their</ span >
378+ < span class ="c1 "> # episodes simultaneously. This can leave `ready_env_id` temporarily empty while the environments</ span >
379+ < span class ="c1 "> # are being reset by the manager.</ span >
380+ < span class ="c1 "> # To prevent processing an empty batch, which would cause an IndexError or other errors downstream,</ span >
381+ < span class ="c1 "> # we check if `ready_env_id` is empty. If so, we sleep briefly to prevent a busy-wait,</ span >
382+ < span class ="c1 "> # and `continue` to the next loop iteration to wait for newly reset environments to become available.</ span >
383+ < span class ="k "> if</ span > < span class ="ow "> not</ span > < span class ="n "> ready_env_id</ span > < span class ="p "> :</ span >
384+ < span class ="n "> time</ span > < span class ="o "> .</ span > < span class ="n "> sleep</ span > < span class ="p "> (</ span > < span class ="mf "> 0.01</ span > < span class ="p "> )</ span >
385+ < span class ="k "> continue</ span >
386+
377387 < span class ="n "> stack_obs</ span > < span class ="o "> =</ span > < span class ="p "> {</ span > < span class ="n "> env_id</ span > < span class ="p "> :</ span > < span class ="n "> game_segments</ span > < span class ="p "> [</ span > < span class ="n "> env_id</ span > < span class ="p "> ]</ span > < span class ="o "> .</ span > < span class ="n "> get_obs</ span > < span class ="p "> ()</ span > < span class ="k "> for</ span > < span class ="n "> env_id</ span > < span class ="ow "> in</ span > < span class ="n "> ready_env_id</ span > < span class ="p "> }</ span >
378388 < span class ="n "> stack_obs</ span > < span class ="o "> =</ span > < span class ="nb "> list</ span > < span class ="p "> (</ span > < span class ="n "> stack_obs</ span > < span class ="o "> .</ span > < span class ="n "> values</ span > < span class ="p "> ())</ span >
379389
You can’t perform that action at this time.
0 commit comments