Files
foxhunt/infra/k8s/monitoring/dashboards/foxhunt-training-deep-dive.json
jgrusewski dba50fa3be fix(dashboards): update datasource UIDs and folder annotations for Helm Prometheus
Update all dashboard JSON files to use Helm chart's Prometheus datasource
UID and add Grafana sidecar folder annotations for auto-provisioning.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 11:34:14 +01:00

3349 lines
76 KiB
JSON

{
"annotations": {
"list": [
{
"datasource": {
"type": "loki",
"uid": "${DS_LOKI}"
},
"enable": true,
"expr": "{namespace=\"foxhunt\", pod=~\"$pod\", level=\"ERROR\"}",
"iconColor": "red",
"name": "Errors",
"tagKeys": "level",
"titleFormat": "Error"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"enable": true,
"expr": "changes(foxhunt_training_checkpoint_saves_total{pod=~\"$pod\", namespace=\"foxhunt\"}[1m]) > 0",
"iconColor": "blue",
"name": "Checkpoints",
"titleFormat": "Checkpoint Saved"
}
]
},
"description": "Unified training pipeline monitor \u2014 target a running pod to see training curves, GPU health, eval metrics, hyperopt progress, container resources, and live logs in one place.",
"editable": true,
"fiscalYearStartMonth": 0,
"links": [
{
"title": "CI Pipeline Logs",
"type": "link",
"url": "/d/foxhunt-ci-logs/foxhunt-ci-pipeline-logs"
},
{
"title": "Training Logs",
"type": "link",
"url": "/d/foxhunt-training-logs/foxhunt-training-pipeline-logs"
},
{
"title": "Training & CI/CD",
"type": "link",
"url": "/d/foxhunt-training/foxhunt-training-and-ci-cd"
},
{
"title": "Operations Cockpit",
"type": "link",
"url": "/d/foxhunt-cockpit/foxhunt-operations-cockpit"
}
],
"liveNow": true,
"panels": [
{
"collapsed": false,
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 0
},
"id": 1,
"panels": [],
"title": "Job Overview",
"type": "row"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "",
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "blue",
"value": null
}
]
},
"unit": "none"
},
"overrides": []
},
"gridPos": {
"h": 4,
"w": 3,
"x": 0,
"y": 1
},
"id": 2,
"options": {
"colorMode": "background",
"graphMode": "area",
"reduceOptions": {
"calcs": [
"lastNotNull"
]
},
"textMode": "auto"
},
"targets": [
{
"expr": "foxhunt_training_current_epoch{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "",
"refId": "A"
}
],
"title": "Epoch",
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "",
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "blue",
"value": null
}
]
},
"unit": "none"
},
"overrides": []
},
"gridPos": {
"h": 4,
"w": 3,
"x": 3,
"y": 1
},
"id": 3,
"options": {
"colorMode": "background",
"graphMode": "area",
"reduceOptions": {
"calcs": [
"lastNotNull"
]
},
"textMode": "auto"
},
"targets": [
{
"expr": "foxhunt_training_step{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "",
"refId": "A"
}
],
"title": "Step",
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "",
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "yellow",
"value": 0.5
},
{
"color": "red",
"value": 1
}
]
},
"unit": "none"
},
"overrides": []
},
"gridPos": {
"h": 4,
"w": 3,
"x": 6,
"y": 1
},
"id": 4,
"options": {
"colorMode": "background",
"graphMode": "area",
"reduceOptions": {
"calcs": [
"lastNotNull"
]
},
"textMode": "auto"
},
"targets": [
{
"expr": "foxhunt_training_epoch_loss{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "",
"refId": "A"
}
],
"title": "Loss",
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "",
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "yellow",
"value": 0.5
},
{
"color": "red",
"value": 1
}
]
},
"unit": "none"
},
"overrides": []
},
"gridPos": {
"h": 4,
"w": 3,
"x": 9,
"y": 1
},
"id": 5,
"options": {
"colorMode": "background",
"graphMode": "area",
"reduceOptions": {
"calcs": [
"lastNotNull"
]
},
"textMode": "auto"
},
"targets": [
{
"expr": "foxhunt_training_validation_loss{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "",
"refId": "A"
}
],
"title": "Val Loss",
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "",
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "red",
"value": null
},
{
"color": "yellow",
"value": 0.5
},
{
"color": "green",
"value": 1
}
]
},
"unit": "none"
},
"overrides": []
},
"gridPos": {
"h": 4,
"w": 3,
"x": 12,
"y": 1
},
"id": 6,
"options": {
"colorMode": "background",
"graphMode": "area",
"reduceOptions": {
"calcs": [
"lastNotNull"
]
},
"textMode": "auto"
},
"targets": [
{
"expr": "foxhunt_training_epoch_sharpe{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "",
"refId": "A"
}
],
"title": "Sharpe",
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "",
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "yellow",
"value": 0.15
},
{
"color": "red",
"value": 0.3
}
]
},
"unit": "percentunit"
},
"overrides": []
},
"gridPos": {
"h": 4,
"w": 3,
"x": 15,
"y": 1
},
"id": 7,
"options": {
"colorMode": "background",
"graphMode": "area",
"reduceOptions": {
"calcs": [
"lastNotNull"
]
},
"textMode": "auto"
},
"targets": [
{
"expr": "foxhunt_training_epoch_max_drawdown{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "",
"refId": "A"
}
],
"title": "MaxDD",
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"max": 100,
"min": 0,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "yellow",
"value": 70
},
{
"color": "red",
"value": 90
}
]
},
"unit": "percent"
},
"overrides": []
},
"gridPos": {
"h": 4,
"w": 3,
"x": 18,
"y": 1
},
"id": 8,
"options": {
"reduceOptions": {
"calcs": [
"lastNotNull"
]
},
"showThresholdLabels": false,
"showThresholdMarkers": true
},
"targets": [
{
"expr": "DCGM_FI_DEV_GPU_UTIL{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "",
"refId": "A"
}
],
"title": "GPU Util",
"type": "gauge"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"max": 100,
"min": 0,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "yellow",
"value": 70
},
{
"color": "red",
"value": 90
}
]
},
"unit": "percent"
},
"overrides": []
},
"gridPos": {
"h": 4,
"w": 3,
"x": 21,
"y": 1
},
"id": 9,
"options": {
"reduceOptions": {
"calcs": [
"lastNotNull"
]
},
"showThresholdLabels": false,
"showThresholdMarkers": true
},
"targets": [
{
"expr": "DCGM_FI_DEV_FB_USED{pod=~\"$pod\", namespace=\"foxhunt\"} / (DCGM_FI_DEV_FB_USED{pod=~\"$pod\", namespace=\"foxhunt\"} + DCGM_FI_DEV_FB_FREE{pod=~\"$pod\", namespace=\"foxhunt\"}) * 100",
"legendFormat": "",
"refId": "A"
}
],
"title": "VRAM Used",
"type": "gauge"
},
{
"collapsed": false,
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 5
},
"id": 10,
"panels": [],
"title": "CI Pipeline & Argo Workflows",
"type": "row"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "Currently running Argo workflows",
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "blue",
"value": null
}
]
},
"unit": "none"
},
"overrides": []
},
"gridPos": {
"h": 4,
"w": 3,
"x": 0,
"y": 6
},
"id": 11,
"options": {
"colorMode": "background",
"graphMode": "area",
"reduceOptions": {
"calcs": [
"lastNotNull"
]
},
"textMode": "auto"
},
"targets": [
{
"expr": "argo_workflows_gauge{status=\"Running\"}",
"legendFormat": "",
"refId": "A"
}
],
"title": "Active Workflows",
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "",
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "yellow",
"value": 3
},
{
"color": "red",
"value": 10
}
]
},
"unit": "none"
},
"overrides": []
},
"gridPos": {
"h": 4,
"w": 3,
"x": 3,
"y": 6
},
"id": 12,
"options": {
"colorMode": "background",
"graphMode": "area",
"reduceOptions": {
"calcs": [
"lastNotNull"
]
},
"textMode": "auto"
},
"targets": [
{
"expr": "argo_workflows_pod_pending_count",
"legendFormat": "",
"refId": "A"
}
],
"title": "Pending Pods",
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "",
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
}
]
},
"unit": "none"
},
"overrides": []
},
"gridPos": {
"h": 4,
"w": 3,
"x": 6,
"y": 6
},
"id": 13,
"options": {
"colorMode": "background",
"graphMode": "area",
"reduceOptions": {
"calcs": [
"lastNotNull"
]
},
"textMode": "auto"
},
"targets": [
{
"expr": "argo_workflows_total_count{status=\"Succeeded\"}",
"legendFormat": "",
"refId": "A"
}
],
"title": "Total Completed",
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "",
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 1
}
]
},
"unit": "none"
},
"overrides": []
},
"gridPos": {
"h": 4,
"w": 3,
"x": 9,
"y": 6
},
"id": 14,
"options": {
"colorMode": "background",
"graphMode": "area",
"reduceOptions": {
"calcs": [
"lastNotNull"
]
},
"textMode": "auto"
},
"targets": [
{
"expr": "argo_workflows_error_count",
"legendFormat": "",
"refId": "A"
}
],
"title": "Errors",
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "Average workflow operation duration",
"fieldConfig": {
"defaults": {
"custom": {
"fillOpacity": 0,
"lineWidth": 1,
"spanNulls": true,
"stacking": {
"mode": "none"
}
},
"unit": "s"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 6,
"x": 12,
"y": 6
},
"id": 15,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"targets": [
{
"expr": "rate(argo_workflows_operation_duration_seconds_sum[5m]) / rate(argo_workflows_operation_duration_seconds_count[5m])",
"legendFormat": "Avg Duration",
"refId": "A"
}
],
"title": "Workflow Duration",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "Argo controller K8s API calls \u2014 high rates may indicate thrashing",
"fieldConfig": {
"defaults": {
"custom": {
"fillOpacity": 0,
"lineWidth": 1,
"spanNulls": true,
"stacking": {
"mode": "none"
}
},
"unit": "none"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 6,
"x": 18,
"y": 6
},
"id": 16,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"targets": [
{
"expr": "rate(argo_workflows_k8s_request_total[5m])",
"legendFormat": "{{verb}} {{status_code}}",
"refId": "A"
}
],
"title": "K8s API Request Rate",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "CPU usage of selected CI/training pods",
"fieldConfig": {
"defaults": {
"custom": {
"fillOpacity": 0,
"lineWidth": 1,
"spanNulls": true,
"stacking": {
"mode": "none"
}
},
"unit": "short"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 6,
"x": 0,
"y": 10
},
"id": 17,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"targets": [
{
"expr": "rate(container_cpu_usage_seconds_total{namespace=\"foxhunt\", pod=~\"$pod\"}[5m])",
"legendFormat": "{{container}}",
"refId": "A"
}
],
"title": "CI Pod CPU",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "RSS memory of selected CI/training pods",
"fieldConfig": {
"defaults": {
"custom": {
"fillOpacity": 0,
"lineWidth": 1,
"spanNulls": true,
"stacking": {
"mode": "none"
}
},
"unit": "bytes"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 6,
"x": 6,
"y": 10
},
"id": 18,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"targets": [
{
"expr": "container_memory_rss{namespace=\"foxhunt\", pod=~\"$pod\"}",
"legendFormat": "{{container}}",
"refId": "A"
}
],
"title": "CI Pod Memory",
"type": "timeseries"
},
{
"collapsed": false,
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 17
},
"id": 19,
"panels": [],
"title": "CI Logs",
"type": "row"
},
{
"datasource": {
"type": "loki",
"uid": "${DS_LOKI}"
},
"description": "All logs from selected CI/training pods",
"gridPos": {
"h": 9,
"w": 12,
"x": 0,
"y": 18
},
"id": 20,
"options": {
"dedupStrategy": "none",
"enableLogDetails": true,
"prettifyLogMessage": false,
"showCommonLabels": false,
"showLabels": false,
"showTime": true,
"sortOrder": "Descending",
"wrapLogMessage": true
},
"targets": [
{
"expr": "{namespace=\"foxhunt\", pod=~\"$pod\"} |~ \"$search\" | pattern `<_> <_> <_> <content>` | regexp `msg=\"(?P<clean_msg>[^\"]*)\"` | line_format `{{if .clean_msg}}{{.clean_msg}}{{else}}{{.content}}{{end}}` | drop content, clean_msg",
"refId": "A"
}
],
"title": "CI Full Log Stream",
"type": "logs"
},
{
"datasource": {
"type": "loki",
"uid": "${DS_LOKI}"
},
"description": "Rust compile output, test results, clippy warnings",
"gridPos": {
"h": 9,
"w": 12,
"x": 12,
"y": 18
},
"id": 21,
"options": {
"dedupStrategy": "none",
"enableLogDetails": true,
"prettifyLogMessage": false,
"showCommonLabels": false,
"showLabels": false,
"showTime": true,
"sortOrder": "Descending",
"wrapLogMessage": true
},
"targets": [
{
"expr": "{namespace=\"foxhunt\", pod=~\"$pod\"} |~ \"(?i)(cargo (build|test|check|clippy)|Compiling|Finished|running \\\\d+ test|test result|FAILED|passed|warning:)\" | pattern `<_> <_> <_> <content>` | regexp `msg=\"(?P<clean_msg>[^\"]*)\"` | line_format `{{if .clean_msg}}{{.clean_msg}}{{else}}{{.content}}{{end}}` | drop content, clean_msg",
"refId": "A"
}
],
"title": "Compile & Test Results",
"type": "logs"
},
{
"datasource": {
"type": "loki",
"uid": "${DS_LOKI}"
},
"description": "S3 binary uploads, kubectl deploys, image builds",
"gridPos": {
"h": 9,
"w": 12,
"x": 0,
"y": 27
},
"id": 22,
"options": {
"dedupStrategy": "none",
"enableLogDetails": true,
"prettifyLogMessage": false,
"showCommonLabels": false,
"showLabels": false,
"showTime": true,
"sortOrder": "Descending",
"wrapLogMessage": true
},
"targets": [
{
"expr": "{namespace=\"foxhunt\", pod=~\"$pod\"} |~ \"(?i)(rclone|s3://|upload|download|kubectl|rollout|image|docker|kaniko|configmap)\" | pattern `<_> <_> <_> <content>` | regexp `msg=\"(?P<clean_msg>[^\"]*)\"` | line_format `{{if .clean_msg}}{{.clean_msg}}{{else}}{{.content}}{{end}}` | drop content, clean_msg",
"refId": "A"
}
],
"title": "Build Artifacts & Deploy",
"type": "logs"
},
{
"datasource": {
"type": "loki",
"uid": "${DS_LOKI}"
},
"description": "Data fetching, redis cache, dbn file operations",
"gridPos": {
"h": 9,
"w": 12,
"x": 12,
"y": 27
},
"id": 23,
"options": {
"dedupStrategy": "none",
"enableLogDetails": true,
"prettifyLogMessage": false,
"showCommonLabels": false,
"showLabels": false,
"showTime": true,
"sortOrder": "Descending",
"wrapLogMessage": true
},
"targets": [
{
"expr": "{namespace=\"foxhunt\", pod=~\"$pod\"} |~ \"(?i)(redis|rclone|dbn|data|cache|download|decompress)\" | pattern `<_> <_> <_> <content>` | regexp `msg=\"(?P<clean_msg>[^\"]*)\"` | line_format `{{if .clean_msg}}{{.clean_msg}}{{else}}{{.content}}{{end}}` | drop content, clean_msg",
"refId": "A"
}
],
"title": "Redis Sidecar & Data",
"type": "logs"
},
{
"collapsed": false,
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 36
},
"id": 24,
"panels": [],
"title": "Training Curves",
"type": "row"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "Training and validation loss over time",
"fieldConfig": {
"defaults": {
"custom": {
"fillOpacity": 0,
"lineWidth": 1,
"spanNulls": true,
"stacking": {
"mode": "none"
}
},
"unit": "none"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 8,
"x": 0,
"y": 37
},
"id": 25,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"targets": [
{
"expr": "foxhunt_training_epoch_loss{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "Train Loss",
"refId": "A"
},
{
"expr": "foxhunt_training_validation_loss{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "Val Loss",
"refId": "B"
}
],
"title": "Loss & Validation Loss",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "Learning rate schedule",
"fieldConfig": {
"defaults": {
"custom": {
"fillOpacity": 0,
"lineWidth": 1,
"spanNulls": true,
"stacking": {
"mode": "none"
}
},
"unit": "none"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 8,
"x": 8,
"y": 37
},
"id": 26,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"targets": [
{
"expr": "foxhunt_training_learning_rate{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "LR",
"refId": "A"
}
],
"title": "Learning Rate",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "Gradient L2 norm \u2014 spikes indicate instability",
"fieldConfig": {
"defaults": {
"custom": {
"fillOpacity": 0,
"lineWidth": 1,
"spanNulls": true,
"stacking": {
"mode": "none"
}
},
"unit": "none"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 8,
"x": 16,
"y": 37
},
"id": 27,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"targets": [
{
"expr": "foxhunt_training_gradient_norm{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "Grad Norm",
"refId": "A"
}
],
"title": "Gradient Norm",
"type": "timeseries"
},
{
"collapsed": false,
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 44
},
"id": 28,
"panels": [],
"title": "Trading Performance",
"type": "row"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "Risk-adjusted return metrics per epoch",
"fieldConfig": {
"defaults": {
"custom": {
"fillOpacity": 0,
"lineWidth": 1,
"spanNulls": true,
"stacking": {
"mode": "none"
}
},
"unit": "none"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 8,
"x": 0,
"y": 45
},
"id": 29,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"targets": [
{
"expr": "foxhunt_training_epoch_sharpe{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "Sharpe",
"refId": "A"
},
{
"expr": "foxhunt_training_epoch_sortino{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "Sortino",
"refId": "B"
},
{
"expr": "foxhunt_training_epoch_max_drawdown{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "MaxDD",
"refId": "C"
}
],
"title": "Sharpe / Sortino / MaxDD",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "",
"fieldConfig": {
"defaults": {
"custom": {
"fillOpacity": 0,
"lineWidth": 1,
"spanNulls": true,
"stacking": {
"mode": "none"
}
},
"unit": "none"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 8,
"x": 8,
"y": 45
},
"id": 30,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"targets": [
{
"expr": "foxhunt_training_epoch_win_rate{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "Win Rate",
"refId": "A"
},
{
"expr": "foxhunt_training_epoch_profit_factor{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "Profit Factor",
"refId": "B"
}
],
"title": "Win Rate & Profit Factor",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "",
"fieldConfig": {
"defaults": {
"custom": {
"fillOpacity": 0,
"lineWidth": 1,
"spanNulls": true,
"stacking": {
"mode": "none"
}
},
"unit": "none"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 8,
"x": 16,
"y": 45
},
"id": 31,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"targets": [
{
"expr": "foxhunt_training_epoch_total_return{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "Total Return",
"refId": "A"
},
{
"expr": "foxhunt_training_epoch_avg_return{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "Avg Return",
"refId": "B"
}
],
"title": "Total Return & Avg Return",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "Action distribution per epoch \u2014 watch for collapse to single action",
"fieldConfig": {
"defaults": {
"custom": {
"fillOpacity": 30,
"lineWidth": 1,
"spanNulls": true,
"stacking": {
"mode": "normal"
}
},
"max": 1,
"min": 0,
"unit": "percentunit"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 8,
"x": 0,
"y": 52
},
"id": 32,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"targets": [
{
"expr": "foxhunt_training_epoch_action_buy_pct{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "Buy %",
"refId": "A"
},
{
"expr": "foxhunt_training_epoch_action_hold_pct{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "Hold %",
"refId": "B"
},
{
"expr": "foxhunt_training_epoch_action_sell_pct{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "Sell %",
"refId": "C"
}
],
"title": "Action Distribution",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "Higher entropy = more exploration. Collapse \u2192 policy degeneration",
"fieldConfig": {
"defaults": {
"custom": {
"fillOpacity": 0,
"lineWidth": 1,
"spanNulls": true,
"stacking": {
"mode": "none"
}
},
"unit": "none"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 8,
"x": 8,
"y": 52
},
"id": 33,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"targets": [
{
"expr": "foxhunt_training_action_entropy{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "Entropy",
"refId": "A"
},
{
"expr": "foxhunt_training_action_diversity{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "Diversity",
"refId": "B"
}
],
"title": "Action Entropy & Diversity",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "",
"fieldConfig": {
"defaults": {
"custom": {
"fillOpacity": 0,
"lineWidth": 1,
"spanNulls": true,
"stacking": {
"mode": "none"
}
},
"unit": "none"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 8,
"x": 16,
"y": 52
},
"id": 34,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"targets": [
{
"expr": "foxhunt_training_epoch_total_trades{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "Trades/Epoch",
"refId": "A"
}
],
"title": "Total Trades",
"type": "timeseries"
},
{
"collapsed": false,
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 59
},
"id": 35,
"panels": [],
"title": "Evaluation Metrics",
"type": "row"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "",
"fieldConfig": {
"defaults": {
"custom": {
"fillOpacity": 0,
"lineWidth": 1,
"spanNulls": true,
"stacking": {
"mode": "none"
}
},
"max": 1,
"min": 0,
"unit": "percentunit"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 6,
"x": 0,
"y": 60
},
"id": 36,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"targets": [
{
"expr": "foxhunt_training_eval_accuracy{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "Accuracy",
"refId": "A"
}
],
"title": "Eval Accuracy",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "Classification quality of directional predictions",
"fieldConfig": {
"defaults": {
"custom": {
"fillOpacity": 0,
"lineWidth": 1,
"spanNulls": true,
"stacking": {
"mode": "none"
}
},
"max": 1,
"min": 0,
"unit": "percentunit"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 6,
"x": 6,
"y": 60
},
"id": 37,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"targets": [
{
"expr": "foxhunt_training_eval_precision{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "Precision",
"refId": "A"
},
{
"expr": "foxhunt_training_eval_recall{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "Recall",
"refId": "B"
},
{
"expr": "foxhunt_training_eval_f1{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "F1",
"refId": "C"
}
],
"title": "Precision / Recall / F1",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "DQN Q-value estimates \u2014 divergence from max indicates overestimation",
"fieldConfig": {
"defaults": {
"custom": {
"fillOpacity": 0,
"lineWidth": 1,
"spanNulls": true,
"stacking": {
"mode": "none"
}
},
"unit": "none"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 6,
"x": 12,
"y": 60
},
"id": 38,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"targets": [
{
"expr": "foxhunt_training_q_value_mean{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "Q Mean",
"refId": "A"
},
{
"expr": "foxhunt_training_q_value_max{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "Q Max",
"refId": "B"
}
],
"title": "Q-Values (DQN)",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "Ratio > 1 = Q-values overestimate true returns",
"fieldConfig": {
"defaults": {
"custom": {
"fillOpacity": 0,
"lineWidth": 1,
"spanNulls": true,
"stacking": {
"mode": "none"
}
},
"unit": "none"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 6,
"x": 18,
"y": 60
},
"id": 39,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"targets": [
{
"expr": "foxhunt_training_q_overestimation_ratio{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "Overestimation Ratio",
"refId": "A"
}
],
"title": "Q-Overestimation & Replay Buffer",
"type": "timeseries"
},
{
"collapsed": false,
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 67
},
"id": 40,
"panels": [],
"title": "GPU & Hardware",
"type": "row"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "Overall GPU and graphics engine utilization",
"fieldConfig": {
"defaults": {
"custom": {
"fillOpacity": 10,
"lineWidth": 1,
"spanNulls": true,
"stacking": {
"mode": "none"
}
},
"max": 100,
"min": 0,
"unit": "percent"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 6,
"x": 0,
"y": 68
},
"id": 41,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"targets": [
{
"expr": "DCGM_FI_DEV_GPU_UTIL{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "GPU %",
"refId": "A"
},
{
"expr": "DCGM_FI_PROF_GR_ENGINE_ACTIVE{pod=~\"$pod\", namespace=\"foxhunt\"} * 100",
"legendFormat": "GR Engine %",
"refId": "B"
}
],
"title": "GPU Utilization",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "Tensor core and DRAM bandwidth utilization \u2014 key H100 saturation indicators",
"fieldConfig": {
"defaults": {
"custom": {
"fillOpacity": 10,
"lineWidth": 1,
"spanNulls": true,
"stacking": {
"mode": "none"
}
},
"max": 100,
"min": 0,
"unit": "percent"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 6,
"x": 6,
"y": 68
},
"id": 42,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"targets": [
{
"expr": "DCGM_FI_PROF_PIPE_TENSOR_ACTIVE{pod=~\"$pod\", namespace=\"foxhunt\"} * 100",
"legendFormat": "Tensor Cores %",
"refId": "A"
},
{
"expr": "DCGM_FI_PROF_DRAM_ACTIVE{pod=~\"$pod\", namespace=\"foxhunt\"} * 100",
"legendFormat": "DRAM Active %",
"refId": "B"
}
],
"title": "Tensor Core Activity",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "GPU framebuffer memory usage",
"fieldConfig": {
"defaults": {
"custom": {
"fillOpacity": 20,
"lineWidth": 1,
"spanNulls": true,
"stacking": {
"mode": "normal"
}
},
"unit": "decmbytes"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 6,
"x": 12,
"y": 68
},
"id": 43,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"targets": [
{
"expr": "DCGM_FI_DEV_FB_USED{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "Used (MiB)",
"refId": "A"
},
{
"expr": "DCGM_FI_DEV_FB_FREE{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "Free (MiB)",
"refId": "B"
}
],
"title": "VRAM (Framebuffer)",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "Thermal throttling starts at ~83\u00b0C on H100",
"fieldConfig": {
"defaults": {
"custom": {
"fillOpacity": 0,
"lineWidth": 1,
"spanNulls": true,
"stacking": {
"mode": "none"
}
},
"unit": "celsius"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 6,
"x": 18,
"y": 68
},
"id": 44,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"targets": [
{
"expr": "DCGM_FI_DEV_GPU_TEMP{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "GPU Temp",
"refId": "A"
},
{
"expr": "DCGM_FI_DEV_MEMORY_TEMP{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "Memory Temp",
"refId": "B"
}
],
"title": "GPU Temperature",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "GPU power draw \u2014 H100 TDP is 700W",
"fieldConfig": {
"defaults": {
"custom": {
"fillOpacity": 0,
"lineWidth": 1,
"spanNulls": true,
"stacking": {
"mode": "none"
}
},
"unit": "watt"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 6,
"x": 0,
"y": 75
},
"id": 45,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"targets": [
{
"expr": "DCGM_FI_DEV_POWER_USAGE{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "Power (W)",
"refId": "A"
}
],
"title": "Power Usage",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "PCIe bandwidth \u2014 high RX during data loading, high TX during checkpoint saves",
"fieldConfig": {
"defaults": {
"custom": {
"fillOpacity": 0,
"lineWidth": 1,
"spanNulls": true,
"stacking": {
"mode": "none"
}
},
"unit": "Bps"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 6,
"x": 6,
"y": 75
},
"id": 46,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"targets": [
{
"expr": "rate(DCGM_FI_PROF_PCIE_TX_BYTES{pod=~\"$pod\", namespace=\"foxhunt\"}[1m])",
"legendFormat": "TX",
"refId": "A"
},
{
"expr": "rate(DCGM_FI_PROF_PCIE_RX_BYTES{pod=~\"$pod\", namespace=\"foxhunt\"}[1m])",
"legendFormat": "RX",
"refId": "B"
}
],
"title": "PCIe Throughput",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "Clock throttling indicates thermal or power issues",
"fieldConfig": {
"defaults": {
"custom": {
"fillOpacity": 0,
"lineWidth": 1,
"spanNulls": true,
"stacking": {
"mode": "none"
}
},
"unit": "clockhertz"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 6,
"x": 12,
"y": 75
},
"id": 47,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"targets": [
{
"expr": "DCGM_FI_DEV_SM_CLOCK{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "SM Clock",
"refId": "A"
},
{
"expr": "DCGM_FI_DEV_MEM_CLOCK{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "Mem Clock",
"refId": "B"
}
],
"title": "SM & Memory Clock",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "",
"fieldConfig": {
"defaults": {
"custom": {
"fillOpacity": 10,
"lineWidth": 1,
"spanNulls": true,
"stacking": {
"mode": "none"
}
},
"max": 100,
"min": 0,
"unit": "percent"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 6,
"x": 18,
"y": 75
},
"id": 48,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"targets": [
{
"expr": "DCGM_FI_DEV_MEM_COPY_UTIL{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "Mem Copy %",
"refId": "A"
}
],
"title": "Memory Copy Utilization",
"type": "timeseries"
},
{
"collapsed": false,
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 82
},
"id": 49,
"panels": [],
"title": "Throughput & Performance",
"type": "row"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "Training throughput \u2014 higher is better",
"fieldConfig": {
"defaults": {
"custom": {
"fillOpacity": 0,
"lineWidth": 1,
"spanNulls": true,
"stacking": {
"mode": "none"
}
},
"unit": "none"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 6,
"x": 0,
"y": 83
},
"id": 50,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"targets": [
{
"expr": "foxhunt_training_batches_per_second{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "Batches/s",
"refId": "A"
}
],
"title": "Batches / Second",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "Wall-clock time per epoch",
"fieldConfig": {
"defaults": {
"custom": {
"fillOpacity": 0,
"lineWidth": 1,
"spanNulls": true,
"stacking": {
"mode": "none"
}
},
"unit": "s"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 6,
"x": 6,
"y": 83
},
"id": 51,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"targets": [
{
"expr": "foxhunt_training_epoch_duration_seconds{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "Epoch Time",
"refId": "A"
}
],
"title": "Epoch Duration",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "Per-step training iteration time",
"fieldConfig": {
"defaults": {
"custom": {
"fillOpacity": 0,
"lineWidth": 1,
"spanNulls": true,
"stacking": {
"mode": "none"
}
},
"unit": "s"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 6,
"x": 12,
"y": 83
},
"id": 52,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"targets": [
{
"expr": "foxhunt_training_iteration_seconds{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "Iter Time",
"refId": "A"
}
],
"title": "Iteration Time",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"fieldConfig": {
"defaults": {},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 6,
"x": 18,
"y": 83
},
"id": 53,
"options": {
"calculate": false,
"cellGap": 1,
"color": {
"mode": "scheme",
"scheme": "Oranges"
},
"yAxis": {
"unit": "s"
}
},
"targets": [
{
"expr": "rate(foxhunt_training_data_load_seconds_bucket{pod=~\"$pod\", namespace=\"foxhunt\"}[$__rate_interval])",
"format": "heatmap",
"legendFormat": "{{le}}",
"refId": "A"
}
],
"title": "Data Load Latency",
"type": "heatmap"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "Checkpoint save count over time",
"fieldConfig": {
"defaults": {
"custom": {
"fillOpacity": 0,
"lineWidth": 1,
"spanNulls": true,
"stacking": {
"mode": "none"
}
},
"unit": "none"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 6,
"x": 0,
"y": 90
},
"id": 54,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"targets": [
{
"expr": "foxhunt_training_checkpoint_saves_total{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "Total Saves",
"refId": "A"
}
],
"title": "Checkpoint Saves",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "Checkpoint file size",
"fieldConfig": {
"defaults": {
"custom": {
"fillOpacity": 0,
"lineWidth": 1,
"spanNulls": true,
"stacking": {
"mode": "none"
}
},
"unit": "bytes"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 6,
"x": 6,
"y": 90
},
"id": 55,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"targets": [
{
"expr": "foxhunt_training_checkpoint_size_bytes{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "Size (bytes)",
"refId": "A"
}
],
"title": "Checkpoint Size & Duration",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "DQN/PER replay buffer population",
"fieldConfig": {
"defaults": {
"custom": {
"fillOpacity": 0,
"lineWidth": 1,
"spanNulls": true,
"stacking": {
"mode": "none"
}
},
"unit": "none"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 6,
"x": 12,
"y": 90
},
"id": 56,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"targets": [
{
"expr": "foxhunt_training_replay_buffer_size{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "Buffer Size",
"refId": "A"
}
],
"title": "Replay Buffer Size",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "Parallel training workers",
"fieldConfig": {
"defaults": {
"custom": {
"fillOpacity": 0,
"lineWidth": 1,
"spanNulls": true,
"stacking": {
"mode": "none"
}
},
"unit": "none"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 6,
"x": 18,
"y": 90
},
"id": 57,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"targets": [
{
"expr": "foxhunt_training_active_workers{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "Workers",
"refId": "A"
}
],
"title": "Active Workers",
"type": "timeseries"
},
{
"collapsed": false,
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 97
},
"id": 58,
"panels": [],
"title": "Hyperopt Trials",
"type": "row"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "",
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "purple",
"value": null
}
]
},
"unit": "none"
},
"overrides": []
},
"gridPos": {
"h": 4,
"w": 3,
"x": 0,
"y": 98
},
"id": 59,
"options": {
"colorMode": "background",
"graphMode": "area",
"reduceOptions": {
"calcs": [
"lastNotNull"
]
},
"textMode": "auto"
},
"targets": [
{
"expr": "foxhunt_hyperopt_trial_current{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "",
"refId": "A"
}
],
"title": "Current Trial",
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "",
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "purple",
"value": null
}
]
},
"unit": "none"
},
"overrides": []
},
"gridPos": {
"h": 4,
"w": 3,
"x": 3,
"y": 98
},
"id": 60,
"options": {
"colorMode": "background",
"graphMode": "area",
"reduceOptions": {
"calcs": [
"lastNotNull"
]
},
"textMode": "auto"
},
"targets": [
{
"expr": "foxhunt_hyperopt_trial_total{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "",
"refId": "A"
}
],
"title": "Total Trials",
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "",
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "yellow",
"value": 0.5
}
]
},
"unit": "none"
},
"overrides": []
},
"gridPos": {
"h": 4,
"w": 3,
"x": 6,
"y": 98
},
"id": 61,
"options": {
"colorMode": "background",
"graphMode": "area",
"reduceOptions": {
"calcs": [
"lastNotNull"
]
},
"textMode": "auto"
},
"targets": [
{
"expr": "foxhunt_hyperopt_trial_best_loss{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "",
"refId": "A"
}
],
"title": "Best Loss",
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "",
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "blue",
"value": null
}
]
},
"unit": "s"
},
"overrides": []
},
"gridPos": {
"h": 4,
"w": 3,
"x": 9,
"y": 98
},
"id": 62,
"options": {
"colorMode": "background",
"graphMode": "area",
"reduceOptions": {
"calcs": [
"lastNotNull"
]
},
"textMode": "auto"
},
"targets": [
{
"expr": "foxhunt_hyperopt_elapsed_seconds{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "",
"refId": "A"
}
],
"title": "Elapsed",
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "Convergence curve \u2014 should decrease over trials",
"fieldConfig": {
"defaults": {
"custom": {
"fillOpacity": 0,
"lineWidth": 1,
"spanNulls": true,
"stacking": {
"mode": "none"
}
},
"unit": "none"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 12,
"x": 12,
"y": 98
},
"id": 63,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"targets": [
{
"expr": "foxhunt_hyperopt_trial_best_loss{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "Best Loss",
"refId": "A"
},
{
"expr": "foxhunt_hyperopt_best_objective{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "Best Objective",
"refId": "B"
}
],
"title": "Best Loss Over Trials",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"fieldConfig": {
"defaults": {},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 12,
"x": 0,
"y": 102
},
"id": 64,
"options": {
"calculate": false,
"cellGap": 1,
"color": {
"mode": "scheme",
"scheme": "Oranges"
},
"yAxis": {
"unit": "s"
}
},
"targets": [
{
"expr": "rate(foxhunt_hyperopt_trial_duration_seconds_bucket{pod=~\"$pod\", namespace=\"foxhunt\"}[$__rate_interval])",
"format": "heatmap",
"legendFormat": "{{le}}",
"refId": "A"
}
],
"title": "Trial Duration Distribution",
"type": "heatmap"
},
{
"collapsed": false,
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 109
},
"id": 65,
"panels": [],
"title": "Container Resources",
"type": "row"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "CPU cores consumed by each container in the pod",
"fieldConfig": {
"defaults": {
"custom": {
"fillOpacity": 0,
"lineWidth": 1,
"spanNulls": true,
"stacking": {
"mode": "none"
}
},
"unit": "short"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 6,
"x": 0,
"y": 110
},
"id": 66,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"targets": [
{
"expr": "rate(container_cpu_usage_seconds_total{pod=~\"$pod\", namespace=\"foxhunt\", container!=\"\"}[5m])",
"legendFormat": "{{container}}",
"refId": "A"
}
],
"title": "Container CPU Usage",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "Resident set size \u2014 actual physical memory used",
"fieldConfig": {
"defaults": {
"custom": {
"fillOpacity": 0,
"lineWidth": 1,
"spanNulls": true,
"stacking": {
"mode": "none"
}
},
"unit": "bytes"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 6,
"x": 6,
"y": 110
},
"id": 67,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"targets": [
{
"expr": "container_memory_rss{pod=~\"$pod\", namespace=\"foxhunt\", container!=\"\"}",
"legendFormat": "{{container}}",
"refId": "A"
}
],
"title": "Container Memory (RSS)",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "",
"fieldConfig": {
"defaults": {
"custom": {
"fillOpacity": 0,
"lineWidth": 1,
"spanNulls": true,
"stacking": {
"mode": "none"
}
},
"unit": "Bps"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 6,
"x": 12,
"y": 110
},
"id": 68,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"targets": [
{
"expr": "rate(container_network_receive_bytes_total{pod=~\"$pod\", namespace=\"foxhunt\"}[5m])",
"legendFormat": "RX {{interface}}",
"refId": "A"
},
{
"expr": "rate(container_network_transmit_bytes_total{pod=~\"$pod\", namespace=\"foxhunt\"}[5m])",
"legendFormat": "TX {{interface}}",
"refId": "B"
}
],
"title": "Container Network I/O",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"description": "Non-zero restarts indicate OOM kills or crashes",
"fieldConfig": {
"defaults": {
"custom": {
"fillOpacity": 0,
"lineWidth": 1,
"spanNulls": true,
"stacking": {
"mode": "none"
}
},
"unit": "none"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 6,
"x": 18,
"y": 110
},
"id": 69,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"targets": [
{
"expr": "kube_pod_container_status_restarts_total{pod=~\"$pod\", namespace=\"foxhunt\"}",
"legendFormat": "{{container}}",
"refId": "A"
}
],
"title": "Pod Restarts",
"type": "timeseries"
},
{
"collapsed": false,
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 117
},
"id": 70,
"panels": [],
"title": "Live Logs",
"type": "row"
},
{
"datasource": {
"type": "loki",
"uid": "${DS_LOKI}"
},
"description": "All logs from the selected pod, filtered by level and search text",
"gridPos": {
"h": 9,
"w": 12,
"x": 0,
"y": 118
},
"id": 71,
"options": {
"dedupStrategy": "none",
"enableLogDetails": true,
"prettifyLogMessage": false,
"showCommonLabels": false,
"showLabels": false,
"showTime": true,
"sortOrder": "Descending",
"wrapLogMessage": true
},
"targets": [
{
"expr": "{namespace=\"foxhunt\", pod=~\"$pod\", level=~\"$level\"} |~ \"$search\" | pattern `<_> <_> <_> <content>` | regexp `msg=\"(?P<clean_msg>[^\"]*)\"` | line_format `{{if .clean_msg}}{{.clean_msg}}{{else}}{{.content}}{{end}}` | drop content, clean_msg",
"refId": "A"
}
],
"title": "Full Log Stream",
"type": "logs"
},
{
"datasource": {
"type": "loki",
"uid": "${DS_LOKI}"
},
"description": "Only ERROR and WARN level logs",
"gridPos": {
"h": 9,
"w": 12,
"x": 12,
"y": 118
},
"id": 72,
"options": {
"dedupStrategy": "none",
"enableLogDetails": true,
"prettifyLogMessage": false,
"showCommonLabels": false,
"showLabels": false,
"showTime": true,
"sortOrder": "Descending",
"wrapLogMessage": true
},
"targets": [
{
"expr": "{namespace=\"foxhunt\", pod=~\"$pod\", level=~\"ERROR|WARN\"} | pattern `<_> <_> <_> <content>` | regexp `msg=\"(?P<clean_msg>[^\"]*)\"` | line_format `{{if .clean_msg}}{{.clean_msg}}{{else}}{{.content}}{{end}}` | drop content, clean_msg",
"refId": "A"
}
],
"title": "Errors & Warnings",
"type": "logs"
},
{
"datasource": {
"type": "loki",
"uid": "${DS_LOKI}"
},
"description": "Log lines mentioning training metrics \u2014 epoch completions, loss values, Sharpe ratios",
"gridPos": {
"h": 9,
"w": 12,
"x": 0,
"y": 127
},
"id": 73,
"options": {
"dedupStrategy": "none",
"enableLogDetails": true,
"prettifyLogMessage": false,
"showCommonLabels": false,
"showLabels": false,
"showTime": true,
"sortOrder": "Descending",
"wrapLogMessage": true
},
"targets": [
{
"expr": "{namespace=\"foxhunt\", pod=~\"$pod\"} |~ \"(?i)(epoch|loss|sharpe|max_?dd|sortino|reward|return|accuracy|f1|precision|recall)\" | pattern `<_> <_> <_> <content>` | regexp `msg=\"(?P<clean_msg>[^\"]*)\"` | line_format `{{if .clean_msg}}{{.clean_msg}}{{else}}{{.content}}{{end}}` | drop content, clean_msg",
"refId": "A"
}
],
"title": "Training Progress (Epoch/Loss/Sharpe)",
"type": "logs"
},
{
"datasource": {
"type": "loki",
"uid": "${DS_LOKI}"
},
"description": "GPU-related log lines \u2014 CUDA errors, OOM events, NCCL issues",
"gridPos": {
"h": 9,
"w": 12,
"x": 12,
"y": 127
},
"id": 74,
"options": {
"dedupStrategy": "none",
"enableLogDetails": true,
"prettifyLogMessage": false,
"showCommonLabels": false,
"showLabels": false,
"showTime": true,
"sortOrder": "Descending",
"wrapLogMessage": true
},
"targets": [
{
"expr": "{namespace=\"foxhunt\", pod=~\"$pod\"} |~ \"(?i)(cuda|gpu|vram|oom|out.of.memory|nccl|nvrtc|tensor.core|cublas)\" | pattern `<_> <_> <_> <content>` | regexp `msg=\"(?P<clean_msg>[^\"]*)\"` | line_format `{{if .clean_msg}}{{.clean_msg}}{{else}}{{.content}}{{end}}` | drop content, clean_msg",
"refId": "A"
}
],
"title": "GPU / CUDA / OOM",
"type": "logs"
}
],
"refresh": "10s",
"schemaVersion": 39,
"tags": [
"foxhunt",
"training",
"gpu",
"loki",
"deep-dive"
],
"templating": {
"list": [
{
"current": {},
"datasource": {
"type": "loki",
"uid": "${DS_LOKI}"
},
"includeAll": true,
"label": "Pod",
"multi": true,
"name": "pod",
"query": "{namespace=\"foxhunt\", pod\\!~\"(grafana|prometheus|loki|promtail|${DS_TEMPO}|redis|postgres|mattermost|tailscale|gitlab|cilium|csi|konnectivity|nvidia-gpu|argo-workflows|questdb|web-gateway|trading-service).*\"}",
"refresh": 2,
"regex": "",
"sort": 2,
"type": "query"
},
{
"current": {},
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"includeAll": true,
"label": "Prometheus Job",
"multi": false,
"name": "prom_job",
"query": "label_values(up{namespace=\"foxhunt\"}, job)",
"refresh": 2,
"regex": "/(train|hyperopt|evaluate|pushgateway|training-pods|dcgm)/",
"sort": 1,
"type": "query"
},
{
"current": {
"text": "All",
"value": "$__all"
},
"includeAll": true,
"label": "Log Level",
"multi": true,
"name": "level",
"query": "ERROR,WARN,INFO,DEBUG,TRACE",
"type": "custom"
},
{
"current": {
"text": "",
"value": ""
},
"label": "Search",
"name": "search",
"type": "textbox"
}
]
},
"time": {
"from": "now-3h",
"to": "now"
},
"timezone": "browser",
"title": "Training Deep-Dive",
"uid": "foxhunt-training-deep-dive",
"__inputs": [
{
"name": "DS_PROMETHEUS",
"type": "datasource",
"pluginId": "prometheus"
},
{
"name": "DS_LOKI",
"type": "datasource",
"pluginId": "loki"
},
{
"name": "DS_TEMPO",
"type": "datasource",
"pluginId": "${DS_TEMPO}"
}
]
}