# GLM Visual Runtime Deployment Report ## Summary `glm-5.2-visual-runtime` is a training-free multimodal model gateway. It exposes an OpenAI-compatible model ID while routing text reasoning to GLM-5.2 and visual work to persistent visual variables and lazy lenses. This repo is ready as a one-click all-local deployment manifest. It does not duplicate the upstream checkpoint weight shards because the official checkpoints are pulled from Hugging Face during deployment: - BF16: `zai-org/GLM-5.2` - FP8: `zai-org/GLM-5.2-FP8` - Vision / omni: `Qwen/Qwen3-Omni-30B-A3B-Instruct` - Optional alternate reasoning: `Qwen/Qwen3.6-27B` For one-click deployment, run `one_click/docker-compose.all-local.yml`. It starts the gateway, local GLM-5.2 vLLM, local Qwen Omni vLLM-Omni, local OCR, PostgreSQL, and MinIO. ## Deployment Topology ```text OpenAI client -> glm-5.2-visual-runtime gateway -> local reasoning model vLLM serving zai-org/GLM-5.2-FP8 -> local vision model vLLM-Omni serving Qwen/Qwen3-Omni-30B-A3B-Instruct -> local OCR container repo-built OCR service -> local persistence PostgreSQL + MinIO ``` ## vLLM Requirements - vLLM `>= 0.23.0` or `vllm/vllm-openai:glm52`. - Multi-GPU server suitable for a 753B-class MoE FP8 model. - Hugging Face access to `zai-org/GLM-5.2-FP8`. - Hugging Face access to `Qwen/Qwen3-Omni-30B-A3B-Instruct`. - Optional Hugging Face access to `Qwen/Qwen3.6-27B`. - OpenAI-compatible vLLM port, default `8001` in the included examples. ## One-Click Command ```bash cp one_click/.env.all-local.example one_click/.env.all-local docker compose -f one_click/docker-compose.all-local.yml --env-file one_click/.env.all-local up --build ``` ## Reasoning vLLM Command ```bash vllm serve zai-org/GLM-5.2-FP8 \ --served-model-name glm-5.2 \ --kv-cache-dtype fp8 \ --tensor-parallel-size 8 \ --speculative-config.method mtp \ --speculative-config.num_speculative_tokens 5 \ --tool-call-parser glm47 \ --reasoning-parser glm45 \ --enable-auto-tool-choice ``` ## Vision / Omni vLLM Command ```bash vllm serve Qwen/Qwen3-Omni-30B-A3B-Instruct \ --omni \ --served-model-name qwen3-omni \ --tensor-parallel-size 2 \ --limit-mm-per-prompt '{"image": 8, "video": 1, "audio": 1}' ``` ## Optional Qwen3.6-27B Reasoning Command ```bash vllm serve Qwen/Qwen3.6-27B \ --served-model-name qwen3.6-27b \ --tensor-parallel-size 2 \ --max-model-len 262144 \ --reasoning-parser qwen3 \ --enable-auto-tool-choice \ --tool-call-parser qwen3_coder ``` ## Gateway Environment For All-Local Mode ```bash GLM_BASE_URL=http://glm52-vllm:8000/v1 GLM_MODEL=glm-5.2 VISION_BASE_URL=http://vision-vllm:8000/v1 VISION_MODEL=qwen3-omni OCR_BASE_URL=http://ocr:8080 VISUAL_RUNTIME_MODE=local ``` ## Single-Repo Weights Bundle The deployment package includes `weights_manifest.json` and `scripts/materialize_weights.py`. To physically place all required model weights in this same repo: ```bash pip install huggingface_hub python scripts/materialize_weights.py --profile glm52_plus_qwen_omni hf upload-large-folder wassemgtk/glm-5.2-visual-runtime models --type model ``` Alternate all-Qwen profile: ```bash python scripts/materialize_weights.py --profile qwen36_plus_qwen_omni hf upload-large-folder wassemgtk/glm-5.2-visual-runtime models --type model ``` These downloads are large. Confirm Hugging Face quota, local disk, and upload time before materializing full checkpoints. ## Current Acceptance Status - Training-free runtime: complete. - HF model report: complete. - HF Docker Space: running in deterministic test mode. - OpenAI SDK compatibility: smoke-tested. - Standard vLLM reasoning deployment files: included. - Local Qwen Omni vLLM deployment files: included. - Single-repo checkpoint materialization manifest/script: included. - Local OCR container source: included. - All-local one-click Compose profile: included. ## Important Constraint Do not run: ```bash vllm serve wassemgtk/glm-5.2-visual-runtime ``` This repo is a runtime deployment package. Run the included one-click compose profile; it pulls `zai-org/GLM-5.2-FP8` and `Qwen/Qwen3-Omni-30B-A3B-Instruct` as part of deployment, or materialize `models/` if you want the checkpoint files stored in the same repo.