pocketpal 中文文档 下载 App

GPU 层数与线程数——手机本地推理的性能关键

llama.cpp 的核心加速思路

llama.cpp 在移动设备上的加速主要靠两点:

  1. GPU offload:把模型的部分计算层交给 GPU(iOS Metal / Android Vulkan)
  2. CPU 多线程:在 CPU 上并行处理剩余计算

num_gpu_layers

这个参数决定多少层模型权重在 GPU 上计算。

设为含义
0全部跑在 CPU,兼容性最好但速度最慢
正数 N前 N 层跑 GPU,其余跑 CPU
-1自动:llama.cpp 尝试能放多少就放多少(推荐)

怎么选

iOS vs 安卓的差异

iOS 设备统一使用 Apple Metal API,GPU offload 相对稳定。安卓需要 Vulkan 支持,部分老设备或定制 ROM 可能 GPU offload 效果不好甚至完全不可用。

num_threads

CPU 线程数。设成设备的物理核心数比较好。

设备建议线程数
4 核老机型4
6~8 核主流机型6~8
10+ 核旗舰8(别设太高,边际收益递减)

注意过热

把线程数拉满会让 CPU 跑满,手机发热很快。如果发现手机明显发烫、甚至降频,可以把线程数减到核心数的一半。

实战调优流程

  1. 先跑一次基准测试,记录当前 num_gpu_layers=-1、默认线程数下的速度
  2. 如果 iOS 上速度慢,检查 GPU offload 是否真的生效(设置里通常有显示)
  3. 如果安卓上 GPU offload 不生效,改用纯 CPU 线程数调优
  4. 每次只改一个参数,跑 Benchmark 看变化,避免多变量干扰