# Train PPO: fetch binaries → hyperopt → train → evaluate → upload. # # Usage: # argo submit --from=wftmpl/train-ppo -p binary-tag=dev-abc1234 # argo submit --from=wftmpl/train-ppo -p binary-tag=latest -p train-epochs=100 # # Thin wrapper around training-pipeline (templateRef) with PPO-tuned defaults. # PPO uses 45 factored actions (5 exposure × 3 order × 3 urgency). --- apiVersion: argoproj.io/v1alpha1 kind: WorkflowTemplate metadata: name: train-ppo namespace: foxhunt labels: app.kubernetes.io/name: train-ppo app.kubernetes.io/part-of: foxhunt app.kubernetes.io/component: gpu-test spec: entrypoint: pipeline serviceAccountName: argo-workflow podMetadata: labels: app.kubernetes.io/part-of: foxhunt app.kubernetes.io/component: gpu-test app.kubernetes.io/component: training securityContext: runAsUser: 1000 runAsGroup: 1000 fsGroup: 1000 ttlStrategy: secondsAfterCompletion: 3600 activeDeadlineSeconds: 28800 # 8 hours arguments: parameters: - name: model value: ppo - name: binary-tag value: latest - name: gpu-pool value: ci-training-h100 - name: hyperopt-trials value: "20" - name: hyperopt-epochs value: "8" - name: train-epochs value: "50" - name: symbol value: ES.FUT - name: data-dir value: /data/futures-baseline - name: mbp10-data-dir value: /data/futures-baseline-mbp10 - name: trades-data-dir value: /data/futures-baseline-trades - name: tx-cost-bps value: "0.1" - name: tick-size value: "0.25" - name: spread-ticks value: "1.0" - name: initial-capital value: "35000" - name: ensemble-top-k value: "5" - name: cuda-compute-cap value: "90" volumes: - name: training-data persistentVolumeClaim: claimName: training-data-pvc readOnly: true volumeClaimTemplates: - metadata: name: workspace spec: accessModes: ["ReadWriteOnce"] storageClassName: scw-bssd resources: requests: storage: 5Gi templates: - name: pipeline dag: tasks: - name: fetch-binary templateRef: name: training-pipeline template: fetch-binary - name: hyperopt templateRef: name: training-pipeline template: hyperopt dependencies: [fetch-binary] - name: train-best templateRef: name: training-pipeline template: train-best dependencies: [hyperopt] - name: evaluate templateRef: name: training-pipeline template: evaluate dependencies: [train-best] - name: upload-results templateRef: name: training-pipeline template: upload-results dependencies: [evaluate]