{"id":1739,"date":"2026-08-19T13:06:31","date_gmt":"2026-08-19T13:06:31","guid":{"rendered":"https:\/\/blog-en.openzeka.com\/?p=1739"},"modified":"2026-08-19T13:06:31","modified_gmt":"2026-08-19T13:06:31","slug":"running-glm-5-2-on-four-dgx-sparks","status":"publish","type":"post","link":"https:\/\/blog.openzeka.com\/en\/running-glm-5-2-on-four-dgx-sparks\/","title":{"rendered":"Running GLM-5.2 on Four DGX Sparks"},"content":{"rendered":"<p><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-1 fusion-flex-container has-pattern-background has-mask-background nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:1331.2px;margin-left: calc(-4% \/ 2 );margin-right: calc(-4% \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-0 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:1.92%;--awb-margin-bottom-large:20px;--awb-spacing-left-large:1.92%;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:1.92%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-text fusion-text-1\"><p>In this tutorial, we will run the <strong>GLM-5.2<\/strong> large language model distributed across <strong>4 DGX Spark<\/strong> units. We will use <strong>sparkrun<\/strong> for this purpose.<\/p>\n<p>A Spark can be used directly as a computer by connecting a monitor and keyboard, or it can serve as a remote server accessed from another machine. In this tutorial, we will connect to the Spark remotely, install the necessary software, and run the model.<\/p>\n<p>We will use <strong>GLM-5.2<\/strong> as the language model (a Mixture-of-Experts model with 744 billion parameters, ~40 billion active parameters, int4\/int8 quantization), <strong>vLLM<\/strong> as the inference engine, and <strong>sparkrun<\/strong> as the management tool. vLLM will load the model\u2019s trained weights into GPU memory and serve an API that accepts requests from outside. sparkrun will manage Docker containers and model distribution across the Sparks via the command line. This automates image synchronization, model transfer, and cluster configuration. Both will run on the <strong>Main Spark<\/strong> inside Docker containers.<\/p>\n<p><strong>This tutorial consists of three parts:<\/strong><\/p>\n<ul>\n<li><strong>Setup:<\/strong> Downloading the Docker image and preparing the recipe<\/li>\n<li><strong>Running:<\/strong> Starting, monitoring, testing, and shutting down the model on 4 Sparks<\/li>\n<li><strong>Benchmark:<\/strong> Performance measurement at different concurrency levels<\/li>\n<\/ul>\n<p>Throughout this tutorial, the main device is called the <strong>Main Spark<\/strong>, and the other devices are called <strong>Worker Sparks<\/strong>.<\/p>\n<\/div><div class=\"fusion-text fusion-text-2\"><h2><b>Setup<\/b><\/h2>\n<h3><b>Prerequisites<\/b><\/h3>\n<p>Previous tutorials covered <b>connecting to the Spark<\/b>, <b>installing sparkrun<\/b>, and <b>configuring a multi-Spark cluster<\/b> step by step. In this tutorial, we assume <b>all these steps have been completed<\/b> and your setup is <b>ready<\/b>.<\/p>\n<p>This tutorial requires <b>4 DGX Sparks<\/b>. We will refer to the main device as <b>&lt;main-spark-ip&gt;<\/b>, and the other three devices as <b>&lt;worker-spark-ip-1&gt;<\/b>, <b>&lt;worker-spark-ip-2&gt;<\/b>, and <b>&lt;worker-spark-ip-3&gt;<\/b>. Note each device\u2019s <i>IP address<\/i> beforehand.<\/p>\n<h3><b>1. Downloading the Docker Image<\/b><\/h3>\n<p><b>GLM-5.2\u2019s DeepSeek Sparse Attention (DSA)<\/b> architecture requires kernels compiled for <b>GB10 (SM 12.1)<\/b>. <i>Standard vLLM images<\/i> do not include these kernels. Therefore, we will use a <b>custom Docker image<\/b> that contains the necessary patches.<\/p>\n<p>Run the following command to pull the Docker image prepared by <b>OpenZeka<\/b>:<\/p>\n<\/div><style type=\"text\/css\" scopped=\"scopped\">.fusion-syntax-highlighter-1 > .CodeMirror, .fusion-syntax-highlighter-1 > .CodeMirror .CodeMirror-gutters {background-color:#000000;}<\/style><div class=\"fusion-syntax-highlighter-container fusion-syntax-highlighter-1 fusion-syntax-highlighter-theme-dark\" style=\"opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:rgba(242,243,245,0);\"><div class=\"syntax-highlighter-copy-code\"><span class=\"syntax-highlighter-copy-code-title\" data-id=\"fusion_syntax_highlighter_1\" style=\"font-size:14px;\">Copy to Clipboard<\/span><\/div><label for=\"fusion_syntax_highlighter_1\" class=\"screen-reader-text\">Syntax Highlighter<\/label><textarea class=\"fusion-syntax-highlighter-textarea\" id=\"fusion_syntax_highlighter_1\" data-readOnly=\"nocursor\" data-lineNumbers=\"\" data-lineWrapping=\"\" data-theme=\"oceanic-next\" data-mode=\"text\/x-sh\">docker pull registry.cordata.ai\/spark-cluster\/vllm-zatz-dcp:latest<\/textarea><\/div><div class=\"fusion-text fusion-text-3\"><p>&nbsp;<\/p>\n<p>Verify the image:<\/p>\n<\/div><style type=\"text\/css\" scopped=\"scopped\">.fusion-syntax-highlighter-2 > .CodeMirror, .fusion-syntax-highlighter-2 > .CodeMirror .CodeMirror-gutters {background-color:#000000;}<\/style><div class=\"fusion-syntax-highlighter-container fusion-syntax-highlighter-2 fusion-syntax-highlighter-theme-dark\" style=\"opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:rgba(242,243,245,0);\"><div class=\"syntax-highlighter-copy-code\"><span class=\"syntax-highlighter-copy-code-title\" data-id=\"fusion_syntax_highlighter_2\" style=\"font-size:14px;\">Copy to Clipboard<\/span><\/div><label for=\"fusion_syntax_highlighter_2\" class=\"screen-reader-text\">Syntax Highlighter<\/label><textarea class=\"fusion-syntax-highlighter-textarea\" id=\"fusion_syntax_highlighter_2\" data-readOnly=\"nocursor\" data-lineNumbers=\"\" data-lineWrapping=\"\" data-theme=\"hopscotch\" data-mode=\"text\/x-sh\">docker images registry.cordata.ai\/spark-cluster\/vllm-zatz-dcp:latest<\/textarea><\/div><style type=\"text\/css\" scopped=\"scopped\">.fusion-syntax-highlighter-3 > .CodeMirror, .fusion-syntax-highlighter-3 > .CodeMirror .CodeMirror-gutters {background-color:#000000;}<\/style><div class=\"fusion-syntax-highlighter-container fusion-syntax-highlighter-3 fusion-syntax-highlighter-theme-dark\" style=\"opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:rgba(242,243,245,0);\"><div class=\"syntax-highlighter-copy-code\"><span class=\"syntax-highlighter-copy-code-title\" data-id=\"fusion_syntax_highlighter_3\" style=\"font-size:14px;\">Copy to Clipboard<\/span><\/div><label for=\"fusion_syntax_highlighter_3\" class=\"screen-reader-text\">Syntax Highlighter<\/label><textarea class=\"fusion-syntax-highlighter-textarea\" id=\"fusion_syntax_highlighter_3\" data-readOnly=\"nocursor\" data-lineNumbers=\"\" data-lineWrapping=\"\" data-theme=\"hopscotch\" data-mode=\"text\/x-sh\">REPOSITORY                                            TAG       IMAGE ID        CREATED          SIZE\nregistry.cordata.ai\/spark-cluster\/vllm-zatz-dcp       latest    f4c351b85b27    2 minutes ago    29.2GB<\/textarea><\/div><div class=\"fusion-text fusion-text-4\"><h3>2. Preparing the Recipe<\/h3>\n<p>The recipe is a YAML file that defines how sparkrun will run the model. The model, Docker image, vLLM flags, and memory settings are consolidated in a single file. For GLM-5.2, this recipe uses tensor parallelism (model weight matrix partitioning) and decode context parallelism (KV cache and attention computation partitioning) across 4 nodes.<\/p>\n<p>Save the recipe file using the following command:<\/p>\n<\/div><style type=\"text\/css\" scopped=\"scopped\">.fusion-syntax-highlighter-4 > .CodeMirror, .fusion-syntax-highlighter-4 > .CodeMirror .CodeMirror-gutters {background-color:#000000;}<\/style><div class=\"fusion-syntax-highlighter-container fusion-syntax-highlighter-4 fusion-syntax-highlighter-theme-dark\" style=\"opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:rgba(242,243,245,0);\"><div class=\"syntax-highlighter-copy-code\"><span class=\"syntax-highlighter-copy-code-title\" data-id=\"fusion_syntax_highlighter_4\" style=\"font-size:14px;\">Copy to Clipboard<\/span><\/div><label for=\"fusion_syntax_highlighter_4\" class=\"screen-reader-text\">Syntax Highlighter<\/label><textarea class=\"fusion-syntax-highlighter-textarea\" id=\"fusion_syntax_highlighter_4\" data-readOnly=\"nocursor\" data-lineNumbers=\"\" data-lineWrapping=\"\" data-theme=\"hopscotch\" data-mode=\"text\/yaml\">cat > ~\/glm52-dcp4-cc128.yaml << 'RECIPE'\n# GLM-5.2 Int4-Int8Mix TP4 DCP4 128K MTP k=4 cudagraph FULL\n# Usage:\n#   sparkrun run ~\/glm52-dcp4-cc128.yaml              # 4-node cluster (TP=4, DCP=4)\nmodel: QuantTrio\/GLM-5.2-Int4-Int8Mix\nruntime: vllm-distributed\ncontainer: registry.cordata.ai\/spark-cluster\/vllm-zatz-dcp:latest\n\nmin_nodes: 4\nmax_nodes: 4\n\nmetadata:\n  description: GLM-5.2 Int4-Int8Mix TP4 DCP4 128K MTP k=4 cudagraph FULL\n  maintainer: local\n  model_params: 744B-MoE-40B-active\n  model_dtype: int4-int8mix\n\ndefaults:\n  port: 8210\n  host: 0.0.0.0\n  tensor_parallel: 4\n  pipeline_parallel: 1\n  decode_context_parallel: 4\n  gpu_memory_utilization: 0.885\n  max_model_len: 131072\n  max_num_seqs: 5\n  max_num_batched_tokens: 2048\n  kv_cache_dtype: fp8_ds_mla\n  kv_cache_memory_bytes: 9000000000\n  max_cudagraph_capture_size: 32\n  load_format: auto\n  served_model_name: glm-5.2\n  quantization: compressed-tensors\n  reasoning_parser: glm45\n  tool_call_parser: glm47\n\nenv:\n  NCCL_IB_TC: \"106\"\n  HF_HUB_OFFLINE: \"1\"\n  VLLM_MARLIN_USE_ATOMIC_ADD: \"1\"\n  TRANSFORMERS_OFFLINE: \"1\"\n  SAFETENSORS_FAST_GPU: \"1\"\n  CUDA_DEVICE_ORDER: \"PCI_BUS_ID\"\n  CUDA_DEVICE_MAX_CONNECTIONS: \"32\"\n  CUTE_DSL_ARCH: \"sm_121a\"\n  TORCH_CUDA_ARCH_LIST: \"12.1a\"\n  VLLM_ALLOW_LONG_MAX_MODEL_LEN: \"1\"\n  VLLM_EXECUTE_MODEL_TIMEOUT_SECONDS: \"1800\"\n  NCCL_MAX_NCHANNELS: \"4\"\n  NCCL_MIN_NCHANNELS: \"4\"\n  NCCL_CROSS_NIC: \"1\"\n  NCCL_CUMEM_ENABLE: \"0\"\n  NCCL_IGNORE_CPU_AFFINITY: \"1\"\n  NCCL_NET_PLUGIN: \"none\"\n  NCCL_IB_MERGE_NICS: \"0\"\n  NCCL_IB_SUBNET_AWARE_ROUTING: \"1\"\n  NCCL_DEBUG: \"WARN\"\n  NCCL_IB_HCA: \"rocep1s0f1,roceP2p1s0f1\"\n  NCCL_SOCKET_IFNAME: \"enp1s0f1np1,enP2p1s0f1np1\"\n  GLOO_SOCKET_IFNAME: \"enp1s0f1np1,enP2p1s0f1np1\"\n  PYTORCH_CUDA_ALLOC_CONF: \"expandable_segments:True\"\n  VLLM_WORKER_MULTIPROC_METHOD: \"spawn\"\n  VLLM_USE_FLASHINFER_SAMPLER: \"1\"\n  VLLM_USE_V2_MODEL_RUNNER: \"1\"\n  VLLM_USE_B12X_SPARSE_INDEXER: \"1\"\n  VLLM_DCP_GLOBAL_TOPK: \"1\"\n  VLLM_DCP_SHARD_DRAFT: \"1\"\n  VLLM_KZ_TRIM_AFTER_LOAD: \"1\"\n  VLLM_USE_B12X_MOE: \"0\"\n  VLLM_USE_B12X_FP8_GEMM: \"0\"\n  VLLM_DISABLE_TP_MQ_BROADCASTER: \"1\"\n  VLLM_ENABLE_PCIE_ALLREDUCE: \"0\"\n  VLLM_MEMORY_PROFILER_ESTIMATE_CUDAGRAPHS: \"0\"\n  VLLM_SPARSE_INDEXER_MAX_LOGITS_MB: \"256\"\n  USES_B12X: \"True\"\n  FLASHINFER_DISABLE_VERSION_CHECK: \"1\"\n  RAY_memory_usage_threshold: \"0.99\"\n  RAY_memory_monitor_refresh_ms: \"0\"\n\ncommand: |\n  vllm serve {model} \\\n      --served-model-name {served_model_name} \\\n      --trust-remote-code \\\n      --load-format {load_format} \\\n      --quantization {quantization} \\\n      --tensor-parallel-size {tensor_parallel} \\\n      --pipeline-parallel-size {pipeline_parallel} \\\n      --decode-context-parallel-size {decode_context_parallel} \\\n      --dcp-comm-backend ag_rs \\\n      --dcp-kv-cache-interleave-size 1 \\\n      --gpu-memory-utilization {gpu_memory_utilization} \\\n      --max-model-len {max_model_len} \\\n      --max-num-seqs {max_num_seqs} \\\n      --max-num-batched-tokens {max_num_batched_tokens} \\\n      --kv-cache-dtype {kv_cache_dtype} \\\n      --kv-cache-memory-bytes {kv_cache_memory_bytes} \\\n      --generation-config vllm \\\n      --hf-overrides '{\"use_index_cache\":true,\"index_topk_pattern\":\"FFFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSS\"}' \\\n      --default-chat-template-kwargs '{\"clear_thinking\":false}' \\\n      --port {port} \\\n      --host {host} \\\n      --compilation-config '{\"cudagraph_mode\":\"FULL\",\"max_cudagraph_capture_size\":32}' \\\n      --no-enable-log-requests \\\n      --attention-backend B12X_MLA_SPARSE \\\n      --moe-backend flashinfer_cutlass \\\n      --reasoning-parser {reasoning_parser} \\\n      --tool-call-parser {tool_call_parser} \\\n      --enable-auto-tool-choice \\\n      --enable-prefix-caching \\\n      --speculative-config '{\"model\":\"QuantTrio\/GLM-5.2-Int4-Int8Mix\",\"method\":\"mtp\",\"num_speculative_tokens\":4,\"quantization\":\"compressed-tensors\",\"moe_backend\":\"flashinfer_cutlass\",\"draft_attention_backend\":\"B12X_MLA_SPARSE\",\"draft_sample_method\":\"probabilistic\"}' \\\n      --long-prefill-token-threshold 2048 \\\n      --async-scheduling\nRECIPE\n<\/textarea><\/div><div class=\"fusion-text fusion-text-5\"><p>&nbsp;<\/p>\n<p>Verify the file:<\/p>\n<\/div><style type=\"text\/css\" scopped=\"scopped\">.fusion-syntax-highlighter-5 > .CodeMirror, .fusion-syntax-highlighter-5 > .CodeMirror .CodeMirror-gutters {background-color:#000000;}<\/style><div class=\"fusion-syntax-highlighter-container fusion-syntax-highlighter-5 fusion-syntax-highlighter-theme-dark\" style=\"opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:rgba(242,243,245,0);\"><div class=\"syntax-highlighter-copy-code\"><span class=\"syntax-highlighter-copy-code-title\" data-id=\"fusion_syntax_highlighter_5\" style=\"font-size:14px;\">Copy to Clipboard<\/span><\/div><label for=\"fusion_syntax_highlighter_5\" class=\"screen-reader-text\">Syntax Highlighter<\/label><textarea class=\"fusion-syntax-highlighter-textarea\" id=\"fusion_syntax_highlighter_5\" data-readOnly=\"nocursor\" data-lineNumbers=\"\" data-lineWrapping=\"\" data-theme=\"hopscotch\" data-mode=\"text\/x-sh\">cat ~\/glm52-dcp4-cc128.yaml<\/textarea><\/div><div class=\"fusion-text fusion-text-6\"><p>&nbsp;<\/p>\n<p>You will see the recipe file you saved.<\/p>\n<\/div><div class=\"fusion-text fusion-text-7\"><h2>Running<\/h2>\n<h3>1. Clearing the Cache<\/h3>\n<p>Before starting vLLM, clear the filesystem cache on each Spark. The main reason for this is the DGX Spark\u2019s Unified Memory Architecture (UMA): The operating system caches model files read from disk in RAM. vLLM loads the model weights from here into GPU memory. After loading completes, the cached data is not used again, but it is not freed immediately either. On systems with separate memory, this is not important. Since inference runs in GPU memory, RAM utilization does not affect performance. On the Spark, however, since the CPU and GPU share the same RAM, the cache reduces the space available to the GPU. The command clears this cache, providing maximum memory for vLLM.<\/p>\n<p>Clear the cache on the Main Spark:<\/p>\n<\/div><style type=\"text\/css\" scopped=\"scopped\">.fusion-syntax-highlighter-6 > .CodeMirror, .fusion-syntax-highlighter-6 > .CodeMirror .CodeMirror-gutters {background-color:#000000;}<\/style><div class=\"fusion-syntax-highlighter-container fusion-syntax-highlighter-6 fusion-syntax-highlighter-theme-dark\" style=\"opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:rgba(242,243,245,0);\"><div class=\"syntax-highlighter-copy-code\"><span class=\"syntax-highlighter-copy-code-title\" data-id=\"fusion_syntax_highlighter_6\" style=\"font-size:14px;\">Copy to Clipboard<\/span><\/div><label for=\"fusion_syntax_highlighter_6\" class=\"screen-reader-text\">Syntax Highlighter<\/label><textarea class=\"fusion-syntax-highlighter-textarea\" id=\"fusion_syntax_highlighter_6\" data-readOnly=\"nocursor\" data-lineNumbers=\"\" data-lineWrapping=\"\" data-theme=\"hopscotch\" data-mode=\"text\/x-sh\">sudo sh -c 'sync; echo 3 > \/proc\/sys\/vm\/drop_caches'\n\n[sudo] password for nvidia:<\/textarea><\/div><div class=\"fusion-text fusion-text-8\"><p>&nbsp;<\/p>\n<p>Apply the same cleanup on the Worker Sparks via SSH from the Main Spark:<\/p>\n<\/div><style type=\"text\/css\" scopped=\"scopped\">.fusion-syntax-highlighter-7 > .CodeMirror, .fusion-syntax-highlighter-7 > .CodeMirror .CodeMirror-gutters {background-color:#000000;}<\/style><div class=\"fusion-syntax-highlighter-container fusion-syntax-highlighter-7 fusion-syntax-highlighter-theme-dark\" style=\"opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:rgba(242,243,245,0);\"><div class=\"syntax-highlighter-copy-code\"><span class=\"syntax-highlighter-copy-code-title\" data-id=\"fusion_syntax_highlighter_7\" style=\"font-size:14px;\">Copy to Clipboard<\/span><\/div><label for=\"fusion_syntax_highlighter_7\" class=\"screen-reader-text\">Syntax Highlighter<\/label><textarea class=\"fusion-syntax-highlighter-textarea\" id=\"fusion_syntax_highlighter_7\" data-readOnly=\"nocursor\" data-lineNumbers=\"\" data-lineWrapping=\"\" data-theme=\"hopscotch\" data-mode=\"text\/x-sh\">for ip in <worker-spark-ip-1> <worker-spark-ip-2> <worker-spark-ip-3>; do\n  echo \"=== $ip ===\"\n  ssh nvidia@$ip \"sudo sh -c 'sync; echo 3 > \/proc\/sys\/vm\/drop_caches'\"\n  echo \"\"\ndone\n\n    \n=== <worker-spark-ip-1> ===\n[sudo] password for nvidia:\n\n=== <worker-spark-ip-2> ===\n[sudo] password for nvidia:\n\n=== <worker-spark-ip-3> ===\n[sudo] password for nvidia:\n<\/textarea><\/div><div class=\"fusion-text fusion-text-9\"><h3>2. Pre-launch Checks<\/h3>\n<p>Verify that sparkrun parsed the recipe correctly and that the memory budget is sufficient:<\/p>\n<\/div><style type=\"text\/css\" scopped=\"scopped\">.fusion-syntax-highlighter-8 > .CodeMirror, .fusion-syntax-highlighter-8 > .CodeMirror .CodeMirror-gutters {background-color:#000000;}<\/style><div class=\"fusion-syntax-highlighter-container fusion-syntax-highlighter-8 fusion-syntax-highlighter-theme-dark\" style=\"opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:rgba(242,243,245,0);\"><div class=\"syntax-highlighter-copy-code\"><span class=\"syntax-highlighter-copy-code-title\" data-id=\"fusion_syntax_highlighter_8\" style=\"font-size:14px;\">Copy to Clipboard<\/span><\/div><label for=\"fusion_syntax_highlighter_8\" class=\"screen-reader-text\">Syntax Highlighter<\/label><textarea class=\"fusion-syntax-highlighter-textarea\" id=\"fusion_syntax_highlighter_8\" data-readOnly=\"nocursor\" data-lineNumbers=\"\" data-lineWrapping=\"\" data-theme=\"hopscotch\" data-mode=\"text\/x-sh\">sparkrun show ~\/glm52-dcp4-cc128.yaml<\/textarea><\/div><style type=\"text\/css\" scopped=\"scopped\">.fusion-syntax-highlighter-9 > .CodeMirror, .fusion-syntax-highlighter-9 > .CodeMirror .CodeMirror-gutters {background-color:#000000;}<\/style><div class=\"fusion-syntax-highlighter-container fusion-syntax-highlighter-9 fusion-syntax-highlighter-theme-dark\" style=\"opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:rgba(242,243,245,0);\"><div class=\"syntax-highlighter-copy-code\"><span class=\"syntax-highlighter-copy-code-title\" data-id=\"fusion_syntax_highlighter_9\" style=\"font-size:14px;\">Copy to Clipboard<\/span><\/div><label for=\"fusion_syntax_highlighter_9\" class=\"screen-reader-text\">Syntax Highlighter<\/label><textarea class=\"fusion-syntax-highlighter-textarea\" id=\"fusion_syntax_highlighter_9\" data-readOnly=\"nocursor\" data-lineNumbers=\"\" data-lineWrapping=\"\" data-theme=\"hopscotch\" data-mode=\"text\/x-sh\">Name:         \/home\/nvidia\/glm52-dcp4-cc128.yaml\nDescription:  GLM-5.2 Int4-Int8Mix TP4 DCP4 128K MTP k=4 cudagraph FULL\nMaintainer:   local\nRuntime:      vllm-distributed\nModel:        QuantTrio\/GLM-5.2-Int4-Int8Mix\nContainer:    registry.cordata.ai\/spark-cluster\/vllm-zatz-dcp:latest\nNodes:        4 - 4\n\nDefaults:\n  decode_context_parallel: 4\n  gpu_memory_utilization: 0.885\n  host: 0.0.0.0\n  kv_cache_dtype: fp8_ds_mla\n  kv_cache_memory_bytes: 9000000000\n  load_format: auto\n  max_cudagraph_capture_size: 32\n  max_model_len: 131072\n  max_num_batched_tokens: 2048\n  max_num_seqs: 5\n  pipeline_parallel: 1\n  port: 8210\n  quantization: compressed-tensors\n  reasoning_parser: glm45\n  served_model_name: glm-5.2\n  tensor_parallel: 4\n  tool_call_parser: glm47\n\nEnvironment:\n  CUDA_DEVICE_MAX_CONNECTIONS=32\n  CUDA_DEVICE_ORDER=PCI_BUS_ID\n  CUTE_DSL_ARCH=sm_121a\n  FLASHINFER_DISABLE_VERSION_CHECK=1\n  GLOO_SOCKET_IFNAME=enp1s0f1np1,enP2p1s0f1np1\n  HF_HUB_OFFLINE=1\n  NCCL_CROSS_NIC=1\n  NCCL_CUMEM_ENABLE=0\n  NCCL_DEBUG=WARN\n  NCCL_IB_HCA=rocep1s0f1,roceP2p1s0f1\n  NCCL_IB_MERGE_NICS=0\n  NCCL_IB_SUBNET_AWARE_ROUTING=1\n  NCCL_IB_TC=106\n  NCCL_IGNORE_CPU_AFFINITY=1\n  NCCL_MAX_NCHANNELS=4\n  NCCL_MIN_NCHANNELS=4\n  NCCL_NET_PLUGIN=none\n  NCCL_SOCKET_IFNAME=enp1s0f1np1,enP2p1s0f1np1\n  PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True\n  RAY_memory_monitor_refresh_ms=0\n  RAY_memory_usage_threshold=0.99\n  SAFETENSORS_FAST_GPU=1\n  TORCH_CUDA_ARCH_LIST=12.1a\n  TRANSFORMERS_OFFLINE=1\n  USES_B12X=True\n  VLLM_ALLOW_LONG_MAX_MODEL_LEN=1\n  VLLM_DCP_GLOBAL_TOPK=1\n  VLLM_DCP_SHARD_DRAFT=1\n  VLLM_DISABLE_TP_MQ_BROADCASTER=1\n  VLLM_ENABLE_PCIE_ALLREDUCE=0\n  VLLM_EXECUTE_MODEL_TIMEOUT_SECONDS=1800\n  VLLM_KZ_TRIM_AFTER_LOAD=1\n  VLLM_MARLIN_USE_ATOMIC_ADD=1\n  VLLM_MEMORY_PROFILER_ESTIMATE_CUDAGRAPHS=0\n  VLLM_SPARSE_INDEXER_MAX_LOGITS_MB=256\n  VLLM_USE_B12X_FP8_GEMM=0\n  VLLM_USE_B12X_MOE=0\n  VLLM_USE_B12X_SPARSE_INDEXER=1\n  VLLM_USE_FLASHINFER_SAMPLER=1\n  VLLM_USE_V2_MODEL_RUNNER=1\n  VLLM_WORKER_MULTIPROC_METHOD=spawn\n\nCommand:\n  vllm serve {model} \\\n    --served-model-name {served_model_name} \\\n    --trust-remote-code \\\n    --load-format {load_format} \\\n    --quantization {quantization} \\\n    --tensor-parallel-size {tensor_parallel} \\\n    --pipeline-parallel-size {pipeline_parallel} \\\n    --decode-context-parallel-size {decode_context_parallel} \\\n    --dcp-comm-backend ag_rs \\\n    --dcp-kv-cache-interleave-size 1 \\\n    --gpu-memory-utilization {gpu_memory_utilization} \\\n    --max-model-len {max_model_len} \\\n    --max-num-seqs {max_num_seqs} \\\n    --max-num-batched-tokens {max_num_batched_tokens} \\\n    --kv-cache-dtype {kv_cache_dtype} \\\n    --kv-cache-memory-bytes {kv_cache_memory_bytes} \\\n    --generation-config vllm \\\n    --hf-overrides '{\"use_index_cache\":true,\"index_topk_pattern\":\"FFFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSS\"}' \\\n    --default-chat-template-kwargs '{\"clear_thinking\":false}' \\\n    --port {port} \\\n    --host {host} \\\n    --compilation-config '{\"cudagraph_mode\":\"FULL\",\"max_cudagraph_capture_size\":32}' \\\n    --no-enable-log-requests \\\n    --attention-backend B12X_MLA_SPARSE \\\n    --moe-backend flashinfer_cutlass \\\n    --reasoning-parser {reasoning_parser} \\\n    --tool-call-parser {tool_call_parser} \\\n    --enable-auto-tool-choice \\\n    --enable-prefix-caching \\\n    --speculative-config '{\"model\":\"QuantTrio\/GLM-5.2-Int4-Int8Mix\",\"method\":\"mtp\",\"num_speculative_tokens\":4,\"quantization\":\"compressed-tensors\",\"moe_backend\":\"flashinfer_cutlass\",\"draft_attention_backend\":\"B12X_MLA_SPARSE\",\"draft_sample_method\":\"probabilistic\"}' \\\n    --long-prefill-token-threshold 2048 \\\n    --async-scheduling\nWarning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads.\nWarning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads.\n\nVRAM Estimation:\n  Model dtype:      int4_int8mix\n  Model params:     202,740,507,008\n  KV cache dtype:   fp8_ds_mla\n  Architecture:     78 layers, 64 KV heads, 192 head_dim\n  Model weights:    0.00 GB\n  Tensor parallel:  4\n  Per-GPU total:    0.00 GB\n  DGX Spark fit:    YES\n\n  GPU Memory Budget:\n    gpu_memory_utilization: 88%\n    Usable GPU memory:     107.1 GB (121 GB x 88%)\n    Available for KV:      107.1 GB\n  Warning: Unknown dtype 'int4_int8mix'; cannot estimate model weight VRAM\n  Warning: Unknown KV cache dtype 'fp8_ds_mla'\n<\/textarea><\/div><div class=\"fusion-text fusion-text-10\"><p>&nbsp;<\/p>\n<p>sparkrun parsed the recipe correctly, selected vllm-distributed, and confirmed with \u2018DGX Spark fit: YES\u2019. You can ignore the unknown dtype warnings \u2014 these are b12x\/DCP-specific types that sparkrun does not recognize.<\/p>\n<p>Now preview the launch plan:<\/p>\n<\/div><style type=\"text\/css\" scopped=\"scopped\">.fusion-syntax-highlighter-10 > .CodeMirror, .fusion-syntax-highlighter-10 > .CodeMirror .CodeMirror-gutters {background-color:#000000;}<\/style><div class=\"fusion-syntax-highlighter-container fusion-syntax-highlighter-10 fusion-syntax-highlighter-theme-dark\" style=\"opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:rgba(242,243,245,0);\"><div class=\"syntax-highlighter-copy-code\"><span class=\"syntax-highlighter-copy-code-title\" data-id=\"fusion_syntax_highlighter_10\" style=\"font-size:14px;\">Copy to Clipboard<\/span><\/div><label for=\"fusion_syntax_highlighter_10\" class=\"screen-reader-text\">Syntax Highlighter<\/label><textarea class=\"fusion-syntax-highlighter-textarea\" id=\"fusion_syntax_highlighter_10\" data-readOnly=\"nocursor\" data-lineNumbers=\"\" data-lineWrapping=\"\" data-theme=\"hopscotch\" data-mode=\"text\/x-sh\">sparkrun run ~\/glm52-dcp4-cc128.yaml --dry-run<\/textarea><\/div><style type=\"text\/css\" scopped=\"scopped\">.fusion-syntax-highlighter-11 > .CodeMirror, .fusion-syntax-highlighter-11 > .CodeMirror .CodeMirror-gutters {background-color:#000000;}<\/style><div class=\"fusion-syntax-highlighter-container fusion-syntax-highlighter-11 fusion-syntax-highlighter-theme-dark\" style=\"opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:rgba(242,243,245,0);\"><div class=\"syntax-highlighter-copy-code\"><span class=\"syntax-highlighter-copy-code-title\" data-id=\"fusion_syntax_highlighter_11\" style=\"font-size:14px;\">Copy to Clipboard<\/span><\/div><label for=\"fusion_syntax_highlighter_11\" class=\"screen-reader-text\">Syntax Highlighter<\/label><textarea class=\"fusion-syntax-highlighter-textarea\" id=\"fusion_syntax_highlighter_11\" data-readOnly=\"nocursor\" data-lineNumbers=\"\" data-lineWrapping=\"\" data-theme=\"hopscotch\" data-mode=\"text\/x-sh\">Warning: metadata.model_params '744B-MoE-40B-active' is not a valid parameter count\nWarning: metadata.model_dtype 'int4-int8mix' is not a recognized dtype\nsparkrun v0.2.40\n\nRuntime:   vllm-distributed\nImage:     registry.cordata.ai\/spark-cluster\/vllm-zatz-dcp:latest\nModel:     QuantTrio\/GLM-5.2-Int4-Int8Mix\nMode:      cluster (4 nodes)\nWarning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads.\nWarning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads.\n\nVRAM Estimation:\n  Model dtype:      int4_int8mix\n  Model params:     202,740,507,008\n  KV cache dtype:   fp8_ds_mla\n  Architecture:     78 layers, 64 KV heads, 192 head_dim\n  Model weights:    0.00 GB\n  Tensor parallel:  4\n  Per-GPU total:    0.00 GB\n  DGX Spark fit:    YES\n\n  GPU Memory Budget:\n    gpu_memory_utilization: 88%\n    Usable GPU memory:     107.1 GB (121 GB x 88%)\n    Available for KV:      107.1 GB\n  Warning: Unknown dtype 'int4_int8mix'; cannot estimate model weight VRAM\n  Warning: Unknown KV cache dtype 'fp8_ds_mla'\n\nHosts:     default cluster 'default'\n  Head:    <main-spark-ip>\n  Workers: <worker-spark-ip-1>, <worker-spark-ip-2>, <worker-spark-ip-3>\n\n[1\/6] Preparing\n  done (0.0s)\n[2\/6] Building image \u2014 skipped (no builder)\n[3\/6] Distributing resources\n  Distributing image registry.cordata.ai\/spark-cluster\/vllm-zatz-dcp:latest to 4 host(s)\n  Distributing model QuantTrio\/GLM-5.2-Int4-Int8Mix to 4 host(s)\n  Model synced to 4 host(s)\n  done (0.1s)\n[4\/6] Syncing tuning configs\n  done (0.0s)\n[5\/6] Launching vllm runtime\n  Step 1\/7: Cleaning up existing containers\n  Step 2\/7: Detecting InfiniBand\n  Step 3\/7: Detecting head node IP\n  Step 4\/7: Launching containers\n  Step 5\/7: Running pre-serve hooks\n  Step 6\/7: Starting head node serve\n  Step 7\/7: Starting worker nodes\n  done (0.1s)\nCluster:   sparkrun_1e20fe4f386b\n\nServe command:\n  vllm serve QuantTrio\/GLM-5.2-Int4-Int8Mix \\\n      --served-model-name glm-5.2 \\\n      --trust-remote-code \\\n      --load-format auto \\\n      --quantization compressed-tensors \\\n      --tensor-parallel-size 4 \\\n      --pipeline-parallel-size 1 \\\n      --decode-context-parallel-size 4 \\\n      --dcp-comm-backend ag_rs \\\n      --dcp-kv-cache-interleave-size 1 \\\n      --gpu-memory-utilization 0.885 \\\n      --max-model-len 131072 \\\n      --max-num-seqs 5 \\\n      --max-num-batched-tokens 2048 \\\n      --kv-cache-dtype fp8_ds_mla \\\n      --kv-cache-memory-bytes 9000000000 \\\n      --generation-config vllm \\\n      --hf-overrides '{\"use_index_cache\":true,\"index_topk_pattern\":\"FFFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSS\"}' \\\n      --default-chat-template-kwargs '{\"clear_thinking\":false}' \\\n      --port 8210 \\\n      --host 0.0.0.0 \\\n      --compilation-config '{\"cudagraph_mode\":\"FULL\",\"max_cudagraph_capture_size\":32}' \\\n      --no-enable-log-requests \\\n      --attention-backend B12X_MLA_SPARSE \\\n      --moe-backend flashinfer_cutlass \\\n      --reasoning-parser glm45 \\\n      --tool-call-parser glm47 \\\n      --enable-auto-tool-choice \\\n      --enable-prefix-caching \\\n      --speculative-config '{\"model\":\"QuantTrio\/GLM-5.2-Int4-Int8Mix\",\"method\":\"mtp\",\"num_speculative_tokens\":4,\"quantization\":\"compressed-tensors\",\"moe_backend\":\"flashinfer_cutlass\",\"draft_attention_backend\":\"B12X_MLA_SPARSE\",\"draft_sample_method\":\"probabilistic\"}' \\\n      --long-prefill-token-threshold 2048 \\\n      --async-scheduling\n\n[6\/6] Post-launch hooks \u2014 skipped\n<\/textarea><\/div><div class=\"fusion-text fusion-text-11\"><p>&nbsp;<\/p>\n<p>The dry run succeeded. The recipe is valid, \u2018Mode: cluster (4 nodes)\u2019 is shown, and the serve command includes all flags. If the model is not installed on the Spark, sparkrun will automatically download it from Hugging Face on first launch. The dry run does not trigger this download; downloading only happens during an actual launch.<\/p>\n<\/div><div class=\"fusion-text fusion-text-12\"><h3>3. Starting the Model<\/h3>\n<p>Now let\u2019s start the model:<\/p>\n<\/div><style type=\"text\/css\" scopped=\"scopped\">.fusion-syntax-highlighter-12 > .CodeMirror, .fusion-syntax-highlighter-12 > .CodeMirror .CodeMirror-gutters {background-color:#000000;}<\/style><div class=\"fusion-syntax-highlighter-container fusion-syntax-highlighter-12 fusion-syntax-highlighter-theme-dark\" style=\"opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:rgba(242,243,245,0);\"><div class=\"syntax-highlighter-copy-code\"><span class=\"syntax-highlighter-copy-code-title\" data-id=\"fusion_syntax_highlighter_12\" style=\"font-size:14px;\">Copy to Clipboard<\/span><\/div><label for=\"fusion_syntax_highlighter_12\" class=\"screen-reader-text\">Syntax Highlighter<\/label><textarea class=\"fusion-syntax-highlighter-textarea\" id=\"fusion_syntax_highlighter_12\" data-readOnly=\"nocursor\" data-lineNumbers=\"\" data-lineWrapping=\"\" data-theme=\"hopscotch\" data-mode=\"text\/x-sh\">sparkrun run ~\/glm52-dcp4-cc128.yaml --no-follow<\/textarea><\/div><div class=\"fusion-text fusion-text-13\"><p>&nbsp;<\/p>\n<p>The<em><strong> &#8211;no-follow<\/strong><\/em> flag makes sparkrun return to the command line after launching the containers. sparkrun automatically synchronizes the image to the Workers (skips if same ID), downloads the model to the head node and distributes it to the Workers (skips if already present), configures NCCL for the CX-7 interfaces, and launches a container on each Spark.<\/p>\n<\/div><style type=\"text\/css\" scopped=\"scopped\">.fusion-syntax-highlighter-13 > .CodeMirror, .fusion-syntax-highlighter-13 > .CodeMirror .CodeMirror-gutters {background-color:#000000;}<\/style><div class=\"fusion-syntax-highlighter-container fusion-syntax-highlighter-13 fusion-syntax-highlighter-theme-dark\" style=\"opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:rgba(242,243,245,0);\"><div class=\"syntax-highlighter-copy-code\"><span class=\"syntax-highlighter-copy-code-title\" data-id=\"fusion_syntax_highlighter_13\" style=\"font-size:14px;\">Copy to Clipboard<\/span><\/div><label for=\"fusion_syntax_highlighter_13\" class=\"screen-reader-text\">Syntax Highlighter<\/label><textarea class=\"fusion-syntax-highlighter-textarea\" id=\"fusion_syntax_highlighter_13\" data-readOnly=\"nocursor\" data-lineNumbers=\"\" data-lineWrapping=\"\" data-theme=\"hopscotch\" data-mode=\"text\/x-sh\">Warning: metadata.model_params '744B-MoE-40B-active' is not a valid parameter count\nWarning: metadata.model_dtype 'int4-int8mix' is not a recognized dtype\nsparkrun v0.2.40\n\nRuntime:   vllm-distributed\nImage:     registry.cordata.ai\/spark-cluster\/vllm-zatz-dcp:latest\nModel:     QuantTrio\/GLM-5.2-Int4-Int8Mix\nMode:      cluster (4 nodes)\nWarning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads.\nWarning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads.\n\nVRAM Estimation:\n  Model dtype:      int4_int8mix\n  Model params:     202,740,507,008\n  KV cache dtype:   fp8_ds_mla\n  Architecture:     78 layers, 64 KV heads, 192 head_dim\n  Model weights:    0.00 GB\n  Tensor parallel:  4\n  Per-GPU total:    0.00 GB\n  DGX Spark fit:    YES\n\n  GPU Memory Budget:\n    gpu_memory_utilization: 88%\n    Usable GPU memory:     107.1 GB (121 GB x 88%)\n    Available for KV:      107.1 GB\n  Warning: Unknown dtype 'int4_int8mix'; cannot estimate model weight VRAM\n  Warning: Unknown KV cache dtype 'fp8_ds_mla'\n\nHosts:     default cluster 'default'\n  Head:    <main-spark-ip>\n  Workers: <worker-spark-ip-1>, <worker-spark-ip-2>, <worker-spark-ip-3>\n\n[1\/6] Preparing\n  done (0.1s)\n[2\/6] Building image \u2014 skipped (no builder)\n[3\/6] Distributing resources\n  Distributing image registry.cordata.ai\/spark-cluster\/vllm-zatz-dcp:latest to 4 host(s)\n  Container image stale on 3 of 4 host(s), syncing\n  Distributing model QuantTrio\/GLM-5.2-Int4-Int8Mix to 4 host(s)\nFetching 142 files:   0%|          | 0\/142 [00:00<?, ?it\/s]\nDownloading (.\u2026):   0%|          | 0.00\/378G [00:00<?, ?iB\/s]\nDownloading (.\u2026): 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 378G\/378G [42:18<00:00, 149MiB\/s]\nFetching 142 files: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 142\/142 [42:19<00:00, 17.84it\/s]\n  Model synced to 4 host(s)\n  done (2418.5s)\n[4\/6] Syncing tuning configs\n  done (0.0s)\n[5\/6] Launching vllm runtime\n  Step 1\/7: Cleaning up existing containers\n  Step 2\/7: Detecting InfiniBand\n  Step 3\/7: Detecting head node IP\n  Step 4\/7: Launching containers\n  Step 5\/7: Running pre-serve hooks\n  Step 6\/7: Starting head node serve\n  Step 7\/7: Starting worker nodes\n  done (52.1s)\nCluster:   sparkrun_1e20fe4f386b\n\nServe command:\n  vllm serve QuantTrio\/GLM-5.2-Int4-Int8Mix \\\n      --served-model-name glm-5.2 \\\n      --trust-remote-code \\\n      --load-format auto \\\n      --quantization compressed-tensors \\\n      --tensor-parallel-size 4 \\\n      --pipeline-parallel-size 1 \\\n      --decode-context-parallel-size 4 \\\n      --dcp-comm-backend ag_rs \\\n      --dcp-kv-cache-interleave-size 1 \\\n      --gpu-memory-utilization 0.885 \\\n      --max-model-len 131072 \\\n      --max-num-seqs 5 \\\n      --max-num-batched-tokens 2048 \\\n      --kv-cache-dtype fp8_ds_mla \\\n      --kv-cache-memory-bytes 9000000000 \\\n      --generation-config vllm \\\n      --hf-overrides '{\"use_index_cache\":true,\"index_topk_pattern\":\"FFFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSSFSSS\"}' \\\n      --default-chat-template-kwargs '{\"clear_thinking\":false}' \\\n      --port 8210 \\\n      --host 0.0.0.0 \\\n      --compilation-config '{\"cudagraph_mode\":\"FULL\",\"max_cudagraph_capture_size\":32}' \\\n      --no-enable-log-requests \\\n      --attention-backend B12X_MLA_SPARSE \\\n      --moe-backend flashinfer_cutlass \\\n      --reasoning-parser glm45 \\\n      --tool-call-parser glm47 \\\n      --enable-auto-tool-choice \\\n      --enable-prefix-caching \\\n      --speculative-config '{\"model\":\"QuantTrio\/GLM-5.2-Int4-Int8Mix\",\"method\":\"mtp\",\"num_speculative_tokens\":4,\"quantization\":\"compressed-tensors\",\"moe_backend\":\"flashinfer_cutlass\",\"draft_attention_backend\":\"B12X_MLA_SPARSE\",\"draft_sample_method\":\"probabilistic\"}' \\\n      --long-prefill-token-threshold 2048 \\\n      --async-scheduling\n\nRuntime versions:\n  cuda:      13.2\n  nccl:      (2, 28, 9)\n  python:    3.12.3\n  torch:     2.11.0+cu130\n  vllm:      0.1.dev17863+ge232d2623.d20260713\n\n[6\/6] Post-launch hooks \u2014 skipped\n<\/textarea><\/div><div class=\"fusion-text fusion-text-14\"><p>&nbsp;<\/p>\n<p>sparkrun completed all 6 steps successfully. <strong>\u2018Mode: cluster (4 nodes)\u2019<\/strong> is shown. sparkrun synchronized the image to 3 Workers over the CX-7 network and downloaded the model from Hugging Face and distributed it to 4 nodes. All flags in the serve command resolved correctly.<\/p>\n<\/div><div class=\"fusion-text fusion-text-15\"><h3>4. Monitoring the Startup Process<\/h3>\n<p>After model downloading completes, it may take a few minutes for vLLM to become ready for serving. During this process, vLLM loads the model weights into GPU memory, compiles GPU kernels, and allocates memory for inference.<\/p>\n<p>To view vLLM logs:<\/p>\n<\/div><style type=\"text\/css\" scopped=\"scopped\">.fusion-syntax-highlighter-14 > .CodeMirror, .fusion-syntax-highlighter-14 > .CodeMirror .CodeMirror-gutters {background-color:#000000;}<\/style><div class=\"fusion-syntax-highlighter-container fusion-syntax-highlighter-14 fusion-syntax-highlighter-theme-dark\" style=\"opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:rgba(242,243,245,0);\"><div class=\"syntax-highlighter-copy-code\"><span class=\"syntax-highlighter-copy-code-title\" data-id=\"fusion_syntax_highlighter_14\" style=\"font-size:14px;\">Copy to Clipboard<\/span><\/div><label for=\"fusion_syntax_highlighter_14\" class=\"screen-reader-text\">Syntax Highlighter<\/label><textarea class=\"fusion-syntax-highlighter-textarea\" id=\"fusion_syntax_highlighter_14\" data-readOnly=\"nocursor\" data-lineNumbers=\"\" data-lineWrapping=\"\" data-theme=\"hopscotch\" data-mode=\"text\/x-sh\">sparkrun logs ~\/glm52-dcp4-cc128.yaml<\/textarea><\/div><div class=\"fusion-text fusion-text-16\"><p>&nbsp;<\/p>\n<p>You will see the following in the logs:<\/p>\n<\/div><style type=\"text\/css\" scopped=\"scopped\">.fusion-syntax-highlighter-15 > .CodeMirror, .fusion-syntax-highlighter-15 > .CodeMirror .CodeMirror-gutters {background-color:#000000;}<\/style><div class=\"fusion-syntax-highlighter-container fusion-syntax-highlighter-15 fusion-syntax-highlighter-theme-dark\" style=\"opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:rgba(242,243,245,0);\"><div class=\"syntax-highlighter-copy-code\"><span class=\"syntax-highlighter-copy-code-title\" data-id=\"fusion_syntax_highlighter_15\" style=\"font-size:14px;\">Copy to Clipboard<\/span><\/div><label for=\"fusion_syntax_highlighter_15\" class=\"screen-reader-text\">Syntax Highlighter<\/label><textarea class=\"fusion-syntax-highlighter-textarea\" id=\"fusion_syntax_highlighter_15\" data-readOnly=\"nocursor\" data-lineNumbers=\"\" data-lineWrapping=\"\" data-theme=\"hopscotch\" data-mode=\"text\/x-sh\">(APIServer pid=43) INFO 07-31 06:56:57 [api_utils.py:339]  \u2584\u2584 \u2584\u2588 \u2588     \u2588     \u2588 \u2580\u2584\u2580 \u2588  version 0.1.dev17863+ge232d2623.d20260713\n(APIServer pid=43) INFO 07-31 06:56:57 [api_utils.py:339]   \u2588\u2584\u2588\u2580 \u2588     \u2588     \u2588     \u2588  model   QuantTrio\/GLM-5.2-Int4-Int8Mix\n\n(APIServer pid=43) INFO 07-31 06:57:05 [model.py:598] Resolved architecture: GlmMoeDsaForCausalLM\n(APIServer pid=43) INFO 07-31 06:57:05 [model.py:1725] Using max model len 131072\n(APIServer pid=43) INFO 07-31 06:57:05 [cache.py:279] Using fp8_ds_mla data type to store kv cache.\n\n(APIServer pid=43) INFO 07-31 06:57:12 [model.py:598] Resolved architecture: DeepSeekMTPModel\n(APIServer pid=43) INFO 07-31 06:57:12 [speculative.py:1072] Overriding draft model max model len from 1048576 to 131072\n(APIServer pid=43) INFO 07-31 06:57:12 [scheduler.py:252] Chunked prefill is enabled with max_num_batched_tokens=2048.\n(APIServer pid=43) INFO 07-31 06:57:12 [vllm.py:1051] Asynchronous scheduling is enabled.\n\n(EngineCore pid=113) INFO 07-31 06:57:20 [core.py:114] Initializing a V1 LLM engine (v0.1.dev17863+ge232d2623.d20260713) with config: ...\n(EngineCore pid=113) INFO 07-31 06:57:20 [multiproc_executor.py:140] DP group leader: node_rank=0, master_addr=<main-spark-ip>, world_size=4\n\n(Worker pid=129) INFO 07-31 06:57:28 [parallel_state.py:1568] world_size=4 rank=0 distributed_init_method=tcp:\/\/<main-spark-ip>:25000 backend=nccl\n\n(Worker_TP0_DCP0 pid=129) INFO 07-31 06:58:07 [model_runner.py:312] Loading model from scratch...\n(Worker_TP0_DCP0 pid=129) INFO 07-31 06:58:07 [cuda.py:404] Using AttentionBackendEnum.B12X_MLA_SPARSE backend.\n(Worker_TP0_DCP0 pid=129) INFO 07-31 06:58:10 [selector.py:166] Using FLASH_ATTN MLA prefill backend.\n(Worker_TP0_DCP0 pid=129) INFO 07-31 06:58:10 [compressed_tensors_moe.py:155] Using CompressedTensorsWNA16MarlinMoEMethod\n\n(Worker_TP0_DCP0 pid=129) INFO 07-31 06:58:14 [weight_utils.py:914] Filesystem type for checkpoints: EXT4. Checkpoint size: 377.63 GiB. Available RAM: 16.52 GiB.\n(Worker_TP0_DCP0 pid=129) Loading safetensors checkpoint shards: 100% Completed | 128\/128 [05:14<00:00,  2.46s\/it]\n(Worker_TP0_DCP0 pid=129) INFO 07-31 07:03:29 [default_loader.py:451] Loading weights took 314.57 seconds\n\n(Worker_TP0_DCP0 pid=129) INFO 07-31 07:03:40 [weight_utils.py:914] Filesystem type for checkpoints: EXT4. Checkpoint size: 9.36 GiB. Available RAM: 15.73 GiB.\n(Worker_TP0_DCP0 pid=129) Loading safetensors checkpoint shards: 100% Completed | 4\/4 [00:07<00:00,  1.90s\/it]\n(Worker_TP0_DCP0 pid=129) INFO 07-31 07:03:48 [default_loader.py:451] Loading weights took 7.63 seconds\n(Worker_TP0_DCP0 pid=129) INFO 07-31 07:03:56 [model_runner.py:333] Model loading took 96.71 GiB and 349.827079 seconds\n\n(Worker_TP0_DCP0 pid=129) INFO 07-31 07:04:10 [backends.py:1089] Using cache directory: \/tmp\/.cache\/vllm\/torch_compile_cache\/...\/backbone for vLLM's torch.compile\n(Worker_TP0_DCP0 pid=129) INFO 07-31 07:04:36 [monitor.py:53] torch.compile took 38.46 s in total\n(Worker_TP0_DCP0 pid=129) INFO 07-31 07:05:15 [backends.py:1089] Using cache directory: \/tmp\/.cache\/vllm\/torch_compile_cache\/...\/eagle_head for vLLM's torch.compile\n(Worker_TP0_DCP0 pid=129) INFO 07-31 07:05:20 [monitor.py:53] torch.compile took 6.47 s in total\n\n(Worker_TP0_DCP0 pid=129) INFO 07-31 07:05:25 [gpu_worker.py:407] Initial free memory 113.45 GiB, reserved 8.38 GiB memory for KV Cache as specified by kv_cache_memory_bytes config and skipped memory profiling.\n\n(EngineCore pid=113) INFO 07-31 07:05:25 [kv_cache_utils.py:2152] GPU KV cache size: 657,664 tokens\n(EngineCore pid=113) INFO 07-31 07:05:25 [kv_cache_utils.py:2153] Maximum concurrency for 131,072 tokens per request: 5.02x\n\n(Worker_TP0_DCP0 pid=129) WARNING 07-31 07:05:25 [compilation.py:1361] CUDAGraphMode.FULL is not supported with B12xNonCompressedIndexerBackend backend; setting cudagraph_mode=FULL_AND_PIECEWISE\n(Worker_TP0_DCP0 pid=129) Capturing CUDA graphs (PIECEWISE): 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 6\/6 [00:01<00:00,  4.63it\/s]\n(Worker_TP0_DCP0 pid=129) Capturing CUDA graphs (FULL): 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 5\/5 [00:06<00:00,  1.39it\/s]\n(Worker_TP0_DCP0 pid=129) INFO 07-31 07:05:39 [model_runner.py:766] Graph capturing finished in 14 secs, took 0.27 GiB\n\n(APIServer pid=43) INFO 07-31 07:06:04 [parser_manager.py:37] \"auto\" tool choice has been enabled.\n(APIServer pid=43) INFO 07-31 07:06:07 [api_server.py:576] Starting vLLM server on http:\/\/0.0.0.0:8210\n(APIServer pid=43) INFO:     Started server process [43]\n(APIServer pid=43) INFO:     Waiting for application startup.\n(APIServer pid=43) INFO:     Application startup complete.\n<\/textarea><\/div><div class=\"fusion-text fusion-text-17\"><p>&nbsp;<\/p>\n<p>If you see the <b>Application startup complete.<\/b> line, the <b>model server is ready<\/b>. Press <b>Ctrl+C<\/b> to stop watching logs. The server will <b>continue running in the background<\/b>.<\/p>\n<p>The startup process takes <b>approximately 10 minutes<\/b>. During this process:<\/p>\n<ul>\n<li>The architecture is resolved as <b>GlmMoeDsaForCausalLM<\/b> (<i>DeepSeek Sparse Attention + MoE<\/i>).<\/li>\n<li>The <b>MTP draft model (DeepSeekMTPModel)<\/b> is initialized \u2014 <b>speculative decoding<\/b> is active (<b>k=4<\/b>).<\/li>\n<li>The <b>B12X_MLA_SPARSE<\/b> attention backend is selected \u2014 <i>DeepGEMM<\/i> is skipped.<\/li>\n<li><b>128 safetensors shards<\/b> are loaded (<b>~5 minutes<\/b>, <b>96.71 GiB per node<\/b>).<\/li>\n<li>The <b>draft model<\/b> is loaded as <b>4 shards<\/b> (<b>~8 seconds<\/b>).<\/li>\n<li><b>torch.compile<\/b> takes <b>~38 seconds<\/b> (backbone) + <b>~6 seconds<\/b> (eagle head).<\/li>\n<li><b>CUDA graph capture<\/b> succeeds in <b>FULL<\/b> + <b>PIECEWISE<\/b> modes (<b>14 seconds<\/b>).<\/li>\n<li><b>KV cache:<\/b> <b>8.38 GiB<\/b>, <b>657,664 tokens<\/b>, <b>5.02\u00d7 concurrency<\/b> for <b>131K tokens<\/b>.<\/li>\n<\/ul>\n<\/div><div class=\"fusion-text fusion-text-18\"><h3>5. Testing the Model<\/h3>\n<p>First, verify that the server is running:<\/p>\n<\/div><style type=\"text\/css\" scopped=\"scopped\">.fusion-syntax-highlighter-16 > .CodeMirror, .fusion-syntax-highlighter-16 > .CodeMirror .CodeMirror-gutters {background-color:#000000;}<\/style><div class=\"fusion-syntax-highlighter-container fusion-syntax-highlighter-16 fusion-syntax-highlighter-theme-dark\" style=\"opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:rgba(242,243,245,0);\"><div class=\"syntax-highlighter-copy-code\"><span class=\"syntax-highlighter-copy-code-title\" data-id=\"fusion_syntax_highlighter_16\" style=\"font-size:14px;\">Copy to Clipboard<\/span><\/div><label for=\"fusion_syntax_highlighter_16\" class=\"screen-reader-text\">Syntax Highlighter<\/label><textarea class=\"fusion-syntax-highlighter-textarea\" id=\"fusion_syntax_highlighter_16\" data-readOnly=\"nocursor\" data-lineNumbers=\"\" data-lineWrapping=\"\" data-theme=\"hopscotch\" data-mode=\"text\/x-sh\">curl -s -o \/dev\/null -w \"HTTP %{http_code}\" http:\/\/<main-spark-ip>:8210\/health<\/textarea><\/div><div class=\"fusion-text fusion-text-19\"><p>&nbsp;<\/p>\n<p>An \u2018HTTP 200\u2019 response indicates the server is healthy. Now check the sparkrun container status:<\/p>\n<\/div><style type=\"text\/css\" scopped=\"scopped\">.fusion-syntax-highlighter-17 > .CodeMirror, .fusion-syntax-highlighter-17 > .CodeMirror .CodeMirror-gutters {background-color:#000000;}<\/style><div class=\"fusion-syntax-highlighter-container fusion-syntax-highlighter-17 fusion-syntax-highlighter-theme-dark\" style=\"opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:rgba(242,243,245,0);\"><div class=\"syntax-highlighter-copy-code\"><span class=\"syntax-highlighter-copy-code-title\" data-id=\"fusion_syntax_highlighter_17\" style=\"font-size:14px;\">Copy to Clipboard<\/span><\/div><label for=\"fusion_syntax_highlighter_17\" class=\"screen-reader-text\">Syntax Highlighter<\/label><textarea class=\"fusion-syntax-highlighter-textarea\" id=\"fusion_syntax_highlighter_17\" data-readOnly=\"nocursor\" data-lineNumbers=\"\" data-lineWrapping=\"\" data-theme=\"hopscotch\" data-mode=\"text\/x-sh\">sparkrun status<\/textarea><\/div><style type=\"text\/css\" scopped=\"scopped\">.fusion-syntax-highlighter-18 > .CodeMirror, .fusion-syntax-highlighter-18 > .CodeMirror .CodeMirror-gutters {background-color:#000000;}<\/style><div class=\"fusion-syntax-highlighter-container fusion-syntax-highlighter-18 fusion-syntax-highlighter-theme-dark\" style=\"opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:rgba(242,243,245,0);\"><div class=\"syntax-highlighter-copy-code\"><span class=\"syntax-highlighter-copy-code-title\" data-id=\"fusion_syntax_highlighter_18\" style=\"font-size:14px;\">Copy to Clipboard<\/span><\/div><label for=\"fusion_syntax_highlighter_18\" class=\"screen-reader-text\">Syntax Highlighter<\/label><textarea class=\"fusion-syntax-highlighter-textarea\" id=\"fusion_syntax_highlighter_18\" data-readOnly=\"nocursor\" data-lineNumbers=\"\" data-lineWrapping=\"\" data-theme=\"hopscotch\" data-mode=\"text\/x-sh\">Job: \/home\/nvidia\/glm52-dcp4-cc128.yaml  (tp=4, pp=1)  [1e20fe4f386b]  (4 container(s))\n  node_0     <main-spark-ip>                             Up 35 minutes             registry.cordata.ai\/spark-cluster\/vllm-zatz-dcp:latest\n  node_1     <worker-spark-ip-1>                         Up 35 minutes             registry.cordata.ai\/spark-cluster\/vllm-zatz-dcp:latest\n  node_2     <worker-spark-ip-2>                         Up 35 minutes             registry.cordata.ai\/spark-cluster\/vllm-zatz-dcp:latest\n  node_3     <worker-spark-ip-3>                         Up 35 minutes             registry.cordata.ai\/spark-cluster\/vllm-zatz-dcp:latest\n  logs: sparkrun logs 1e20fe4f386b\n  stop: sparkrun stop 1e20fe4f386b\n\nTotal: 4 container(s) across 4 host(s)<\/textarea><\/div><div class=\"fusion-text fusion-text-20\"><p>&nbsp;<\/p>\n<p>All four containers are running.<\/p>\n<p>List the registered models:<\/p>\n<\/div><style type=\"text\/css\" scopped=\"scopped\">.fusion-syntax-highlighter-19 > .CodeMirror, .fusion-syntax-highlighter-19 > .CodeMirror .CodeMirror-gutters {background-color:#000000;}<\/style><div class=\"fusion-syntax-highlighter-container fusion-syntax-highlighter-19 fusion-syntax-highlighter-theme-dark\" style=\"opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:rgba(242,243,245,0);\"><div class=\"syntax-highlighter-copy-code\"><span class=\"syntax-highlighter-copy-code-title\" data-id=\"fusion_syntax_highlighter_19\" style=\"font-size:14px;\">Copy to Clipboard<\/span><\/div><label for=\"fusion_syntax_highlighter_19\" class=\"screen-reader-text\">Syntax Highlighter<\/label><textarea class=\"fusion-syntax-highlighter-textarea\" id=\"fusion_syntax_highlighter_19\" data-readOnly=\"nocursor\" data-lineNumbers=\"\" data-lineWrapping=\"\" data-theme=\"hopscotch\" data-mode=\"text\/x-sh\">curl -s http:\/\/localhost:8210\/v1\/models | python3 -m json.tool<\/textarea><\/div><style type=\"text\/css\" scopped=\"scopped\">.fusion-syntax-highlighter-20 > .CodeMirror, .fusion-syntax-highlighter-20 > .CodeMirror .CodeMirror-gutters {background-color:#000000;}<\/style><div class=\"fusion-syntax-highlighter-container fusion-syntax-highlighter-20 fusion-syntax-highlighter-theme-dark\" style=\"opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:rgba(242,243,245,0);\"><div class=\"syntax-highlighter-copy-code\"><span class=\"syntax-highlighter-copy-code-title\" data-id=\"fusion_syntax_highlighter_20\" style=\"font-size:14px;\">Copy to Clipboard<\/span><\/div><label for=\"fusion_syntax_highlighter_20\" class=\"screen-reader-text\">Syntax Highlighter<\/label><textarea class=\"fusion-syntax-highlighter-textarea\" id=\"fusion_syntax_highlighter_20\" data-readOnly=\"nocursor\" data-lineNumbers=\"\" data-lineWrapping=\"\" data-theme=\"hopscotch\" data-mode=\"text\/x-sh\">{\n    \"object\": \"list\",\n    \"data\": [\n        {\n            \"id\": \"glm-5.2\",\n            \"object\": \"model\",\n            \"created\": 1784789897,\n            \"owned_by\": \"vllm\",\n            \"root\": \"QuantTrio\/GLM-5.2-Int4-Int8Mix\",\n            \"parent\": null,\n            \"max_model_len\": 131072\n        }\n    ]\n}<\/textarea><\/div><div class=\"fusion-text fusion-text-21\"><p>&nbsp;<\/p>\n<p>The model is registered as <em><strong>glm-5.2.<\/strong><\/em><\/p>\n<p>Now test the model with a simple \u201cWhat is 2+2?\u201d prompt:<\/p>\n<\/div><style type=\"text\/css\" scopped=\"scopped\">.fusion-syntax-highlighter-21 > .CodeMirror, .fusion-syntax-highlighter-21 > .CodeMirror .CodeMirror-gutters {background-color:#000000;}<\/style><div class=\"fusion-syntax-highlighter-container fusion-syntax-highlighter-21 fusion-syntax-highlighter-theme-dark\" style=\"opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:rgba(242,243,245,0);\"><div class=\"syntax-highlighter-copy-code\"><span class=\"syntax-highlighter-copy-code-title\" data-id=\"fusion_syntax_highlighter_21\" style=\"font-size:14px;\">Copy to Clipboard<\/span><\/div><label for=\"fusion_syntax_highlighter_21\" class=\"screen-reader-text\">Syntax Highlighter<\/label><textarea class=\"fusion-syntax-highlighter-textarea\" id=\"fusion_syntax_highlighter_21\" data-readOnly=\"nocursor\" data-lineNumbers=\"\" data-lineWrapping=\"\" data-theme=\"hopscotch\" data-mode=\"text\/x-sh\">curl -s http:\/\/localhost:8210\/v1\/chat\/completions \\\n  -H \"Content-Type: application\/json\" \\\n  -d '{\n    \"model\": \"glm-5.2\",\n    \"messages\": [{\"role\": \"user\", \"content\": \"2+2 kac eder? Tek cumle?\"}],\n    \"max_tokens\": 200\n  }' | python3 -m json.tool\n<\/textarea><\/div><div class=\"fusion-text fusion-text-22\"><p>&nbsp;<\/p>\n<p>The simplified response will be as follows. In the <strong><em>content<\/em><\/strong> field (the model\u2019s response), you will see \u201c2+2, 4 eder.\u201d From this, you can see that the model performed the addition correctly. Additionally, the response has a <strong><em>reasoning<\/em><\/strong> field. This field contains the model\u2019s thinking process:<\/p>\n<\/div><style type=\"text\/css\" scopped=\"scopped\">.fusion-syntax-highlighter-22 > .CodeMirror, .fusion-syntax-highlighter-22 > .CodeMirror .CodeMirror-gutters {background-color:#000000;}<\/style><div class=\"fusion-syntax-highlighter-container fusion-syntax-highlighter-22 fusion-syntax-highlighter-theme-dark\" style=\"opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:rgba(242,243,245,0);\"><div class=\"syntax-highlighter-copy-code\"><span class=\"syntax-highlighter-copy-code-title\" data-id=\"fusion_syntax_highlighter_22\" style=\"font-size:14px;\">Copy to Clipboard<\/span><\/div><label for=\"fusion_syntax_highlighter_22\" class=\"screen-reader-text\">Syntax Highlighter<\/label><textarea class=\"fusion-syntax-highlighter-textarea\" id=\"fusion_syntax_highlighter_22\" data-readOnly=\"nocursor\" data-lineNumbers=\"\" data-lineWrapping=\"\" data-theme=\"hopscotch\" data-mode=\"text\/x-sh\">{\n    \"id\": \"chatcmpl-aefb2db7bdfbc5c9\",\n    \"object\": \"chat.completion\",\n    \"created\": 1785483144,\n    \"model\": \"glm-5.2\",\n    \"choices\": [\n        {\n            \"index\": 0,\n            \"message\": {\n                \"role\": \"assistant\",\n                \"content\": \"2+2 d\u00f6rt eder.\",\n                \"refusal\": null,\n                \"annotations\": null,\n                \"audio\": null,\n                \"function_call\": null,\n                \"tool_calls\": [],\n                \"reasoning\": \"1.  **Analyze the Request:**\\n    *   Question: \\\"2+2 kac eder?\\\" (What is 2+2?)\\n    *   Constraint: \\\"Tek cumle.\\\" (Single sentence.)\\n    *   Language: Turkish.\\n\\n2.  **Formulate the Answer:**\\n    *   2 + 2 = 4.\\n    *   Turkish translation: \\\"2 art\u0131 2 d\u00f6rt eder.\\\" or simply \\\"2+2 d\u00f6rt eder.\\\" or \\\"\u0130ki art\u0131 iki d\u00f6rt eder.\\\"\\n\\n3.  **Check Constraints:**\\n    *   Is it a single sentence? Yes.\\n\\n4.  **Select the Best Option:**\\n    *   \\\"2+2 d\u00f6rt eder.\\\" is direct, accurate, and perfectly fits the single sentence constraint.\"\n            },\n            \"logprobs\": null,\n            \"finish_reason\": \"stop\",\n            \"stop_reason\": 154827,\n            \"token_ids\": null,\n            \"routed_experts\": null\n        }\n    ],\n    \"service_tier\": null,\n    \"system_fingerprint\": \"vllm-0.1.dev17863+ge232d2623.d20260713-tp4-d57ceda6\",\n    \"usage\": {\n        \"prompt_tokens\": 25,\n        \"total_tokens\": 198,\n        \"completion_tokens\": 173,\n        \"prompt_tokens_details\": null\n    },\n    \"prompt_logprobs\": null,\n    \"prompt_token_ids\": null,\n    \"prompt_text\": null,\n    \"kv_transfer_params\": null\n}\n<\/textarea><\/div><div class=\"fusion-text fusion-text-23\"><p>&nbsp;<\/p>\n<p>The LLM is now running and serving from the Main Spark\u2019s port <strong>8210<\/strong>. We can ask GLM-5.2 questions and receive responses. You can use the model with a web interface (e.g., Open WebUI) or an agent architecture (e.g., OpenCode).<\/p>\n<\/div><div class=\"fusion-text fusion-text-24\"><h3>6. Shutdown<\/h3>\n<p>When you are done, stop the model:<\/p>\n<\/div><style type=\"text\/css\" scopped=\"scopped\">.fusion-syntax-highlighter-23 > .CodeMirror, .fusion-syntax-highlighter-23 > .CodeMirror .CodeMirror-gutters {background-color:#000000;}<\/style><div class=\"fusion-syntax-highlighter-container fusion-syntax-highlighter-23 fusion-syntax-highlighter-theme-dark\" style=\"opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:rgba(242,243,245,0);\"><div class=\"syntax-highlighter-copy-code\"><span class=\"syntax-highlighter-copy-code-title\" data-id=\"fusion_syntax_highlighter_23\" style=\"font-size:14px;\">Copy to Clipboard<\/span><\/div><label for=\"fusion_syntax_highlighter_23\" class=\"screen-reader-text\">Syntax Highlighter<\/label><textarea class=\"fusion-syntax-highlighter-textarea\" id=\"fusion_syntax_highlighter_23\" data-readOnly=\"nocursor\" data-lineNumbers=\"\" data-lineWrapping=\"\" data-theme=\"oceanic-next\" data-mode=\"text\/x-sh\">sparkrun stop ~\/glm52-dcp4-cc128.yaml\n\nWorkload stopped on 4 host(s).<\/textarea><\/div><div class=\"fusion-text fusion-text-25\"><p>&nbsp;<\/p>\n<p>This command stops the container and frees the memory space. However, the container, Docker image, and model files remain on disk. This way, you do not need to download them again to restart. Simply run the <strong>sparkrun run<\/strong> command from step 3 again.<\/p>\n<\/div><div class=\"fusion-text fusion-text-26\"><h2><b>Benchmark<\/b><\/h2>\n<p>We tested the <b>GLM-5.2<\/b> model at different <b>concurrency levels<\/b>. The measurements recorded average <b>TTFT (Time to First Token)<\/b> \u2014 <i>the time until the first token is produced<\/i> \u2014 and <b>TPS (Tokens Per Second)<\/b> \u2014 <i>the number of tokens generated per second<\/i>. As can be seen, the value exceeded <b>27 tokens per second<\/b>.<\/p>\n<table>\n<thead>\n<tr>\n<th><b>Concurrency<\/b><\/th>\n<th><b>Avg TTFT (ms)<\/b><\/th>\n<th><b>Avg TPS (tok\/s)<\/b><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><b>1<\/b><\/td>\n<td>490<\/td>\n<td><b>27.4<\/b><\/td>\n<\/tr>\n<tr>\n<td><b>2<\/b><\/td>\n<td>717<\/td>\n<td>20.0<\/td>\n<\/tr>\n<tr>\n<td><b>4<\/b><\/td>\n<td>955<\/td>\n<td>14.3<\/td>\n<\/tr>\n<tr>\n<td><b>8<\/b><\/td>\n<td>6560<\/td>\n<td>8.5<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>The measurements were taken using the <b>CordatusAI LLM Benchmark Tool<\/b>. This is a <i>benchmarking application<\/i> developed by <b>CordatusAI<\/b> that tests <b>LLM servers<\/b> with <b>OpenAI-compatible APIs<\/b>. Below, you can see the <b>web interface<\/b> of our benchmark tool and the various <b>charts<\/b> it produced:<\/p>\n<\/div><div class=\"fusion-image-element \" style=\"--awb-caption-title-font-family:var(--h2_typography-font-family);--awb-caption-title-font-weight:var(--h2_typography-font-weight);--awb-caption-title-font-style:var(--h2_typography-font-style);--awb-caption-title-size:var(--h2_typography-font-size);--awb-caption-title-transform:var(--h2_typography-text-transform);--awb-caption-title-line-height:var(--h2_typography-line-height);--awb-caption-title-letter-spacing:var(--h2_typography-letter-spacing);\"><span class=\" fusion-imageframe imageframe-none imageframe-1 hover-type-none\"><img decoding=\"async\" width=\"1024\" height=\"579\" title=\"glm_benchmark_3\" src=\"https:\/\/blog.openzeka.com\/en\/wp-content\/uploads\/2026\/07\/glm_benchmark_3-1024x579.webp\" alt class=\"img-responsive wp-image-1744\" srcset=\"https:\/\/blog.openzeka.com\/en\/wp-content\/uploads\/2026\/07\/glm_benchmark_3-200x113.webp 200w, https:\/\/blog.openzeka.com\/en\/wp-content\/uploads\/2026\/07\/glm_benchmark_3-300x170.webp 300w, https:\/\/blog.openzeka.com\/en\/wp-content\/uploads\/2026\/07\/glm_benchmark_3-400x226.webp 400w, https:\/\/blog.openzeka.com\/en\/wp-content\/uploads\/2026\/07\/glm_benchmark_3-600x339.webp 600w, https:\/\/blog.openzeka.com\/en\/wp-content\/uploads\/2026\/07\/glm_benchmark_3-768x434.webp 768w, https:\/\/blog.openzeka.com\/en\/wp-content\/uploads\/2026\/07\/glm_benchmark_3-800x452.webp 800w, https:\/\/blog.openzeka.com\/en\/wp-content\/uploads\/2026\/07\/glm_benchmark_3-1024x579.webp 1024w, https:\/\/blog.openzeka.com\/en\/wp-content\/uploads\/2026\/07\/glm_benchmark_3-1200x678.webp 1200w, https:\/\/blog.openzeka.com\/en\/wp-content\/uploads\/2026\/07\/glm_benchmark_3-1536x868.webp 1536w, https:\/\/blog.openzeka.com\/en\/wp-content\/uploads\/2026\/07\/glm_benchmark_3.webp 1850w\" sizes=\"(max-width: 640px) 100vw, 1024px\" \/><\/span><\/div><div class=\"fusion-image-element \" style=\"--awb-caption-title-font-family:var(--h2_typography-font-family);--awb-caption-title-font-weight:var(--h2_typography-font-weight);--awb-caption-title-font-style:var(--h2_typography-font-style);--awb-caption-title-size:var(--h2_typography-font-size);--awb-caption-title-transform:var(--h2_typography-text-transform);--awb-caption-title-line-height:var(--h2_typography-line-height);--awb-caption-title-letter-spacing:var(--h2_typography-letter-spacing);\"><span class=\" fusion-imageframe imageframe-none imageframe-2 hover-type-none\"><img decoding=\"async\" width=\"700\" height=\"500\" title=\"glm_benchmark_1\" src=\"https:\/\/blog.openzeka.com\/en\/wp-content\/uploads\/2026\/07\/glm_benchmark_1.webp\" alt class=\"img-responsive wp-image-1742\" srcset=\"https:\/\/blog.openzeka.com\/en\/wp-content\/uploads\/2026\/07\/glm_benchmark_1-200x143.webp 200w, https:\/\/blog.openzeka.com\/en\/wp-content\/uploads\/2026\/07\/glm_benchmark_1-300x214.webp 300w, https:\/\/blog.openzeka.com\/en\/wp-content\/uploads\/2026\/07\/glm_benchmark_1-400x286.webp 400w, https:\/\/blog.openzeka.com\/en\/wp-content\/uploads\/2026\/07\/glm_benchmark_1-600x429.webp 600w, https:\/\/blog.openzeka.com\/en\/wp-content\/uploads\/2026\/07\/glm_benchmark_1.webp 700w\" sizes=\"(max-width: 640px) 100vw, 700px\" \/><\/span><\/div><div class=\"fusion-image-element \" style=\"--awb-caption-title-font-family:var(--h2_typography-font-family);--awb-caption-title-font-weight:var(--h2_typography-font-weight);--awb-caption-title-font-style:var(--h2_typography-font-style);--awb-caption-title-size:var(--h2_typography-font-size);--awb-caption-title-transform:var(--h2_typography-text-transform);--awb-caption-title-line-height:var(--h2_typography-line-height);--awb-caption-title-letter-spacing:var(--h2_typography-letter-spacing);\"><span class=\" fusion-imageframe imageframe-none imageframe-3 hover-type-none\"><img decoding=\"async\" width=\"700\" height=\"500\" title=\"glm_benchmark_2\" src=\"https:\/\/blog.openzeka.com\/en\/wp-content\/uploads\/2026\/07\/glm_benchmark_2.webp\" alt class=\"img-responsive wp-image-1743\" srcset=\"https:\/\/blog.openzeka.com\/en\/wp-content\/uploads\/2026\/07\/glm_benchmark_2-200x143.webp 200w, https:\/\/blog.openzeka.com\/en\/wp-content\/uploads\/2026\/07\/glm_benchmark_2-300x214.webp 300w, https:\/\/blog.openzeka.com\/en\/wp-content\/uploads\/2026\/07\/glm_benchmark_2-400x286.webp 400w, https:\/\/blog.openzeka.com\/en\/wp-content\/uploads\/2026\/07\/glm_benchmark_2-600x429.webp 600w, https:\/\/blog.openzeka.com\/en\/wp-content\/uploads\/2026\/07\/glm_benchmark_2.webp 700w\" sizes=\"(max-width: 640px) 100vw, 700px\" \/><\/span><\/div><\/div><\/div><\/div><\/div><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-2 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:1331.2px;margin-left: calc(-4% \/ 2 );margin-right: calc(-4% \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-1 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-bg-blend:overlay;--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:1.92%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:1.92%;--awb-width-medium:100%;--awb-spacing-right-medium:1.92%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\"><div class=\"fusion-column-wrapper fusion-flex-justify-content-flex-start fusion-content-layout-column\"><\/div><\/div><\/div><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":3,"featured_media":1932,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[60],"tags":[],"class_list":["post-1739","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai-cluster"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.3.1 (Yoast SEO v28.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Running GLM-5.2 on Four DGX Sparks - OpenZeka EN Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.openzeka.com\/en\/running-glm-5-2-on-four-dgx-sparks\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Running GLM-5.2 on Four DGX Sparks\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.openzeka.com\/en\/running-glm-5-2-on-four-dgx-sparks\/\" \/>\n<meta property=\"og:site_name\" content=\"OpenZeka EN Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/profile.php?id=61576911356211\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-19T13:06:31+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.openzeka.com\/en\/wp-content\/uploads\/2026\/08\/Running-GLM-5.2-on-Four-DGX-Sparks.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Enhar\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@Aetherixnl\" \/>\n<meta name=\"twitter:site\" content=\"@Aetherixnl\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Enhar\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blog.openzeka.com\\\/en\\\/running-glm-5-2-on-four-dgx-sparks\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.openzeka.com\\\/en\\\/running-glm-5-2-on-four-dgx-sparks\\\/\"},\"author\":{\"name\":\"Enhar\",\"@id\":\"https:\\\/\\\/blog.openzeka.com\\\/en\\\/#\\\/schema\\\/person\\\/62c964376839cf2c4b2eb682bf14d3cb\"},\"headline\":\"Running GLM-5.2 on Four DGX Sparks\",\"datePublished\":\"2026-08-19T13:06:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blog.openzeka.com\\\/en\\\/running-glm-5-2-on-four-dgx-sparks\\\/\"},\"wordCount\":7446,\"publisher\":{\"@id\":\"https:\\\/\\\/blog.openzeka.com\\\/en\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.openzeka.com\\\/en\\\/running-glm-5-2-on-four-dgx-sparks\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blog.openzeka.com\\\/en\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/Running-GLM-5.2-on-Four-DGX-Sparks.webp\",\"articleSection\":[\"AI Cluster\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blog.openzeka.com\\\/en\\\/running-glm-5-2-on-four-dgx-sparks\\\/\",\"url\":\"https:\\\/\\\/blog.openzeka.com\\\/en\\\/running-glm-5-2-on-four-dgx-sparks\\\/\",\"name\":\"Running GLM-5.2 on Four DGX Sparks - OpenZeka EN Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.openzeka.com\\\/en\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blog.openzeka.com\\\/en\\\/running-glm-5-2-on-four-dgx-sparks\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.openzeka.com\\\/en\\\/running-glm-5-2-on-four-dgx-sparks\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blog.openzeka.com\\\/en\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/Running-GLM-5.2-on-Four-DGX-Sparks.webp\",\"datePublished\":\"2026-08-19T13:06:31+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blog.openzeka.com\\\/en\\\/running-glm-5-2-on-four-dgx-sparks\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blog.openzeka.com\\\/en\\\/running-glm-5-2-on-four-dgx-sparks\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/blog.openzeka.com\\\/en\\\/running-glm-5-2-on-four-dgx-sparks\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blog.openzeka.com\\\/en\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/Running-GLM-5.2-on-Four-DGX-Sparks.webp\",\"contentUrl\":\"https:\\\/\\\/blog.openzeka.com\\\/en\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/Running-GLM-5.2-on-Four-DGX-Sparks.webp\",\"width\":1920,\"height\":1080},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blog.openzeka.com\\\/en\\\/running-glm-5-2-on-four-dgx-sparks\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/blog.openzeka.com\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Running GLM-5.2 on Four DGX Sparks\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blog.openzeka.com\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/blog.openzeka.com\\\/en\\\/\",\"name\":\"Aetherix B.V.\",\"description\":\"NVIDIA Jetson Developer Kits &amp;Edge Devices\",\"publisher\":{\"@id\":\"https:\\\/\\\/blog.openzeka.com\\\/en\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blog.openzeka.com\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/blog.openzeka.com\\\/en\\\/#organization\",\"name\":\"Aetherix B.V.\",\"url\":\"https:\\\/\\\/blog.openzeka.com\\\/en\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/blog.openzeka.com\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/blog.openzeka.com\\\/en\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/aetherix-site-icon.webp\",\"contentUrl\":\"https:\\\/\\\/blog.openzeka.com\\\/en\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/aetherix-site-icon.webp\",\"width\":421,\"height\":398,\"caption\":\"Aetherix B.V.\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.openzeka.com\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/profile.php?id=61576911356211\",\"https:\\\/\\\/x.com\\\/Aetherixnl\",\"https:\\\/\\\/www.instagram.com\\\/aetherixnl\\\/\",\"https:\\\/\\\/www.tiktok.com\\\/@aetherixnl\"],\"description\":\"Aetherix provides a full range of NVIDIA Jetson-based edge AI solutions\u2014including Developer Kits, AI Kits, industrial-grade Carrier Boards, and fully integrated Boxed AI Systems.\",\"email\":\"info@aetherix.com\",\"legalName\":\"Aetherix B.V.\",\"vatID\":\"NL867727688B01\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blog.openzeka.com\\\/en\\\/#\\\/schema\\\/person\\\/62c964376839cf2c4b2eb682bf14d3cb\",\"name\":\"Enhar\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/189d567adce3bb0c8d438b4586bf861ec04980f2e451003975e3cf871781d0f4?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/189d567adce3bb0c8d438b4586bf861ec04980f2e451003975e3cf871781d0f4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/189d567adce3bb0c8d438b4586bf861ec04980f2e451003975e3cf871781d0f4?s=96&d=mm&r=g\",\"caption\":\"Enhar\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Running GLM-5.2 on Four DGX Sparks - OpenZeka EN Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.openzeka.com\/en\/running-glm-5-2-on-four-dgx-sparks\/","og_locale":"en_US","og_type":"article","og_title":"Running GLM-5.2 on Four DGX Sparks","og_url":"https:\/\/blog.openzeka.com\/en\/running-glm-5-2-on-four-dgx-sparks\/","og_site_name":"OpenZeka EN Blog","article_publisher":"https:\/\/www.facebook.com\/profile.php?id=61576911356211","article_published_time":"2026-08-19T13:06:31+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/blog.openzeka.com\/en\/wp-content\/uploads\/2026\/08\/Running-GLM-5.2-on-Four-DGX-Sparks.webp","type":"image\/webp"}],"author":"Enhar","twitter_card":"summary_large_image","twitter_creator":"@Aetherixnl","twitter_site":"@Aetherixnl","twitter_misc":{"Written by":"Enhar","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.openzeka.com\/en\/running-glm-5-2-on-four-dgx-sparks\/#article","isPartOf":{"@id":"https:\/\/blog.openzeka.com\/en\/running-glm-5-2-on-four-dgx-sparks\/"},"author":{"name":"Enhar","@id":"https:\/\/blog.openzeka.com\/en\/#\/schema\/person\/62c964376839cf2c4b2eb682bf14d3cb"},"headline":"Running GLM-5.2 on Four DGX Sparks","datePublished":"2026-08-19T13:06:31+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.openzeka.com\/en\/running-glm-5-2-on-four-dgx-sparks\/"},"wordCount":7446,"publisher":{"@id":"https:\/\/blog.openzeka.com\/en\/#organization"},"image":{"@id":"https:\/\/blog.openzeka.com\/en\/running-glm-5-2-on-four-dgx-sparks\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.openzeka.com\/en\/wp-content\/uploads\/2026\/08\/Running-GLM-5.2-on-Four-DGX-Sparks.webp","articleSection":["AI Cluster"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/blog.openzeka.com\/en\/running-glm-5-2-on-four-dgx-sparks\/","url":"https:\/\/blog.openzeka.com\/en\/running-glm-5-2-on-four-dgx-sparks\/","name":"Running GLM-5.2 on Four DGX Sparks - OpenZeka EN Blog","isPartOf":{"@id":"https:\/\/blog.openzeka.com\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.openzeka.com\/en\/running-glm-5-2-on-four-dgx-sparks\/#primaryimage"},"image":{"@id":"https:\/\/blog.openzeka.com\/en\/running-glm-5-2-on-four-dgx-sparks\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.openzeka.com\/en\/wp-content\/uploads\/2026\/08\/Running-GLM-5.2-on-Four-DGX-Sparks.webp","datePublished":"2026-08-19T13:06:31+00:00","breadcrumb":{"@id":"https:\/\/blog.openzeka.com\/en\/running-glm-5-2-on-four-dgx-sparks\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.openzeka.com\/en\/running-glm-5-2-on-four-dgx-sparks\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.openzeka.com\/en\/running-glm-5-2-on-four-dgx-sparks\/#primaryimage","url":"https:\/\/blog.openzeka.com\/en\/wp-content\/uploads\/2026\/08\/Running-GLM-5.2-on-Four-DGX-Sparks.webp","contentUrl":"https:\/\/blog.openzeka.com\/en\/wp-content\/uploads\/2026\/08\/Running-GLM-5.2-on-Four-DGX-Sparks.webp","width":1920,"height":1080},{"@type":"BreadcrumbList","@id":"https:\/\/blog.openzeka.com\/en\/running-glm-5-2-on-four-dgx-sparks\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.openzeka.com\/en\/"},{"@type":"ListItem","position":2,"name":"Running GLM-5.2 on Four DGX Sparks"}]},{"@type":"WebSite","@id":"https:\/\/blog.openzeka.com\/en\/#website","url":"https:\/\/blog.openzeka.com\/en\/","name":"Aetherix B.V.","description":"NVIDIA Jetson Developer Kits &amp;Edge Devices","publisher":{"@id":"https:\/\/blog.openzeka.com\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.openzeka.com\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/blog.openzeka.com\/en\/#organization","name":"Aetherix B.V.","url":"https:\/\/blog.openzeka.com\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.openzeka.com\/en\/#\/schema\/logo\/image\/","url":"https:\/\/blog.openzeka.com\/en\/wp-content\/uploads\/2025\/06\/aetherix-site-icon.webp","contentUrl":"https:\/\/blog.openzeka.com\/en\/wp-content\/uploads\/2025\/06\/aetherix-site-icon.webp","width":421,"height":398,"caption":"Aetherix B.V."},"image":{"@id":"https:\/\/blog.openzeka.com\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/profile.php?id=61576911356211","https:\/\/x.com\/Aetherixnl","https:\/\/www.instagram.com\/aetherixnl\/","https:\/\/www.tiktok.com\/@aetherixnl"],"description":"Aetherix provides a full range of NVIDIA Jetson-based edge AI solutions\u2014including Developer Kits, AI Kits, industrial-grade Carrier Boards, and fully integrated Boxed AI Systems.","email":"info@aetherix.com","legalName":"Aetherix B.V.","vatID":"NL867727688B01"},{"@type":"Person","@id":"https:\/\/blog.openzeka.com\/en\/#\/schema\/person\/62c964376839cf2c4b2eb682bf14d3cb","name":"Enhar","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/189d567adce3bb0c8d438b4586bf861ec04980f2e451003975e3cf871781d0f4?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/189d567adce3bb0c8d438b4586bf861ec04980f2e451003975e3cf871781d0f4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/189d567adce3bb0c8d438b4586bf861ec04980f2e451003975e3cf871781d0f4?s=96&d=mm&r=g","caption":"Enhar"}}]}},"_links":{"self":[{"href":"https:\/\/blog.openzeka.com\/en\/wp-json\/wp\/v2\/posts\/1739","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.openzeka.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.openzeka.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.openzeka.com\/en\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.openzeka.com\/en\/wp-json\/wp\/v2\/comments?post=1739"}],"version-history":[{"count":16,"href":"https:\/\/blog.openzeka.com\/en\/wp-json\/wp\/v2\/posts\/1739\/revisions"}],"predecessor-version":[{"id":1926,"href":"https:\/\/blog.openzeka.com\/en\/wp-json\/wp\/v2\/posts\/1739\/revisions\/1926"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.openzeka.com\/en\/wp-json\/wp\/v2\/media\/1932"}],"wp:attachment":[{"href":"https:\/\/blog.openzeka.com\/en\/wp-json\/wp\/v2\/media?parent=1739"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.openzeka.com\/en\/wp-json\/wp\/v2\/categories?post=1739"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.openzeka.com\/en\/wp-json\/wp\/v2\/tags?post=1739"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}