Model setup recipes

Qwen3.6 35B-A3B: vLLM setup and the qwen3 parser

Qwen3.6 35B-A3B may seem like a small model due to its description as Active 3B. However, on 24GB devices, the margin may not be large after increasing the overall Q4 weight. After tuning my memory and distinguishing between the thought process and the final answer, I'll look for settings that speed up my questions.

Hardware-specific speed tuning and serving recipe summary

Provides weights, KV cache, prefill batch, and concurrent request with acceleration functionality, separated for balanced performance, speed, and long-context profiling.

HardwaresuitabilityRecommended runtimeOperational Profilestart contextDecode
MBP M5 Pro 48GB (41GB)memory titrationoMLXBalance setting · generation speed · MTP · long context16,384 tokens22.6 ~ 54.1 tok/s
Studio M5 Ultra 256GB (236GB)memory titrationoMLXBalance setting · generation speed · MTP · long context16,384 tokens71.5 ~ 132.7 tok/s
Studio M5 Ultra 512GB (480GB)memory titrationoMLXBalance setting · generation speed · MTP · long context16,384 tokens71.5 ~ 132.7 tok/s
RTX 4090 24GB (22.5GB)memory is tightllama.cpp (CUDA)Balanced setting · prefill prioritized · long context4,096 tokens62.7 ~ 157.5 tok/s
2× RTX 3090 48GB (NVLink) (45GB)memory titrationllama.cpp (multi-GPU)Balanced setting · prefill prioritized · long context16,384 tokens76 ~ 238.7 tok/s
RTX PRO 6000 96GB (93GB)memory titrationllama.cpp (CUDA)Balanced setting · prefill prioritized · long context16,384 tokens107 ~ 268.8 tok/s
DGX Spark 128GB (116GB)memory titrationllama.cpp (CUDA)Balanced setting · prefill prioritized · long context16,384 tokens16.3 ~ 41 tok/s
Ryzen AI Max+ 395 128GB (116GB)memory titrationllama.cpp (ROCm/HIP)Balanced setting · prefill prioritized · long context16,384 tokens15.3 ~ 38.4 tok/s

On the detail page, you can check the command per profile, applied value, stopping conditions, and measurement order. The execution command is displayed only for combinations of model file and execution program that have been verified.

On 24GB, what remains after loading the model matters

The compatible Q4 conversion takes the guidance of around 20GB as a starting point, but confirms the actual file. Model weights, 4K to 8K context cache, and execution space must be included. Just having a message loaded on the GPU does not guarantee a long conversation.

Even above 32GB, you should make sure you have room for other apps and cache. The official checkpoint has a different capacity than the Q4 conversion. The multi-GPU example below and the command to open the desktop file have different paths.

First, match the support of the model you are receiving with the running app. If you have a file that was working normally, you should keep it and test the new path so you have a standard to compare it to if a problem occurs.

The number of GPUs in the server example is not a purchase recommendation

The number of parallels in the official vLLM example must match the installed equipment and memory/support requirements. Don't read the 8 in the comments to mean that eight GPUs are all you need. If your intention is to run a desktop Q4, use LM Studio or the path in the device selector above.

vLLM checks which version supports the model and the qwen3 inference parser. This example takes the vLLM 0.19.0 or later instructions as a starting point, but the actual execution condition is whether it is supported by the currently installed version. The server first places only local addresses.

MTP is added from the supported combinations after the standard answer comes out normally. Rather than copying multiple options at once, a record of default values ​​and changed items is better for finding the cause in your environment.

vLLM 0.19.0+ Official Checkpoint (Multi-GPU)

GPU_COUNT=8 # 공식 예시는 8 GPU, 실제 구성에 맞춰 수정
vllm serve Qwen/Qwen3.6-35B-A3B   --host 127.0.0.1   --port 8000   --tensor-parallel-size "$GPU_COUNT"   --max-model-len 8192   --reasoning-parser qwen3   --gpu-memory-utilization 0.92

The formal checkpoint specifies the tensor parallelism size based on the number of GPUs installed.

LM Studio Desktop Serving (Q4 GGUF)

lms ls
lms load <qwen-3.6-35b-identifier> --gpu=max --context-length=8192
lms server start --port 1234

Easily start a local daemon with LM Studio on a 32GB or larger Mac or higher-capacity GPU.

Distinguish between thinking time and writing time.

The inference parser helps apps distinguish between the thought process and the final result. Make sure you're already generating thought tokens when the final sentence appears late on the screen. Recording all of this as prefill will result in a misreading of the input processing performance.

Compare the input length, maximum output, and thought settings for the same question. After the prepare run, we leave the median of the three runs and the actual number of output tokens. Comparing only the completion times of two runs with significantly different answer lengths makes it difficult to separate the generation rates.

The test below is for the 8000 address of vLLM. If you used LM Studio, match 1234 with the model identifier you loaded. If the addresses are different, it may not be a matter of the model being slow, but a question of asking a different server.

Inference chat completion API call test

curl -N http://127.0.0.1:8000/v1/chat/completions   -H "Content-Type: application/json"   -d '{
    "model": "Qwen/Qwen3.6-35B-A3B",
    "messages": [
      {"role": "user", "content": "파이썬으로 이진 탐색 함수를 작성하고 시간 복잡도를 설명해줘."}
    ],
    "max_tokens": 1024,
    "stream": true
  }'

Verify inference results and incident tokens with the 127.0.0.1:8000 endpoint.

Increase long context and acceleration one by one

If 24GB is limited, try limiting the request to one and keeping the context short. We then check the cache and peak memory when increasing the input length to the required length. If the speed drops suddenly, first check to see if any weights have been transferred to swap or CPU.

Turn on supported MTP to see if the average acknowledgment length and decode actually improve. Don't apply the scaling that works well for one type of code to general writing. Cache precision and prefill chunks should also be compared individually.

If waiting for long input is the only issue, there is reason to look at input processing and caching rather than decode acceleration. By writing down which sections are slow, you can narrow down your next experiment without having to add more settings.

Once it runs, try finishing your usual work

Don't assume that testing binary search code alone is sufficient. Enter the code or document you actually want to modify and check the results. It is a setting to use only when both the answer you want and whether it is worth waiting for are correct.

Save the model file, runtime, context and acceleration in that state. These are also the criteria for comparison when looking at larger equipment. If you're already good enough, continuing to use your current configuration instead of a new GPU is what this recipe can give you.