ailia LLM MTP Benchmark

Measured results for Gemma 4 on the NPU and CPU of Qualcomm SoCs with MTP (Multi-Token Prediction) in ailia LLM 1.5.1.

For how MTP works and how to use it, see the ailia LLM MTP Guide.

Android

Test Conditions

Snapdragon 8+ Gen 1 (SM8475 / Hexagon v69)

E2B / FP16

Decode throughput
PathWithout MTPWith MTPMTP speedupAcceptance
CPU9.189 tokens/s8.658 tokens/s0.94x31.1%
NPU6.074 tokens/s9.751 tokens/s1.61x31.6%
SM8475 E2B decode throughput (1000 generated tokens) (CPU / NPU, without / with MTP)
SM8475 (E2B / FP16) decode throughput (1000 generated tokens)
SM8475 E2B per-token decode throughput over 1000 generated tokens (CPU / NPU, without / with MTP)
SM8475 (E2B / FP16) per-token decode throughput over 1000 generated tokens
Prefill throughput
Path6412825651210242048
CPU (without MTP)35.33733.20132.40931.38329.32727.196
CPU (with MTP)31.12831.36631.31030.97829.10127.040
NPU (without MTP)76.766149.788294.427306.972304.128299.831
NPU (with MTP)77.393155.049306.953307.530304.491300.197
SM8475 E2B prefill throughput (2,048-token input) (CPU / NPU, without / with MTP)
SM8475 (E2B / FP16) prefill throughput (2,048-token input)
SM8475 E2B prefill throughput by input length (CPU / NPU, without / with MTP)
SM8475 (E2B / FP16) prefill throughput by input length
VLM (image input) and audio input latency
InputPathTTFTDecodeAcceptance
ImageCPU (without MTP)33.46 s8.784 tokens/s—
ImageCPU (with MTP)34.00 s7.701 tokens/s28.9%
ImageNPU (without MTP)7.06 s5.382 tokens/s—
ImageNPU (with MTP)6.92 s10.476 tokens/s41.7%
AudioCPU (without MTP)21.79 s9.138 tokens/s—
AudioCPU (with MTP)21.65 s12.712 tokens/s80.0%
AudioNPU (without MTP)4.20 s5.344 tokens/s—
AudioNPU (with MTP)4.53 s18.054 tokens/s100.0%

NPU (with MTP) TTFT is 1/4.8 (image) and 1/4.8 (audio) of the CPU (without MTP). With MTP, NPU decode became 1.95x for image input and 3.38x for audio input.

SM8475 E2B VLM / audio input TTFT breakdown (CPU / NPU, without / with MTP)
SM8475 (E2B / FP16) VLM (left) / audio input (right) TTFT breakdown: prompt setup including the encoder, and decoder prefill + first token
SM8475 E2B VLM / audio input decode throughput (CPU / NPU, without / with MTP)
SM8475 (E2B / FP16) VLM (left) / audio input (right) decode throughput
CPU usage
InputCPU (without MTP)CPU (with MTP)NPU (without MTP)NPU (with MTP)
Text48.9%48.3%2.6%4.4%
Image48.7%48.1%3.7%4.8%
Audio48.6%47.3%3.6%4.8%
SM8475 E2B CPU usage during text generation decode
SM8475 (E2B / FP16) process CPU usage during text generation decode
SM8475 E2B average CPU usage during prefill (mean of 64 to 2,048-token inputs)
SM8475 (E2B / FP16) average process CPU usage during prefill (mean of 64 to 2,048-token inputs)
SM8475 E2B CPU usage during image / audio input TTFT
SM8475 (E2B / FP16) process CPU usage during image (left) / audio input (right) TTFT

Snapdragon 7s Gen 3 (SM7635 / Hexagon v73)

E2B / Int16

