diff --git a/plans/rover learning service.md b/plans/rover learning service.md index 2a5e05b1..f171fe4c 100644 --- a/plans/rover learning service.md +++ b/plans/rover learning service.md @@ -529,16 +529,23 @@ Training defaults beneath `roverLearning.training`: | Setting | Default | |---|---:| | enabled (still gated by outer service enabled=false) | true | -| threads | 4 | +| threads | 8 | | batchSize | 16 | -| maxSamples / minimumSamples | 512 / 128 | +| maxSamples / minimumSamples | 1024 / 128 | | passesPerJob | 2 | | roundsPerSession | 3 | | maxStepsPerJob | 200 | | checkpointEverySteps | 100 | -| intervalSeconds | 300 | +| intervalSeconds | 60 | | maxJobSeconds | 600 | +Defaults tuned to the user's dual E5-2620 v4 server benchmark: eight training +threads improved throughput substantially over four, while sixteen gave little +additional benefit. The larger sample pool and shorter interval are starting +choices for its available resources, not measured learning-quality improvements. +Inference remains four threads per rover. Existing explicit configuration values +override these defaults; this change does not rewrite deployed configuration. + At most four completed retained sessions are selected per job. Samples are spread over each full video via reservoir sampling, not always taken from its beginning. The rounds limit is sampled training visits, not full passes over all recorded diff --git a/server/src/services/roverLearningService/configuration.js b/server/src/services/roverLearningService/configuration.js index 670bea68..b865d89c 100644 --- a/server/src/services/roverLearningService/configuration.js +++ b/server/src/services/roverLearningService/configuration.js @@ -9,10 +9,10 @@ module.exports = { recording: { maxGiB: 20, minimumFreeGiB: 2, sessionSeconds: 300 }, driving: { threads: 4, actionThreshold: 0.7, staleMs: 2000 }, training: { - enabled: true, python: '/opt/rover-learning/bin/python', threads: 4, - batchSize: 16, maxSamples: 512, minimumSamples: 128, passesPerJob: 2, + enabled: true, python: '/opt/rover-learning/bin/python', threads: 8, + batchSize: 16, maxSamples: 1024, minimumSamples: 128, passesPerJob: 2, roundsPerSession: 3, maxStepsPerJob: 200, checkpointEverySteps: 100, - intervalSeconds: 300, maxJobSeconds: 600, + intervalSeconds: 60, maxJobSeconds: 600, }, }, schema: strictObject({