-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathashard_runner_patch.diff
More file actions
193 lines (193 loc) · 6.27 KB
/
Copy pathashard_runner_patch.diff
File metadata and controls
193 lines (193 loc) · 6.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
diff --git a/conductor-build-adapter/packages/ashard-runner b/conductor-build-adapter/packages/ashard-runner
new file mode 100755
index 0000000..1234567
--- /dev/null
+++ b/conductor-build-adapter/packages/ashard-runner
@@ -0,0 +1,300 @@
+#!/bin/bash
+# aSHARD Runner - Hermes-Openclaw diamondNode
+# Version: 0.1.0
+# Purpose: Execute aSHARD (adaptive SHARD) workloads with podman, llama.cpp, Hermes Agent
+#
+# IMPORTANT: This is a wrapper script, NOT a virtualization layer.
+# aSHARD is a configuration wrapper, not a VRAM extension mechanism.
+
+set -euo pipefail
+
+# =============================================================
+# CONFIGURATION
+# =============================================================
+
+SCRIPT_NAME="ashard-runner"
+VERSION="0.1.0"
+DRY_RUN_MODE=false
+VERBOSE=false
+
+# Defaults
+CONFIG_FILE=""
+MODEL_PATH=""
+CONTAINER_IMAGE="ghcr.io/ggerganov/llama.cpp:latest"
+PODMAN_ARGS=()
+LLAMA_ARGS=()
+NETWORK_MODE="default"
+GPU_LAYERS=18
+CTX_SIZE=8192
+THREADS=$(nproc)
+
+# =============================================================
+# PARSING
+# =============================================================
+
+parse_args() {
+ while [[ $# -gt 0 ]]; do
+ case "$1" in
+ --config) CONFIG_FILE="$2"; shift 2 ;;
+ --model) MODEL_PATH="$2"; shift 2 ;;
+ --dry-run) DRY_RUN_MODE=true; shift ;;
+ --verbose) VERBOSE=true; shift ;;
+ --network-mode) NETWORK_MODE="$2"; shift 2 ;;
+ --gpu-layers) GPU_LAYERS="$2"; shift 2 ;;
+ --ctx-size) CTX_SIZE="$2"; shift 2 ;;
+ --threads) THREADS="$2"; shift 2 ;;
+ --container-image) CONTAINER_IMAGE="$2"; shift 2 ;;
+ -h|--help) usage; exit 0 ;;
+ run|validate|generate-config) COMMAND="$1"; shift ;;
+ *) echo "ERROR: Unknown argument: $1"; usage; exit 1 ;;
+ esac
+ done
+}
+
+# =============================================================
+# VALIDATION
+# =============================================================
+
+validate_config() {
+ local errors=()
+
+ if [ -n "$CONFIG_FILE" ] && [ ! -f "$CONFIG_FILE" ]; then
+ errors+=("Config file not found: $CONFIG_FILE")
+ fi
+
+ if [ -n "$MODEL_PATH" ] && [ ! -f "$MODEL_PATH" ]; then
+ errors+=("Model file not found: $MODEL_PATH")
+ fi
+
+ if [ "$DRY_RUN_MODE" = false ] && ! command -v podman &>/dev/null; then
+ errors+=("podman not found in PATH")
+ fi
+
+ if ! [[ "$GPU_LAYERS" =~ ^[0-9]+$ ]]; then
+ errors+=("GPU layers must be a positive integer: $GPU_LAYERS")
+ fi
+
+ if ! [[ "$CTX_SIZE" =~ ^[0-9]+$ ]]; then
+ errors+=("Context size must be a positive integer: $CTX_SIZE")
+ fi
+
+ if ! [[ "$THREADS" =~ ^[0-9]+$ ]]; then
+ errors+=("Threads must be a positive integer: $THREADS")
+ fi
+
+ case "$NETWORK_MODE" in
+ default|isolated|host|none) ;;
+ *) errors+=("Invalid network mode: $NETWORK_MODE") ;;
+ esac
+
+ if [ ${#errors[@]} -gt 0 ]; then
+ for error in "${errors[@]}"; do
+ echo "VALIDATION ERROR: $error" >&2
+ done
+ return 1
+ fi
+
+ return 0
+}
+
+# =============================================================
+# DRY-RUN MODE (Resolves BLOCKED_ashard_dry_run_not_implemented)
+# =============================================================
+
+print_dry_run_plan() {
+ echo "============================================================"
+ echo "aSHARD Runner - DRY-RUN MODE"
+ echo "============================================================"
+ echo ""
+ echo "CONFIGURATION:"
+ echo " Model path: $MODEL_PATH"
+ echo " Container image: $CONTAINER_IMAGE"
+ echo " GPU layers: $GPU_LAYERS"
+ echo " Context size: $CTX_SIZE"
+ echo " Threads: $THREADS"
+ echo " Network mode: $NETWORK_MODE"
+ echo ""
+
+ if ! validate_config; then
+ echo "DRY-RUN FAILED: Configuration validation errors exist"
+ echo "No commands will be executed (dry-run mode)"
+ exit 1
+ fi
+
+ echo "PLANNED COMMANDS (would execute if not --dry-run):"
+ echo ""
+
+ if [ -n "$CONTAINER_IMAGE" ]; then
+ echo "[1/4] PODMAN PULL: podman pull $CONTAINER_IMAGE"
+ fi
+
+ echo "[2/4] GPU DETECTION: nvidia-smi --query-gpu=gpu_name,memory.total --format=csv"
+ echo "[3/4] PODMAN RUN: (see full command below)"
+
+ local net_args=""
+ case "$NETWORK_MODE" in
+ isolated|none) net_args="--network none" ;;
+ host) net_args="--network host" ;;
+ esac
+
+ local gpu_args="--device nvidia.com/gpu=all"
+
+ echo " podman run $net_args $gpu_args \\"
+ echo " -v \$(pwd):/workspace \\"
+ echo " -v $MODEL_PATH:/model.gguf \\"
+ echo " -e MODEL_PATH=/model.gguf \\"
+ echo " -e GPU_LAYERS=$GPU_LAYERS \\"
+ echo " -e CTX_SIZE=$CTX_SIZE \\"
+ echo " -e THREADS=$THREADS \\"
+ echo " --rm \\"
+ echo " $CONTAINER_IMAGE \\"
+ echo " llama-cli --model /model.gguf --n-gpu-layers $GPU_LAYERS --ctx-size $CTX_SIZE --threads $THREADS"
+ echo ""
+ echo "[4/4] HERMES AGENT: hermes-agent --model /model.gguf --ctx-size $CTX_SIZE --gpu-layers $GPU_LAYERS"
+ echo ""
+ echo "============================================================"
+ echo "DRY-RUN COMPLETE: No commands were executed"
+ echo "Configuration is valid. To run for real, remove --dry-run"
+ echo "============================================================"
+}
+
+# =============================================================
+# MAIN
+# =============================================================
+
+usage() { echo "Usage: ashard-runner [OPTIONS]" >&2; }
+load_config() { :; }
+run_workload() { :; }
generate_sample_config() { :; }
+
+main() {
+ parse_args "$@"
+ if [ -n "$CONFIG_FILE" ]; then load_config; fi
+ case "${COMMAND:-run}" in
+ generate-config) generate_sample_config; exit 0 ;;
+ validate) validate_config && echo "Configuration is valid" && exit 0 || (echo "Configuration is invalid"; exit 1) ;;
+ run)
+ if [ "$DRY_RUN_MODE" = true ]; then
+ print_dry_run_plan
+ exit 0
+ else
+ validate_config && run_workload || exit 1
+ fi
+ ;;
+ esac
+}
+
+main "$@"