Decode throughput
PathWithout MTPWith MTPMTP speedupAcceptance
CPU8.423 tokens/s11.336 tokens/s1.35x31.1%
NPU6.680 tokens/s10.579 tokens/s1.58x34.8%
SM7635 E2B decode throughput (1000 generated tokens) (CPU / NPU, without / with MTP)
SM7635 (E2B / Int16) decode throughput (1000 generated tokens)
SM7635 E2B per-token decode throughput over 1000 generated tokens (CPU / NPU, without / with MTP)
SM7635 (E2B / Int16) per-token decode throughput over 1000 generated tokens
Prefill throughput
Path6412825651210242048
CPU (without MTP)57.46654.39551.54747.66137.40833.600
CPU (with MTP)50.45149.91049.45246.38734.60831.654
NPU (without MTP)32.91164.958129.053130.981128.974127.976
NPU (with MTP)33.34466.363132.603132.104130.779129.264
SM7635 E2B prefill throughput (2,048-token input) (CPU / NPU, without / with MTP)
SM7635 (E2B / Int16) prefill throughput (2,048-token input)
SM7635 E2B prefill throughput by input length (CPU / NPU, without / with MTP)
SM7635 (E2B / Int16) prefill throughput by input length
VLM (image input) and audio input latency
InputPathTTFTDecodeAcceptance
ImageCPU (without MTP)17.99 s8.035 tokens/s—
ImageCPU (with MTP)17.74 s11.046 tokens/s28.9%
ImageNPU (without MTP)8.41 s6.715 tokens/s—
ImageNPU (with MTP)7.85 s9.713 tokens/s30.1%
AudioCPU (without MTP)14.14 s7.972 tokens/s—
AudioCPU (with MTP)14.10 s16.313 tokens/s80.0%
AudioNPU (without MTP)7.48 s6.712 tokens/s—
AudioNPU (with MTP)7.56 s17.268 tokens/s92.6%

NPU (with MTP) TTFT is 1/2.3 (image) and 1/1.9 (audio) of the CPU (without MTP). With MTP, NPU decode became 1.45x for image input and 2.57x for audio input.

SM7635 E2B VLM / audio input TTFT breakdown (CPU / NPU, without / with MTP)
SM7635 (E2B / Int16) VLM (left) / audio input (right) TTFT breakdown: prompt setup including the encoder, and decoder prefill + first token
SM7635 E2B VLM / audio input decode throughput (CPU / NPU, without / with MTP)
SM7635 (E2B / Int16) VLM (left) / audio input (right) decode throughput
CPU usage
InputCPU (without MTP)CPU (with MTP)NPU (without MTP)NPU (with MTP)
Text49.0%48.0%2.4%4.1%
Image48.7%47.7%2.4%4.2%
Audio48.7%47.0%2.4%4.3%
SM7635 E2B CPU usage during text generation decode
SM7635 (E2B / Int16) process CPU usage during text generation decode
SM7635 E2B average CPU usage during prefill (mean of 64 to 2,048-token inputs)
SM7635 (E2B / Int16) average process CPU usage during prefill (mean of 64 to 2,048-token inputs)
SM7635 E2B CPU usage during image / audio input TTFT
SM7635 (E2B / Int16) process CPU usage during image (left) / audio input (right) TTFT

E4B / Int16

Decode throughput
PathWithout MTPWith MTPMTP speedupAcceptance
CPU4.217 tokens/s6.944 tokens/s1.65x37.1%
NPU3.191 tokens/s3.163 tokens/s0.99x38.6%
SM7635 E4B decode throughput (1000 generated tokens) (CPU / NPU, without / with MTP)
SM7635 (E4B / Int16) decode throughput (1000 generated tokens)
SM7635 E4B per-token decode throughput over 1000 generated tokens (CPU / NPU, without / with MTP)
SM7635 (E4B / Int16) per-token decode throughput over 1000 generated tokens
Prefill throughput
Path6412825651210242048
CPU (without MTP)34.77335.41538.18236.07629.31727.488
CPU (with MTP)33.00234.06432.73932.09429.62026.869
NPU (without MTP)20.38040.49579.37782.22682.66282.534
NPU (with MTP)20.62340.63080.44083.11982.88782.257
SM7635 E4B prefill throughput (2,048-token input) (CPU / NPU, without / with MTP)
SM7635 (E4B / Int16) prefill throughput (2,048-token input)
SM7635 E4B prefill throughput by input length (CPU / NPU, without / with MTP)
SM7635 (E4B / Int16) prefill throughput by input length
VLM (image input) and audio input latency
InputPathTTFTDecodeAcceptance
ImageCPU (without MTP)99.00 s4.401 tokens/s—
ImageCPU (with MTP)103.83 s6.446 tokens/s37.6%
ImageNPU (without MTP)15.15 s3.140 tokens/s—
ImageNPU (with MTP)14.89 s3.220 tokens/s40.0%
AudioCPU (without MTP)52.73 s4.055 tokens/s—
AudioCPU (with MTP)50.40 s7.507 tokens/s100.0%
AudioNPU (without MTP)13.01 s3.043 tokens/s—
AudioNPU (with MTP)13.19 s5.503 tokens/s100.0%

NPU (with MTP) TTFT is 1/6.6 (image) and 1/4.0 (audio) of the CPU (without MTP). With MTP, NPU decode became 1.03x for image input and 1.81x for audio input.

