From 20e67d4d64ffb7c46227189131814d27e0429da0 Mon Sep 17 00:00:00 2001 From: jgrusewski Date: Fri, 27 Feb 2026 18:46:16 +0100 Subject: [PATCH] =?UTF-8?q?feat(ci):=20tune=20RL=20resources=20to=20actual?= =?UTF-8?q?=20usage=20=E2=80=94=202000m=20CPU,=20concurrent=3D2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit RL env simulation is single-threaded (~1 core actual). Lowering from 7000m to 2000m request allows DQN + PPO hyperopt to run simultaneously on one L4 node. Co-Authored-By: Claude Opus 4.6 --- .gitlab-ci.yml | 11 +++++------ infra/k8s/gitlab/runner-rl-values.yaml | 21 ++++++++++----------- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6f49f74d7..511391418 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -423,12 +423,11 @@ build-training: # Picked up by gitlab-runner-rl which mounts training-data-l4-pvc + sccache-l4-pvc # Runner default node_selector = ci-compile (L4-1-24G) variables: - # RL is CPU-bound — full L4 node (7800m CPU, 45Gi RAM, 1 GPU) - # concurrent=1 on RL runner → one job gets everything for fastest iteration - KUBERNETES_CPU_REQUEST: "7000m" - KUBERNETES_CPU_LIMIT: "7800m" - KUBERNETES_MEMORY_REQUEST: "16Gi" - KUBERNETES_MEMORY_LIMIT: "40Gi" + # RL is single-threaded (~1 core actual), 2000m allows 2 concurrent on L4 + KUBERNETES_CPU_REQUEST: "2000m" + KUBERNETES_CPU_LIMIT: "3800m" + KUBERNETES_MEMORY_REQUEST: "4Gi" + KUBERNETES_MEMORY_LIMIT: "8Gi" rules: - if: $CI_COMMIT_BRANCH == "main" && $CI_PIPELINE_SOURCE == "push" when: manual diff --git a/infra/k8s/gitlab/runner-rl-values.yaml b/infra/k8s/gitlab/runner-rl-values.yaml index cec26abc3..034c2bc6e 100644 --- a/infra/k8s/gitlab/runner-rl-values.yaml +++ b/infra/k8s/gitlab/runner-rl-values.yaml @@ -34,18 +34,17 @@ runners: image = "rust:1.89-slim" privileged = false node_selector_overwrite_allowed = ".*" - cpu_request_overwrite_max_allowed = "7800m" - cpu_limit_overwrite_max_allowed = "7800m" - memory_request_overwrite_max_allowed = "40Gi" - memory_limit_overwrite_max_allowed = "40Gi" + cpu_request_overwrite_max_allowed = "4000m" + cpu_limit_overwrite_max_allowed = "4000m" + memory_request_overwrite_max_allowed = "16Gi" + memory_limit_overwrite_max_allowed = "16Gi" poll_timeout = 600 runtime_class_name = "nvidia" - # RL jobs are CPU-bound — give full L4 node (7800m alloc, 45Gi RAM, 1 GPU) - # concurrent=1 so one job gets everything for fastest iteration - cpu_request = "7000m" - cpu_limit = "7800m" - memory_request = "16Gi" - memory_limit = "40Gi" + # RL is single-threaded (~1 core actual), 2000m request allows 2 concurrent jobs + cpu_request = "2000m" + cpu_limit = "3800m" + memory_request = "4Gi" + memory_limit = "8Gi" helper_cpu_request = "100m" helper_cpu_limit = "500m" helper_memory_request = "128Mi" @@ -70,4 +69,4 @@ runners: tags: "kapsule-rl,gpu" -concurrent: 1 +concurrent: 2