Source fork of Strata Qwen3.6-35B-A3B optimized for NVIDIA Pascal GTX 1050 Ti Mobile 4 GB.
C++
4
2 commits
updated Oct 10, 2026
An experimental source fork of Strata's Qwen3.6 engine, tuned for the NVIDIA GeForce GTX 1050 Ti Mobile 4 GB (sm61). It runs the 35B-A3B MoE model with CPU/GPU expert execution, an adaptive GPU expert cache, MTP drafting, and a long-prompt layer-major prefill path.
This repository contains source code and reproducible Windows build/run scripts. It does not commit the model, binaries, DLLs, benchmark logs, or release archives. Tagged builds are compiled by GitHub Actions and attached separately on the Releases page.
Same machine, model, prompt token IDs, 25,088-token effective context, single stream, greedy sampling, and 1,000 generated tokens:
| Engine | 8K prefill | 8K decode | 16K prefill | 16K decode |
|---|---|---|---|---|
| llama.cpp b11524 | 113.47 t/s | 7.88 t/s | 105.12 t/s | 7.16 t/s |
| Original Strata Qwen3.6 branch, Pascal compatibility build | 141.75 t/s | 15.00 t/s | 106.76 t/s | 13.63 t/s |
| Strata Qwen3.6 Pascal Optimized | 256.80 t/s | 24.53 t/s | 210.98 t/s | 21.40 t/s |
The optimized build improved:
Test system: Intel Core i7-8750H, 48 GB RAM, Windows 11, NVIDIA driver 577.00. The optimized executable used CUDA 12.9; llama.cpp used its official CUDA 12.4 Windows package. The optimized figures average four runs at each prompt size; each comparison row averages two runs.
The untouched original commit does not build for sm61 or import all expert tensor types in this GGUF. Its measured row therefore uses the smallest required Pascal/import compatibility changes while retaining the original inference path. These are throughput measurements, not model-quality scores; the fixed-length document answers exposed factual or structural review flags across the tested engines.
Download the exact tested model from Hugging Face:
Qwen3.6-35B-A3B-UD-IQ3_XXS.gguf36f9ec0e4c775f6efd3a61c1ea76f0875128469c3d012e3d9e2495a90e7a7150The file is about 14.1 GB. Git LFS is not required for this source repository because the GGUF is not included.
sm61Requirements:
PATHRun:
BUILD-PASCAL-SM61.bat
The script checks out the pinned llama.cpp dependency at commit 3cf03257f219afbe7334045ff7c6a06ac68c627d, configures the Qwen engine with SQ_ENABLE_PREFILL_MMQ=ON, and writes:
build-sm61\strata-qwen35moe.exe
No prebuilt executable is committed.
The Windows Pascal release GitHub Actions workflow builds the same sm61 target with CUDA Toolkit 12.9. A pushed v* tag creates a GitHub Release containing a ZIP and its SHA-256 checksum. The ZIP contains the engine, required cuBLAS and Visual C++ runtime DLLs, the optimized launcher, and the web/API server. It does not contain the GGUF model.
After extracting a release, run SETUP-RUNTIME.bat once and then:
START-OPTIMIZED-PASCAL.bat "D:\models\Qwen3.6-35B-A3B-UD-IQ3_XXS.gguf"
See BINARY-RELEASE.md for requirements and complete instructions.
Create the Python environment once:
py -3 -m venv .venv
.venv\Scripts\python.exe -m pip install -r requirements.txt
Start the server with the GGUF path:
START-OPTIMIZED-PASCAL.bat "D:\models\Qwen3.6-35B-A3B-UD-IQ3_XXS.gguf"
The launcher extracts the tokenizer from the GGUF on first use, writes only local ignored state under .local-data and runtime, and serves the OpenAI-compatible API and web UI on http://127.0.0.1:8080. Press Ctrl+C in its console to stop it.
Optional arguments:
START-OPTIMIZED-PASCAL.bat MODEL.gguf --port 8080 --context 25000 --threads 6
START-OPTIMIZED-PASCAL.bat MODEL.gguf --tokenizer D:\path\to\tokenizer
The tested profile assumes one inference stream and a 4 GB Pascal GPU. Display workloads also consume VRAM; start the server after connecting the monitors you intend to use.
A 4 GB GPU cannot keep this model's weights, KV cache, expert cache, MTP state, and a large prompt workspace resident at the same time. The central design change is to give the same VRAM to different jobs during prefill and decode, instead of forcing one static allocation to serve both phases.
0.85, and are reconsidered every four tokens with at most 16 swaps. The policy limits PCIe traffic and eviction churn; cache-hit percentage alone is not treated as the objective because a higher hit rate can still be slower when swaps or non-overlapped transfers dominate.sm61. Prefill shares prepared K/V data, uses an AQ6 bank layout for attention, and selects a full-tile cuBLAS algorithm that measured well on Pascal. Tail shapes retain the general path. These choices are runtime-gated so an unsupported architecture does not accidentally use the Pascal-specific dispatch.The corresponding implementation is concentrated in engine.cpp, prefill.cu, prefill_mmq.cu, the native IQ CPU kernels, and the explicit tested settings in run_qwen36_pascal_optimized.py.
| Technique | Why it helps | Porting guidance |
|---|---|---|
| Native quantized experts | Avoids conversion, extra resident bytes, and wasted memory bandwidth | Useful on every GPU and CPU, but each GGUF type needs a validated native kernel. |
| Phase-specific VRAM loans | Prefill and decode need different large allocations | Broadly useful on low-VRAM systems. Recalculate the head, rollback, KV, and safety-reserve sizes for the model and GPU. |
| Layer-major bounded windows | Reuses prepared weights across many prompt tokens | Broadly useful for long prompts. Larger GPUs can use larger windows; short prompts should keep a lower-overhead path. |
| Packed MMQ | Reads compressed weights once and uses integer dot products | Pascal benefits from DP4A. Turing, Ampere, Ada, and newer GPUs should benchmark IMMA/Tensor Core or generation-tuned kernels rather than assume the sm61 launch geometry is best. |
| CPU/GPU expert overlap | Turns otherwise idle CPU cores into useful miss capacity | Useful when CPU compute and PCIe copies can hide behind GPU work. Retune worker count, affinity, and spin/wait thresholds for the host CPU. |
| Cost-aware expert cache | Keeps hot experts resident without unlimited transfers | Useful for any MoE. Capacity, decay, swap budget, and admission policy must reflect PCIe speed and expert size. |
| Prompt-informed cache refill | The prompt often predicts the experts used during its answer | Model-independent in concept. Measure whether prompt and decode routing correlate for the target model and workload. |
| MTP work elimination | Avoids projection and state work that cannot affect accepted drafts | Applies to compatible speculative models, but draft layout, verification, and rollback semantics are model-specific. |
| Attention/dense autotuning | Library defaults are not always best for unusual old or small GPUs | Keep the dispatch gated by architecture and shape, and benchmark full tiles and tails separately. |
| AVX2 native expert kernels | Makes CPU fallback fast enough to overlap usefully | Replace with AVX-512/VNNI or ARM kernels where available; do not compile the whole program for an ISA the user's CPU may lack. |
This fork starts from ansonsi/Strata-Qwen3.6-35B-A3B commit f6b748c78885ed19369860441660c9015c1a1c5f, itself derived from Niko1221/Strata. The packed-MMQ path builds against pinned llama.cpp/ggml source. See SOURCE-PROVENANCE.md, UPSTREAM-README.md, and LICENSE.
This is an independent experimental fork and is not an official Qwen, Unsloth, llama.cpp, or upstream Strata release.
Source fork of Strata Qwen3.6-35B-A3B optimized for NVIDIA Pascal GTX 1050 Ti Mobile 4 GB.
C++
4
2 commits
updated Oct 10, 2026
An experimental source fork of Strata's Qwen3.6 engine, tuned for the NVIDIA GeForce GTX 1050 Ti Mobile 4 GB (sm61). It runs the 35B-A3B MoE model with CPU/GPU expert execution, an adaptive GPU expert cache, MTP drafting, and a long-prompt layer-major prefill path.
This repository contains source code and reproducible Windows build/run scripts. It does not commit the model, binaries, DLLs, benchmark logs, or release archives. Tagged builds are compiled by GitHub Actions and attached separately on the Releases page.
Same machine, model, prompt token IDs, 25,088-token effective context, single stream, greedy sampling, and 1,000 generated tokens:
| Engine | 8K prefill | 8K decode | 16K prefill | 16K decode |
|---|---|---|---|---|
| llama.cpp b11524 | 113.47 t/s | 7.88 t/s | 105.12 t/s | 7.16 t/s |
| Original Strata Qwen3.6 branch, Pascal compatibility build | 141.75 t/s | 15.00 t/s | 106.76 t/s | 13.63 t/s |
| Strata Qwen3.6 Pascal Optimized | 256.80 t/s | 24.53 t/s | 210.98 t/s | 21.40 t/s |
The optimized build improved:
Test system: Intel Core i7-8750H, 48 GB RAM, Windows 11, NVIDIA driver 577.00. The optimized executable used CUDA 12.9; llama.cpp used its official CUDA 12.4 Windows package. The optimized figures average four runs at each prompt size; each comparison row averages two runs.
The untouched original commit does not build for sm61 or import all expert tensor types in this GGUF. Its measured row therefore uses the smallest required Pascal/import compatibility changes while retaining the original inference path. These are throughput measurements, not model-quality scores; the fixed-length document answers exposed factual or structural review flags across the tested engines.
Download the exact tested model from Hugging Face:
Qwen3.6-35B-A3B-UD-IQ3_XXS.gguf36f9ec0e4c775f6efd3a61c1ea76f0875128469c3d012e3d9e2495a90e7a7150The file is about 14.1 GB. Git LFS is not required for this source repository because the GGUF is not included.
sm61Requirements:
PATHRun:
BUILD-PASCAL-SM61.bat
The script checks out the pinned llama.cpp dependency at commit 3cf03257f219afbe7334045ff7c6a06ac68c627d, configures the Qwen engine with SQ_ENABLE_PREFILL_MMQ=ON, and writes:
build-sm61\strata-qwen35moe.exe
No prebuilt executable is committed.
The Windows Pascal release GitHub Actions workflow builds the same sm61 target with CUDA Toolkit 12.9. A pushed v* tag creates a GitHub Release containing a ZIP and its SHA-256 checksum. The ZIP contains the engine, required cuBLAS and Visual C++ runtime DLLs, the optimized launcher, and the web/API server. It does not contain the GGUF model.
After extracting a release, run SETUP-RUNTIME.bat once and then:
START-OPTIMIZED-PASCAL.bat "D:\models\Qwen3.6-35B-A3B-UD-IQ3_XXS.gguf"
See BINARY-RELEASE.md for requirements and complete instructions.
Create the Python environment once:
py -3 -m venv .venv
.venv\Scripts\python.exe -m pip install -r requirements.txt
Start the server with the GGUF path:
START-OPTIMIZED-PASCAL.bat "D:\models\Qwen3.6-35B-A3B-UD-IQ3_XXS.gguf"
The launcher extracts the tokenizer from the GGUF on first use, writes only local ignored state under .local-data and runtime, and serves the OpenAI-compatible API and web UI on http://127.0.0.1:8080. Press Ctrl+C in its console to stop it.
Optional arguments:
START-OPTIMIZED-PASCAL.bat MODEL.gguf --port 8080 --context 25000 --threads 6
START-OPTIMIZED-PASCAL.bat MODEL.gguf --tokenizer D:\path\to\tokenizer
The tested profile assumes one inference stream and a 4 GB Pascal GPU. Display workloads also consume VRAM; start the server after connecting the monitors you intend to use.
A 4 GB GPU cannot keep this model's weights, KV cache, expert cache, MTP state, and a large prompt workspace resident at the same time. The central design change is to give the same VRAM to different jobs during prefill and decode, instead of forcing one static allocation to serve both phases.
0.85, and are reconsidered every four tokens with at most 16 swaps. The policy limits PCIe traffic and eviction churn; cache-hit percentage alone is not treated as the objective because a higher hit rate can still be slower when swaps or non-overlapped transfers dominate.sm61. Prefill shares prepared K/V data, uses an AQ6 bank layout for attention, and selects a full-tile cuBLAS algorithm that measured well on Pascal. Tail shapes retain the general path. These choices are runtime-gated so an unsupported architecture does not accidentally use the Pascal-specific dispatch.The corresponding implementation is concentrated in engine.cpp, prefill.cu, prefill_mmq.cu, the native IQ CPU kernels, and the explicit tested settings in run_qwen36_pascal_optimized.py.
| Technique | Why it helps | Porting guidance |
|---|---|---|
| Native quantized experts | Avoids conversion, extra resident bytes, and wasted memory bandwidth | Useful on every GPU and CPU, but each GGUF type needs a validated native kernel. |
| Phase-specific VRAM loans | Prefill and decode need different large allocations | Broadly useful on low-VRAM systems. Recalculate the head, rollback, KV, and safety-reserve sizes for the model and GPU. |
| Layer-major bounded windows | Reuses prepared weights across many prompt tokens | Broadly useful for long prompts. Larger GPUs can use larger windows; short prompts should keep a lower-overhead path. |
| Packed MMQ | Reads compressed weights once and uses integer dot products | Pascal benefits from DP4A. Turing, Ampere, Ada, and newer GPUs should benchmark IMMA/Tensor Core or generation-tuned kernels rather than assume the sm61 launch geometry is best. |
| CPU/GPU expert overlap | Turns otherwise idle CPU cores into useful miss capacity | Useful when CPU compute and PCIe copies can hide behind GPU work. Retune worker count, affinity, and spin/wait thresholds for the host CPU. |
| Cost-aware expert cache | Keeps hot experts resident without unlimited transfers | Useful for any MoE. Capacity, decay, swap budget, and admission policy must reflect PCIe speed and expert size. |
| Prompt-informed cache refill | The prompt often predicts the experts used during its answer | Model-independent in concept. Measure whether prompt and decode routing correlate for the target model and workload. |
| MTP work elimination | Avoids projection and state work that cannot affect accepted drafts | Applies to compatible speculative models, but draft layout, verification, and rollback semantics are model-specific. |
| Attention/dense autotuning | Library defaults are not always best for unusual old or small GPUs | Keep the dispatch gated by architecture and shape, and benchmark full tiles and tails separately. |
| AVX2 native expert kernels | Makes CPU fallback fast enough to overlap usefully | Replace with AVX-512/VNNI or ARM kernels where available; do not compile the whole program for an ISA the user's CPU may lack. |
This fork starts from ansonsi/Strata-Qwen3.6-35B-A3B commit f6b748c78885ed19369860441660c9015c1a1c5f, itself derived from Niko1221/Strata. The packed-MMQ path builds against pinned llama.cpp/ggml source. See SOURCE-PROVENANCE.md, UPSTREAM-README.md, and LICENSE.
This is an independent experimental fork and is not an official Qwen, Unsloth, llama.cpp, or upstream Strata release.