summaryrefslogtreecommitdiff
path: root/hyperstack-vm2.toml
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-05-25 20:05:15 +0300
committerPaul Buetow <paul@buetow.org>2026-05-25 20:05:15 +0300
commit4fd86fbc75670878308fd6a56b7778334b52ccd8 (patch)
tree1f2a611c41248844d9f7e32f4bb78760001cc8cb /hyperstack-vm2.toml
parentaa298b3d85a7f4ee7f1e1b4a3192421b95f67828 (diff)
refactor(manager): extract focused collaborators from Manager God Class
Extract VM lifecycle, SSH execution, WireGuard setup, model switching, end-to-end inference tests, and provisioning orchestration into separate collaborator classes. Manager becomes a thin facade (~80 lines). Also fixes CLI edge-cases: status/model-list when no VMs are active, and threads --vllm/--ollama flags through the provisioning pipeline.
Diffstat (limited to 'hyperstack-vm2.toml')
-rw-r--r--hyperstack-vm2.toml29
1 files changed, 14 insertions, 15 deletions
diff --git a/hyperstack-vm2.toml b/hyperstack-vm2.toml
index f895bfc..b0211b2 100644
--- a/hyperstack-vm2.toml
+++ b/hyperstack-vm2.toml
@@ -13,13 +13,13 @@ name_prefix = "hyperstack2"
hostname = "hyperstack2"
environment_name = "snonux-ollama"
-# A100-80GB for Qwen3.6 27B; H100 fallback if n3-A100x1 unavailable.
-flavor_name = "n3-H100x1"
+# A100-80GB for Gemma 4 31B; H100 fallback if n3-A100x1 unavailable.
+flavor_name = "n3-A100x1"
image_name = "Ubuntu Server 24.04 LTS R570 CUDA 12.8 with Docker"
assign_floating_ip = true
create_bootable_volume = false
enable_port_randomization = false
-labels = ["qwen36-27b", "wireguard"]
+labels = ["gemma4-31b", "wireguard"]
[ssh]
username = "ubuntu"
@@ -58,23 +58,22 @@ context_length = 32768
pull_models = ["qwen36-27b"]
# vLLM serves one model via Docker on the OpenAI-compatible API.
-# VM2 defaults to Qwen3.6 27B; use 'model switch' to load any other preset.
-# Official Qwen3.6 guidance recommends vLLM >=0.19.0 with qwen3 reasoning parsing and
-# qwen3_coder tool parsing. The official FP8 checkpoint is the primary default here.
+# VM2 defaults to Gemma 4 31B; use 'model switch' to load any other preset.
[vllm]
install = true
-model = "Qwen/Qwen3.6-27B-FP8"
+model = "cyankiwi/gemma-4-31B-it-AWQ-4bit"
# HuggingFace model cache on ephemeral NVMe (fast; survives reboots on most providers).
hug_cache_dir = "/ephemeral/hug"
-container_name = "vllm_qwen36_27b"
-# Qwen3.6-27B-FP8: official FP8 checkpoint with native 262K context on a single 80 GB GPU.
-max_model_len = 262144
-# H100 needs 0.95 to fit Mamba cache blocks; A100 worked at 0.92.
-gpu_memory_utilization = 0.95
+container_name = "vllm_gemma4_31b"
+max_model_len = 131072
+gpu_memory_utilization = 0.92
tensor_parallel_size = 1
-tool_call_parser = "qwen3_coder"
-# --max-num-seqs 817 caps concurrent sequences to fit Mamba cache blocks on H100.
-extra_vllm_args = ["--reasoning-parser", "qwen3", "--max-num-seqs", "817"]
+tool_call_parser = "gemma4"
+# Gemma 4 requires a newer transformers and nightly vLLM image.
+docker_image = "vllm/vllm-openai:nightly"
+pre_start_cmd = "pip install -q transformers==5.5.0 2>/dev/null"
+extra_docker_env = ["CUDA_VISIBLE_DEVICES=0"]
+extra_vllm_args = []
# Named model presets for 'ruby hyperstack.rb --vm 2 model switch <name>'.
# Core model fields override the matching [vllm] values; preset-only extras such as