SM7635 E4B VLM / audio input TTFT breakdown (CPU / NPU, without / with MTP)
SM7635 (E4B / Int16) VLM (left) / audio input (right) TTFT breakdown: prompt setup including the encoder, and decoder prefill + first token
SM7635 E4B VLM / audio input decode throughput (CPU / NPU, without / with MTP)
SM7635 (E4B / Int16) VLM (left) / audio input (right) decode throughput
CPU usage
InputCPU (without MTP)CPU (with MTP)NPU (without MTP)NPU (with MTP)
Text48.3%46.5%1.4%2.0%
Image48.5%46.8%1.7%2.0%
Audio48.1%42.5%2.0%2.1%
SM7635 E4B CPU usage during text generation decode
SM7635 (E4B / Int16) process CPU usage during text generation decode
SM7635 E4B average CPU usage during prefill (mean of 64 to 2,048-token inputs)
SM7635 (E4B / Int16) average process CPU usage during prefill (mean of 64 to 2,048-token inputs)
SM7635 E4B CPU usage during image / audio input TTFT
SM7635 (E4B / Int16) process CPU usage during image (left) / audio input (right) TTFT

Windows

Test Conditions

Snapdragon X Plus (SC8380XP / Hexagon v73)

E2B / FP16

Decode throughput
PathWithout MTPWith MTPMTP speedupAcceptance
CPU36.097 tokens/s45.952 tokens/s1.27x31.1%
GPU15.789 tokens/s7.956 tokens/s0.50x39.0%
NPU7.396 tokens/s10.725 tokens/s1.45x31.2%

Decode is fastest on the CPU. On the GPU, decode became slower with MTP.

Snapdragon X Plus E2B decode throughput (1000 generated tokens, CPU / GPU / NPU, without / with MTP)
SC8380XP (E2B / FP16) decode throughput (1000 generated tokens)
Snapdragon X Plus E2B per-token decode throughput over 1000 generated tokens (CPU / GPU / NPU, without / with MTP)
SC8380XP (E2B / FP16) per-token decode throughput over 1000 generated tokens
Prefill throughput
Path6412825651210242048
CPU (without MTP)261.792243.510228.444203.791180.420162.898
CPU (with MTP)226.239209.196212.324198.671179.041159.733
GPU (without MTP)191.567211.200226.293210.324185.268155.789
GPU (with MTP)110.794150.182181.306187.165173.085149.692
NPU (without MTP)142.326268.719550.238558.241556.910535.660
NPU (with MTP)146.658291.834572.231550.662545.243549.844

For inputs of 128 tokens or more the NPU is the fastest; for a 2,048-token input it is 3.29x the CPU (without MTP). NPU prefill is almost the same with and without MTP.

Snapdragon X Plus E2B prefill throughput (2,048-token input, CPU / GPU / NPU, without / with MTP)
SC8380XP (E2B / FP16) prefill throughput (2,048-token input)
Snapdragon X Plus E2B prefill throughput by input length (CPU / GPU / NPU, without / with MTP)
SC8380XP (E2B / FP16) prefill throughput by input length
VLM (image input) and audio input latency
InputPathTTFTDecodeAcceptance
ImageCPU (without MTP)77.44 s38.097 tokens/s—
ImageCPU (with MTP)77.44 s61.421 tokens/s43.2%
ImageGPU (without MTP)77.83 s17.383 tokens/s—
ImageGPU (with MTP)77.82 s8.451 tokens/s41.7%
ImageNPU (without MTP)6.39 s7.132 tokens/s—
ImageNPU (with MTP)5.95 s11.525 tokens/s39.9%
AudioCPU (without MTP)30.93 s39.247 tokens/s—
AudioCPU (with MTP)30.75 s103.169 tokens/s92.6%
AudioGPU (without MTP)30.77 s16.935 tokens/s—
AudioGPU (with MTP)30.80 s15.584 tokens/s92.6%
AudioNPU (without MTP)4.21 s7.341 tokens/s—
AudioNPU (with MTP)4.46 s19.628 tokens/s92.6%

NPU TTFT is 1/13.0 (image) and 1/6.9 (audio) of the CPU (without MTP). With MTP, NPU decode became 1.62x for image input and 2.67x for audio input.

