{ "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 `<_> <_> <_> ` | regexp `msg=\"(?P[^\"]*)\"` | 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 `<_> <_> <_> ` | regexp `msg=\"(?P[^\"]*)\"` | 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 `<_> <_> <_> ` | regexp `msg=\"(?P[^\"]*)\"` | 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 `<_> <_> <_> ` | regexp `msg=\"(?P[^\"]*)\"` | 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 `<_> <_> <_> ` | regexp `msg=\"(?P[^\"]*)\"` | 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 `<_> <_> <_> ` | regexp `msg=\"(?P[^\"]*)\"` | 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 `<_> <_> <_> ` | regexp `msg=\"(?P[^\"]*)\"` | 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 `<_> <_> <_> ` | regexp `msg=\"(?P[^\"]*)\"` | 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}" } ] }