Adds a parent/child GitLab CI pipeline for ML model training: - Generator script produces per-model hyperopt/train/evaluate jobs - Parent pipeline (.gitlab-ci-training.yml) with manual trigger - NFS-backed ReadWriteMany PVC for shared training outputs - Hyperopt params wired into training binaries (DQN, PPO, TFT, Mamba2) - Shared DBN loader eliminates duplicate code across hyperopt adapters - Supervised hyperopt unified to DBN data (was parquet-only) Pipeline: hyperopt (4 models) → train (10 models) → evaluate ensemble Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
62 lines
1.4 KiB
YAML
62 lines
1.4 KiB
YAML
# ML Training Pipeline — manually triggered
|
|
#
|
|
# Trigger via GitLab UI: CI/CD → Pipelines → Run pipeline
|
|
# Set CI configuration file to: .gitlab-ci-training.yml
|
|
# Set variables as needed (MODELS, SYMBOLS, PHASE, etc.)
|
|
#
|
|
# Or via API:
|
|
# curl -X POST --fail \
|
|
# -F "token=$TRIGGER_TOKEN" \
|
|
# -F "ref=main" \
|
|
# -F "variables[MODELS]=all" \
|
|
# -F "variables[SYMBOLS]=ES.FUT" \
|
|
# -F "variables[PHASE]=full" \
|
|
# "$CI_API_V4_URL/projects/$CI_PROJECT_ID/trigger/pipeline"
|
|
|
|
stages:
|
|
- prepare
|
|
- trigger
|
|
|
|
variables:
|
|
SYMBOLS: "ES.FUT"
|
|
MODELS: "all"
|
|
PHASE: "full"
|
|
MAX_PARALLEL: "10"
|
|
EPOCHS: "50"
|
|
HYPEROPT_TRIALS: "20"
|
|
RUN_ID: ""
|
|
REGISTRY: rg.fr-par.scw.cloud/foxhunt-ci
|
|
|
|
workflow:
|
|
rules:
|
|
- if: $CI_PIPELINE_SOURCE == "web"
|
|
- if: $CI_PIPELINE_SOURCE == "trigger"
|
|
- if: $CI_PIPELINE_SOURCE == "api"
|
|
|
|
generate-jobs:
|
|
stage: prepare
|
|
image: alpine:3.19
|
|
tags:
|
|
- kapsule
|
|
script:
|
|
- apk add --no-cache bash coreutils
|
|
- |
|
|
if [ -z "$RUN_ID" ]; then
|
|
export RUN_ID=$(date +%Y%m%d-%H%M%S)
|
|
fi
|
|
- bash scripts/generate-training-pipeline.sh
|
|
- echo "--- Generated pipeline ---"
|
|
- cat .training-generated.yml
|
|
artifacts:
|
|
paths:
|
|
- .training-generated.yml
|
|
expire_in: 1 day
|
|
|
|
run-training:
|
|
stage: trigger
|
|
trigger:
|
|
include:
|
|
- artifact: .training-generated.yml
|
|
job: generate-jobs
|
|
strategy: depend
|