Snapdragon X Plus E2B VLM / audio input TTFT breakdown (CPU / GPU / NPU, without / with MTP)
SC8380XP (E2B / FP16) VLM (left) and audio input (right) TTFT breakdown (prompt setup including the encoder, and decoder prefill plus the first token)
Snapdragon X Plus E2B VLM / audio input decode throughput (CPU / GPU / NPU, without / with MTP)
SC8380XP (E2B / FP16) VLM (left) and audio input (right) decode throughput
CPU usage
InputCPU (without MTP)CPU (with MTP)GPU (without MTP)GPU (with MTP)NPU (without MTP)NPU (with MTP)
Text48.0%46.1%6.6%1.4%2.8%4.9%
Image48.5%47.7%6.2%2.8%2.9%5.4%
Audio49.1%46.6%7.4%1.2%2.7%4.9%

The CPU runs on the 4 performance cores, so CPU usage stays around 50%.

Snapdragon X Plus E2B CPU usage during text generation decode
SC8380XP (E2B / FP16) process CPU usage during text generation decode
Snapdragon X Plus E2B average CPU usage during prefill (average over 64 to 2,048-token inputs)
SC8380XP (E2B / FP16) average process CPU usage during prefill (average over 64 to 2,048-token inputs)
Snapdragon X Plus E2B CPU usage during image / audio input TTFT
SC8380XP (E2B / FP16) process CPU usage during image (left) and audio input (right) TTFT

E4B / FP16

Decode throughput
PathWithout MTPWith MTPMTP speedupAcceptance
CPU20.209 tokens/s34.010 tokens/s1.68x43.3%
GPU8.434 tokens/s4.962 tokens/s0.59x38.2%
NPU4.346 tokens/s7.172 tokens/s1.65x33.4%

Decode is fastest on the CPU. On the GPU, decode became slower with MTP.

Snapdragon X Plus E4B decode throughput (1000 generated tokens, CPU / GPU / NPU, without / with MTP)
SC8380XP (E4B / FP16) decode throughput (1000 generated tokens)
Snapdragon X Plus E4B per-token decode throughput over 1000 generated tokens (CPU / GPU / NPU, without / with MTP)
SC8380XP (E4B / FP16) per-token decode throughput over 1000 generated tokens
Prefill throughput
Path6412825651210242048
CPU (without MTP)129.117124.315119.669112.318106.23999.274
CPU (with MTP)114.588115.837117.360112.383104.56697.730
GPU (without MTP)101.494115.771122.735118.920108.91996.327
GPU (with MTP)64.26187.397102.919107.840102.89792.966
NPU (without MTP)81.311161.784312.190325.714318.495317.629
NPU (with MTP)81.512164.540324.876326.486321.507319.063

For inputs of 128 tokens or more the NPU is the fastest; for a 2,048-token input it is 3.20x the CPU (without MTP). NPU prefill is almost the same with and without MTP.

Snapdragon X Plus E4B prefill throughput (2,048-token input, CPU / GPU / NPU, without / with MTP)
SC8380XP (E4B / FP16) prefill throughput (2,048-token input)
Snapdragon X Plus E4B prefill throughput by input length (CPU / GPU / NPU, without / with MTP)
SC8380XP (E4B / FP16) prefill throughput by input length
VLM (image input) and audio input latency
InputPathTTFTDecodeAcceptance
ImageCPU (without MTP)79.04 s21.437 tokens/s—
ImageCPU (with MTP)78.75 s33.824 tokens/s37.6%
ImageGPU (without MTP)79.38 s9.423 tokens/s—
ImageGPU (with MTP)80.72 s5.596 tokens/s41.7%
ImageNPU (without MTP)9.46 s4.153 tokens/s—
ImageNPU (with MTP)8.14 s7.744 tokens/s43.4%
AudioCPU (without MTP)33.37 s21.364 tokens/s—
AudioCPU (with MTP)33.17 s58.900 tokens/s92.6%
AudioGPU (without MTP)33.04 s9.406 tokens/s—
AudioGPU (with MTP)33.07 s9.795 tokens/s92.6%
AudioNPU (without MTP)5.83 s4.183 tokens/s—
AudioNPU (with MTP)5.96 s12.772 tokens/s92.6%

NPU TTFT is 1/9.7 (image) and 1/5.6 (audio) of the CPU (without MTP). With MTP, NPU decode became 1.86x for image input and 3.05x for audio input.

Snapdragon X Plus E4B VLM / audio input TTFT breakdown (CPU / GPU / NPU, without / with MTP)
SC8380XP (E4B / FP16) VLM (left) and audio input (right) TTFT breakdown (prompt setup including the encoder, and decoder prefill plus the first token)
Snapdragon X Plus E4B VLM / audio input decode throughput (CPU / GPU / NPU, without / with MTP)
SC8380XP (E4B / FP16) VLM (left) and audio input (right) decode throughput
CPU usage
InputCPU (without MTP)CPU (with MTP)GPU (without MTP)GPU (with MTP)NPU (without MTP)NPU (with MTP)
Text48.7%48.1%4.6%2.1%1.8%3.0%
Image49.0%47.9%5.4%2.6%1.8%3.2%
Audio48.9%46.0%5.6%2.3%1.7%3.2%

