feat(ci): add 2×H100 GPU pool for multi-GPU training

Pool ci-training-h100x2 (H100-2-80G, 160GB VRAM total).
MultiGpuConfig::detect() in ml crate auto-enables data parallelism.
Tags: kapsule,h100x2. Autoscale 0→1.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
jgrusewski
2026-03-04 11:32:26 +01:00
parent f0c494ab11
commit 1931d93d66

View File

@@ -0,0 +1,69 @@
# GitLab Runner — 2×H100 GPU training workloads (multi-GPU hyperopt)
# Runs on ci-training-h100x2 pool (2× H100 PCIe: 160GB total VRAM)
# Multi-GPU auto-detected by MultiGpuConfig::detect() in ml crate.
gitlabUrl: http://gitlab-webservice-default.foxhunt.svc.cluster.local:8181
replicas: 1
rbac:
create: false
serviceAccount:
create: false
name: gitlab-runner
nodeSelector:
k8s.scaleway.com/pool-name: gitlab
tolerations:
- key: gitlab
operator: Equal
value: "true"
effect: NoSchedule
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", "h100x2"]
[runners.kubernetes]
namespace = "foxhunt"
service_account = "gitlab-runner"
image = "rust:1.89-slim"
privileged = false
node_selector_overwrite_allowed = ".*"
cpu_request_overwrite_max_allowed = "16000m"
cpu_limit_overwrite_max_allowed = "16000m"
memory_request_overwrite_max_allowed = "192Gi"
memory_limit_overwrite_max_allowed = "192Gi"
poll_timeout = 600
runtime_class_name = "nvidia"
pod_annotations_overwrite_allowed = ".*"
cpu_request = "4000m"
cpu_limit = "8000m"
memory_request = "8Gi"
memory_limit = "16Gi"
helper_cpu_request = "100m"
helper_cpu_limit = "500m"
helper_memory_request = "128Mi"
helper_memory_limit = "512Mi"
image_pull_secrets = ["scw-registry", "gitlab-registry"]
[runners.kubernetes.node_selector]
"k8s.scaleway.com/pool-name" = "ci-training-h100x2"
[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"
[[runners.kubernetes.volumes.pvc]]
name = "training-data-h100x2-pvc"
mount_path = "/mnt/training-data"
read_only = true
[[runners.kubernetes.volumes.pvc]]
name = "sccache-h100x2-pvc"
mount_path = "/mnt/sccache"
read_only = false
tags: "kapsule,h100x2"
concurrent: 2