model=/mnt/data/models/stepfun-ai/Step-3.5-Flash-Int4/step3p5_flash_Q4_K_S-00001-of-00012.gguf
numactl -N "$SOCKET" -m "$SOCKET" \
./build/bin/llama-server \
--model "$model"\
--alias ubergarm/Step-3.5-Flash \
--ctx-size 65536 \
-ctk q8_0 -ctv q8_0 \
-ub 4096 -b 4096 \
--parallel 1 \
--threads 96 \
--threads-batch 128 \
--numa numactl \
--host 127.0.0.1 \
--port 8080 \
--no-mmap \
--jinja \
--validate-quants
INFO [ main] build info | tid="135355715800704" timestamp=1770404814 build=4183 commit="9a0b5e80"
INFO [ main] system info | tid="135355715800704" timestamp=1770404814 n_threads=96 n_threads_batch=128 total_threads=512 system_info="AVX = 1 | AVX_VNNI = 1 | AVX2 = 1 | AVX512 = 1 | AVX512_VBMI = 1 | AVX512_VNNI = 1 | AVX512_BF16 = 1 | FMA = 1 | NEON = 0 | SVE = 0 | ARM_FMA = 0 | F16C = 1 | FP16_VA = 0 | WASM_SIMD = 0 | BLAS = 0 | SSE3 = 1 | SSSE3 = 1 | VSX = 0 | MATMUL_INT8 = 0 | "
CPU: using device CPU - 0 MiB free
llama_model_loader: additional 11 GGUFs metadata loaded.
llama_model_loader: loaded meta data with 51 key-value pairs and 754 tensors from /mnt/data/models/stepfun-ai/Step-3.5-Flash-Int4/step3p5_flash_Q4_K_S-00001-of-00012.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = step35
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Hf_Mtp_And_One
llama_model_loader: - kv 3: general.size_label str = 288x7.4B
llama_model_loader: - kv 4: step35.block_count u32 = 45
llama_model_loader: - kv 5: step35.context_length u32 = 262144
llama_model_loader: - kv 6: step35.embedding_length u32 = 4096
llama_model_loader: - kv 7: step35.feed_forward_length u32 = 11264
llama_model_loader: - kv 8: step35.attention.head_count arr[i32,45] = [64, 96, 96, 96, 64, 96, 96, 96, 64, ...
llama_model_loader: - kv 9: step35.rope.freq_base f32 = 5000000.000000
llama_model_loader: - kv 10: step35.attention.key_length u32 = 128
llama_model_loader: - kv 11: step35.attention.value_length u32 = 128
llama_model_loader: - kv 12: step35.attention.head_count_kv arr[i32,45] = [8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, ...
llama_model_loader: - kv 13: step35.attention.sliding_window u32 = 512
llama_model_loader: - kv 14: step35.attention.sliding_window_pattern arr[i32,45] = [0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, ...
llama_model_loader: - kv 15: step35.rope.scaling.apply_mask u32 = 1
llama_model_loader: - kv 16: step35.expert_count u32 = 288
llama_model_loader: - kv 17: step35.expert_used_count u32 = 8
llama_model_loader: - kv 18: step35.expert_feed_forward_length u32 = 1280
llama_model_loader: - kv 19: step35.expert_shared_feed_forward_length u32 = 1280
llama_model_loader: - kv 20: step35.expert_gating_func u32 = 2
llama_model_loader: - kv 21: step35.expert_weights_scale f32 = 3.000000
llama_model_loader: - kv 22: step35.expert_weights_norm bool = true
llama_model_loader: - kv 23: step35.leading_dense_block_count u32 = 3
llama_model_loader: - kv 24: step35.moe_every_n_layers u32 = 1
llama_model_loader: - kv 25: step35.rope.dimension_count_per_layer arr[i32,45] = [64, 128, 128, 128, 64, 128, 128, 128...
llama_model_loader: - kv 26: step35.attention.layer_norm_rms_epsilon f32 = 0.000010
llama_model_loader: - kv 27: step35.rope.freq_base_per_layer arr[f32,45] = [5000000.000000, 10000.000000, 10000....
llama_model_loader: - kv 28: step35.swiglu_limits arr[f32,45] = [0.000000, 0.000000, 0.000000, 0.0000...
llama_model_loader: - kv 29: step35.swiglu_limits_shared arr[f32,45] = [0.000000, 0.000000, 0.000000, 0.0000...
llama_model_loader: - kv 30: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 31: tokenizer.ggml.pre str = deepseek-v3
llama_model_loader: - kv 32: tokenizer.ggml.tokens arr[str,128896] = ["<|begin▁of▁sentence|>", "<...
llama_model_loader: - kv 33: tokenizer.ggml.token_type arr[i32,128896] = [3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 34: tokenizer.ggml.merges arr[str,127741] = ["Ġ t", "Ġ a", "i n", "Ġ Ġ", "h e...
llama_model_loader: - kv 35: tokenizer.ggml.bos_token_id u32 = 0
llama_model_loader: - kv 36: tokenizer.ggml.eos_token_id u32 = 128007
llama_model_loader: - kv 37: tokenizer.ggml.padding_token_id u32 = 1
llama_model_loader: - kv 38: tokenizer.ggml.add_bos_token bool = true
llama_model_loader: - kv 39: tokenizer.ggml.add_sep_token bool = false
llama_model_loader: - kv 40: tokenizer.ggml.add_eos_token bool = false
llama_model_loader: - kv 41: tokenizer.chat_template str = {% macro render_content(content) %}{%...
llama_model_loader: - kv 42: general.quantization_version u32 = 2
llama_model_loader: - kv 43: general.file_type u32 = 14
llama_model_loader: - kv 44: quantize.imatrix.file str = ../../../preview_hf_mtp/step3p5_flash...
llama_model_loader: - kv 45: quantize.imatrix.dataset str = ../../../wikitext-2-raw/wiki.256.raw
llama_model_loader: - kv 46: quantize.imatrix.entries_count u32 = 528
llama_model_loader: - kv 47: quantize.imatrix.chunks_count u32 = 72
llama_model_loader: - kv 48: split.no u16 = 0
llama_model_loader: - kv 49: split.tensors.count i32 = 754
llama_model_loader: - kv 50: split.count u16 = 12
llama_model_loader: - type f32: 266 tensors
llama_model_loader: - type q4_K: 476 tensors
llama_model_loader: - type q5_K: 11 tensors
llama_model_loader: - type q6_K: 1 tensors
load: printing all EOG tokens:
load: - 128007 ('<|im_end|>')
load: special tokens cache size = 818
load: token to piece cache size = 0.8220 MB
llm_load_print_meta: format = GGUF V3 (latest)
llm_load_print_meta: arch = step35
llm_load_print_meta: n_ctx_train = 262144
llm_load_print_meta: n_embd = 4096
llm_load_print_meta: n_layer = 45
llm_load_print_meta: n_head = [64, 96, 96, 96, 64, 96, 96, 96, 64, 96, 96, 96, 64, 96, 96, 96, 64, 96, 96, 96, 64, 96, 96, 96, 64, 96, 96, 96, 64, 96, 96, 96, 64, 96, 96, 96, 64, 96, 96, 96, 64, 96, 96, 96, 64]
llm_load_print_meta: n_head_kv = 8
llm_load_print_meta: n_rot = 128
llm_load_print_meta: n_swa = 512
llm_load_print_meta: n_swa_pattern = 1
llm_load_print_meta: n_embd_head_k = 128
llm_load_print_meta: n_embd_head_v = 128
llm_load_print_meta: n_gqa = [8, 12, 12, 12, 8, 12, 12, 12, 8, 12, 12, 12, 8, 12, 12, 12, 8, 12, 12, 12, 8, 12, 12, 12, 8, 12, 12, 12, 8, 12, 12, 12, 8, 12, 12, 12, 8, 12, 12, 12, 8, 12, 12, 12, 8]
llm_load_print_meta: n_embd_k_gqa = 1024
llm_load_print_meta: n_embd_v_gqa = 1024
llm_load_print_meta: f_norm_eps = 0.0e+00
llm_load_print_meta: f_norm_rms_eps = 1.0e-05
llm_load_print_meta: f_clamp_kqv = 0.0e+00
llm_load_print_meta: f_max_alibi_bias = 0.0e+00
llm_load_print_meta: f_logit_scale = 0.0e+00
llm_load_print_meta: n_ff = 11264
llm_load_print_meta: n_expert = 288
llm_load_print_meta: n_expert_used = 8
llm_load_print_meta: causal attn = 1
llm_load_print_meta: pooling type = 0
llm_load_print_meta: rope type = 2
llm_load_print_meta: rope scaling = linear
llm_load_print_meta: freq_base_train = 5000000.0
llm_load_print_meta: freq_scale_train = 1
llm_load_print_meta: n_ctx_orig_yarn = 262144
llm_load_print_meta: rope_finetuned = unknown
llm_load_print_meta: ssm_d_conv = 0
llm_load_print_meta: ssm_d_inner = 0
llm_load_print_meta: ssm_d_state = 0
llm_load_print_meta: ssm_dt_rank = 0
llm_load_print_meta: model type = ?B
llm_load_print_meta: model ftype = Q4_K - Small
llm_load_print_meta: model params = 196.956 B
llm_load_print_meta: model size = 103.837 GiB (4.529 BPW)
llm_load_print_meta: repeating layers = 103.157 GiB (4.523 BPW, 195.900 B parameters)
llm_load_print_meta: general.name = Hf_Mtp_And_One
print_info: vocab type = BPE
print_info: n_vocab = 128896
print_info: n_merges = 127741
print_info: BOS token = 0 '<|begin▁of▁sentence|>'
print_info: EOS token = 128007 '<|im_end|>'
print_info: EOT token = 128007 '<|im_end|>'
print_info: PAD token = 1 '<|end▁of▁sentence|>'
print_info: LF token = 201 'Ċ'
print_info: FIM PRE token = 128801 '<|fim▁begin|>'
print_info: FIM SUF token = 128800 '<|fim▁hole|>'
print_info: FIM MID token = 128802 '<|fim▁end|>'
print_info: EOG token = 128007 '<|im_end|>'
print_info: max token length = 256
llm_load_tensors: ggml ctx size = 0.31 MiB
llm_load_tensors: offloading 0 repeating layers to GPU
llm_load_tensors: offloaded 0/46 layers to GPU
llm_load_tensors: CPU buffer size = 106328.79 MiB
....................................................................................................
llama_new_context_with_model: n_ctx = 65536
llama_new_context_with_model: n_batch = 4096
llama_new_context_with_model: n_ubatch = 4096
llama_new_context_with_model: flash_attn = 1
llama_new_context_with_model: attn_max_b = 0
llama_new_context_with_model: fused_moe = 1
llama_new_context_with_model: grouped er = 0
llama_new_context_with_model: fused_up_gate = 1
llama_new_context_with_model: fused_mmad = 1
llama_new_context_with_model: rope_cache = 0
llama_new_context_with_model: graph_reuse = 1
llama_new_context_with_model: k_cache_hadam = 0
llama_new_context_with_model: split_mode_graph_scheduling = 0
llama_new_context_with_model: reduce_type = f16
llama_new_context_with_model: sched_async = 0
llama_new_context_with_model: ser = -1, 0
llama_new_context_with_model: freq_base = 5000000.0
llama_new_context_with_model: freq_scale = 1
llama_kv_cache_init: CPU KV buffer size = 6120.00 MiB
llama_new_context_with_model: KV self size = 6120.00 MiB, K (q8_0): 3060.00 MiB, V (q8_0): 3060.00 MiB
llama_new_context_with_model: CPU output buffer size = 0.49 MiB
llama_new_context_with_model: CPU compute buffer size = 2078.00 MiB
llama_new_context_with_model: graph nodes = 2201
llama_new_context_with_model: graph splits = 1
XXXXXXXXXXXXXXXXXXXXX Setting only active experts offload
===================================== llama_new_context_with_model: f16
======================================= HAVE_FANCY_SIMD is defined
INFO [ init] initializing slots | tid="135355715800704" timestamp=1770404843 n_slots=1
INFO [ init] new slot | tid="135355715800704" timestamp=1770404843 id_slot=0 n_ctx_slot=65536
srv init: Exclude reasoning tokens when selecting slot based on similarity: start: , end:
use `--reasoning-tokens none` to disable.
prompt cache is enabled, size limit: 8192 MiB
use `--cache-ram 0` to disable the prompt cache
INFO [ main] model loaded | tid="135355715800704" timestamp=1770404843
INFO [ main] chat template | tid="135355715800704" timestamp=1770404843 chat_template="{% macro render_content(content) %}{% if content is none %}{{- '' }}{% elif content is string %}{{- content }}{% elif content is mapping %}{{- content['value'] if 'value' in content else content['text'] }}{% elif content is iterable %}{% for item in content %}{% if item.type == 'text' %}{{- item['value'] if 'value' in item else item['text'] }}{% elif item.type == 'image' %}{% endif %}{% endfor %}{% endif %}{% endmacro %}\n{{bos_token}}{%- if tools %}\n {{- '<|im_start|>system\\n' }}\n {%- if messages[0].role == 'system' %}\n {{- render_content(messages[0].content) + '\\n\\n' }}\n {%- endif %}\n {{- \"# Tools\\n\\nYou have access to the following functions in JSONSchema format:\\n\\n\" }}\n {%- for tool in tools %}\n {{- \"\\n\" }}\n {{- tool | tojson(ensure_ascii=False) }}\n {%- endfor %}\n {{- \"\\n\\n\\nIf you choose to call a function ONLY reply in the following format with NO suffix:\\n\\n\\n\\n\\nvalue_1\\n\\n\\nThis is the value for the second parameter\\nthat can span\\nmultiple lines\\n\\n\\n\\n\\n\\nReminder:\\n- Function calls MUST follow the specified format: an inner \\n...\\n block must be nested within \\n...\\n XML tags\\n- Required parameters MUST be specified\\n<|im_end|>\\n\" }}\n{%- else %}\n {%- if messages[0].role == 'system' %}\n {{- '<|im_start|>system\\n' + render_content(messages[0].content) + '<|im_end|>\\n' }}\n {%- endif %}\n{%- endif %}\n{%- set ns = namespace(multi_step_tool=true, last_query_index=messages|length - 1) %}\n{%- for message in messages[::-1] %}\n {%- set index = (messages|length - 1) - loop.index0 %}\n {%- if ns.multi_step_tool and message.role == \"user\" and render_content(message.content) is string and not(render_content(message.content).startswith('') and render_content(message.content).endswith('')) %}\n {%- set ns.multi_step_tool = false %}\n {%- set ns.last_query_index = index %}\n {%- endif %}\n{%- endfor %}\n{%- for message in messages %}\n {%- set content = render_content(message.content) %}\n {%- if (message.role == \"user\") or (message.role == \"system\" and not loop.first) %}\n {%- set role_name = 'observation' if (message.role == \"system\" and not loop.first and message.name == 'observation') else message.role %}\n {{- '<|im_start|>' + role_name + '\\n' + content + '<|im_end|>' + '\\n' }}\n {%- elif message.role == \"assistant\" %}\n {%- set reasoning_content = '' %}\n {%- if enable_thinking %}\n {%- if message.reasoning_content is string %}\n {%- set reasoning_content = render_content(message.reasoning_content) %}\n {%- else %}\n {%- if '' in content %}\n {%- set reasoning_content = content.split('')[0].rstrip('\\n').split('')[-1].lstrip('\\n') %}\n {%- set content = content.split('')[-1].lstrip('\\n') %}\n {%- endif %}\n {%- endif %}\n {%- else %}\n {# If thinking is disabled, strip any inline ... from assistant content #}\n {%- if '' in content %}\n {%- set content = content.split('')[-1].lstrip('\\n') %}\n {%- endif %}\n {%- endif %}\n\n {%- if loop.index0 > ns.last_query_index and enable_thinking %}\n {{- '<|im_start|>' + message.role + '\\n\\n' + reasoning_content.rstrip('\\n') + '\\n\\n' + content.lstrip('\\n') }}\n {%- else %}\n {{- '<|im_start|>' + message.role + '\\n' + content.lstrip('\\n') }}\n {%- endif %}\n {%- if message.tool_calls %}\n {%- for tool_call in message.tool_calls %}\n {%- if tool_call.function is defined %}\n {%- set tool_call = tool_call.function %}\n {%- endif %}\n {{- '\\n\\n' }}\n {%- if tool_call.arguments is defined %}\n {%- if tool_call.arguments is mapping %}\n {%- set arguments = tool_call.arguments %}\n {%- for args_name, args_value in arguments|items %}\n {{- '\\n' }}\n {%- set args_value = args_value | tojson(ensure_ascii=False) | safe if args_value is mapping or (args_value is sequence and args_value is not string) else args_value | string %}\n {{- args_value }}\n {{- '\\n\\n' }}\n {%- endfor %}\n {%- elif tool_call.arguments is string %}\n {# Minja does not support fromjson; preserve raw JSON string as a single parameter #}\n {{- '\\n' + tool_call.arguments + '\\n\\n' }}\n {%- endif %}\n {%- endif %}\n {{- '\\n' }}\n {%- endfor %}\n {%- endif %}\n {{- '<|im_end|>\\n' }}\n {%- elif message.role == \"tool\" %}\n {%- if loop.first or (messages[loop.index0 - 1].role != \"tool\") %}\n {{- '<|im_start|>tool_response\\n' }}\n {%- endif %}\n {{- '' }}\n {{- content }}\n {{- '' }}\n {%- if loop.last or (messages[loop.index0 + 1].role != \"tool\") %}\n {{- '<|im_end|>\\n' }}\n {%- endif %}\n {%- endif %}\n{%- endfor %}\n{%- if add_generation_prompt %}\n {{- '<|im_start|>assistant\\n' }}\n {%- if enable_thinking %}\n {{- '\\n' }}\n {%- endif %}\n{%- endif %}\n"
INFO [ main] chat template | tid="135355715800704" timestamp=1770404843 chat_example="<|im_start|>system\nYou are a helpful assistant<|im_end|>\n<|im_start|>user\nHello<|im_end|>\n<|im_start|>assistant\nHi there<|im_end|>\n<|im_start|>user\nHow are you?<|im_end|>\n<|im_start|>assistant\n\n" built_in=true
INFO [ main] HTTP server listening | tid="135355715800704" timestamp=1770404843 n_threads_http="511" port="8080" hostname="127.0.0.1"
INFO [ slots_idle] all slots are idle | tid="135355715800704" timestamp=1770404843