The CPU runs on the 4 performance cores, so CPU usage stays around 50%.

Snapdragon X Plus E4B CPU usage during text generation decode
SC8380XP (E4B / FP16) process CPU usage during text generation decode
Snapdragon X Plus E4B average CPU usage during prefill (average over 64 to 2,048-token inputs)
SC8380XP (E4B / FP16) average process CPU usage during prefill (average over 64 to 2,048-token inputs)
Snapdragon X Plus E4B CPU usage during image / audio input TTFT
SC8380XP (E4B / FP16) process CPU usage during image (left) and audio input (right) TTFT

QCS6490 (Hexagon v68)

E2B / Int16

Decode throughput
PathWithout MTPWith MTPMTP speedupAcceptance
CPU8.268 tokens/s12.551 tokens/s1.52x32.4%
NPU4.326 tokens/s7.131 tokens/s1.65x36.0%

Decode is fastest on the CPU. MTP made decode 1.52x on the CPU and 1.65x on the NPU.

QCS6490 E2B decode throughput (1000 generated tokens, CPU / NPU, without / with MTP)
QCS6490 (E2B / Int16) decode throughput (1000 generated tokens)
QCS6490 E2B per-token decode throughput over 1000 generated tokens (CPU / NPU, without / with MTP)
QCS6490 (E2B / Int16) per-token decode throughput over 1000 generated tokens
Prefill throughput
Path6412825651210242048
CPU (without MTP)69.89972.12068.60564.91359.27753.487
CPU (with MTP)64.22666.43759.17363.92054.27854.221
NPU (without MTP)54.430101.921211.349212.480214.039211.759
NPU (with MTP)54.091109.916215.555214.996214.028213.825

For inputs of 128 tokens or more the NPU is the fastest; for a 2,048-token input it is 3.96x the CPU (without MTP). NPU prefill is almost the same with and without MTP.

QCS6490 E2B prefill throughput (2,048-token input, CPU / NPU, without / with MTP)
QCS6490 (E2B / Int16) prefill throughput (2,048-token input)
QCS6490 E2B prefill throughput by input length (CPU / NPU, without / with MTP)
QCS6490 (E2B / Int16) prefill throughput by input length
VLM (image input) and audio input latency
InputPathTTFTDecodeAcceptance
ImageCPU (without MTP)84.75 s8.417 tokens/s—
ImageCPU (with MTP)85.63 s15.303 tokens/s41.7%
ImageNPU (without MTP)8.27 s4.364 tokens/s—
ImageNPU (with MTP)7.27 s7.735 tokens/s41.7%
AudioCPU (without MTP)36.40 s8.753 tokens/s—
AudioCPU (with MTP)36.81 s27.060 tokens/s92.6%
AudioNPU (without MTP)6.25 s4.325 tokens/s—
AudioNPU (with MTP)6.19 s12.199 tokens/s92.6%

NPU TTFT is 1/10.2 (image) and 1/5.8 (audio) of the CPU (without MTP). With MTP, NPU decode became 1.77x for image input and 2.82x for audio input, and CPU decode became 1.82x and 3.09x.

QCS6490 E2B VLM / audio input TTFT breakdown (CPU / NPU, without / with MTP)
QCS6490 (E2B / Int16) VLM (left) and audio input (right) TTFT breakdown (prompt setup including the encoder, and decoder prefill plus the first token)
QCS6490 E2B VLM / audio input decode throughput (CPU / NPU, without / with MTP)
QCS6490 (E2B / Int16) VLM (left) and audio input (right) decode throughput
CPU usage
InputCPU (without MTP)CPU (with MTP)NPU (without MTP)NPU (with MTP)
Text47.9%47.9%0.9%1.4%
Image47.9%47.7%0.9%1.4%
Audio47.9%47.1%1.0%1.3%

The CPU runs on the 4 performance cores, so CPU usage stays around 50%.

QCS6490 E2B CPU usage during text generation decode
QCS6490 (E2B / Int16) process CPU usage during text generation decode
QCS6490 E2B average CPU usage during prefill (average over 64 to 2,048-token inputs)
QCS6490 (E2B / Int16) average process CPU usage during prefill (average over 64 to 2,048-token inputs)
QCS6490 E2B CPU usage during image / audio input TTFT
QCS6490 (E2B / Int16) process CPU usage during image (left) and audio input (right) TTFT