# GitLab Runner — H100 GPU training workloads (hyperopt, walk-forward) # Runs on ci-training-h100 pool (H100 PCIe 1x80GB) # SXM pools have zero Scaleway quota — use PCIe until quota is granted. gitlabUrl: http://gitlab-webservice-default.foxhunt.svc.cluster.local:8181 # runnerToken set via --set at install time replicas: 1 # Reuse the existing gitlab-runner SA (has pods/secrets/configmaps RBAC) rbac: create: false serviceAccount: create: false name: gitlab-runner nodeSelector: k8s.scaleway.com/pool-name: infra runners: cloneUrl: http://gitlab-webservice-default.foxhunt.svc.cluster.local:8181 config: | [[runners]] clone_url = "http://gitlab-webservice-default.foxhunt.svc.cluster.local:8181" tag_list = ["kapsule", "h100"] [runners.kubernetes] namespace = "foxhunt" service_account = "gitlab-runner" image = "rust:1.89-slim" privileged = false node_selector_overwrite_allowed = ".*" cpu_request_overwrite_max_allowed = "24000m" cpu_limit_overwrite_max_allowed = "24000m" memory_request_overwrite_max_allowed = "200Gi" memory_limit_overwrite_max_allowed = "200Gi" poll_timeout = 600 runtime_class_name = "nvidia" pod_annotations_overwrite_allowed = ".*" # Default resources for H100 training cpu_request = "2000m" cpu_limit = "3800m" memory_request = "4Gi" memory_limit = "8Gi" helper_cpu_request = "100m" helper_cpu_limit = "500m" helper_memory_request = "128Mi" helper_memory_limit = "512Mi" image_pull_secrets = ["gitlab-registry"] [runners.kubernetes.node_selector] "k8s.scaleway.com/pool-name" = "ci-training-h100" [runners.kubernetes.node_tolerations] "nvidia.com/gpu" = "NoSchedule" "node.cilium.io/agent-not-ready" = "NoSchedule" [runners.kubernetes.pod_labels] "app.kubernetes.io/part-of" = "foxhunt-ci" # Request GPU via K8s scheduler so only one training pod runs per GPU [[runners.kubernetes.pod_spec]] name = "build" patch_type = "strategic" patch = '{"containers":[{"name":"build","resources":{"requests":{"nvidia.com/gpu":"1"},"limits":{"nvidia.com/gpu":"1"}}}]}' # H100 PCIe PVCs (separate from L40S to avoid RWO conflicts) [[runners.kubernetes.volumes.pvc]] name = "training-data-h100-pvc" mount_path = "/mnt/training-data" read_only = true [[runners.kubernetes.volumes.pvc]] name = "sccache-h100-pvc" mount_path = "/mnt/sccache" read_only = false tags: "kapsule,h100" concurrent: 2