fix: keep async rollouts version-consistent
- serialize shared-model optimizer updates with generation - reject future or over-lagged rollout results after asynchronous scoring - close cache publication races - persist policy versions in online checkpoints
This commit is contained in:
@@ -625,7 +625,7 @@ classDiagram
|
||||
+supports_online() bool
|
||||
+set_rollout_runner(runner)
|
||||
+prepare_from_rollout(result) Dict
|
||||
+on_optimizer_step()
|
||||
+optimizer_step(optimizer)
|
||||
}
|
||||
|
||||
class LossOutput {
|
||||
@@ -698,12 +698,15 @@ classDiagram
|
||||
+int rep_window
|
||||
+int policy_version
|
||||
+update_weights(policy_version) int
|
||||
+apply_weight_update(policy_version, update)
|
||||
+generate(batch) RawRollout
|
||||
}
|
||||
|
||||
class RolloutRunner {
|
||||
+int policy_version
|
||||
+int max_policy_lag
|
||||
+update_weights(policy_version) int
|
||||
+apply_weight_update(policy_version, update)
|
||||
+step()
|
||||
+clear_cache()
|
||||
+__call__(batch) Tuple[RolloutResult, bool]
|
||||
|
||||
@@ -119,8 +119,7 @@ on_train_begin
|
||||
|
||||
if executor.sync_gradients:
|
||||
before_optimizer_step
|
||||
optimizer.step()
|
||||
strategy.on_optimizer_step()
|
||||
strategy.optimizer_step(optimizer)
|
||||
optimizer.zero_grad()
|
||||
if scheduler:
|
||||
scheduler.step()
|
||||
|
||||
Reference in New Issue
Block a user