推理配置文件

配置项

  • max_new_tokens: 生成时最大token数,默认为512

  • reuse_kv: 多轮对话时是否复用之前对话的kv cache,默认为false

  • quant_qkv: CPU attention 算子中query, key, value是否量化,可选为:0, 1, 2, 3, 4,默认为0,含义如下:

    • 0: key和value都不量化

    • 1: 使用非对称8bit量化存储key

    • 2: 使用fp8格式量化存储value

    • 3: 使用非对称8bit量化存储key,使用fp8格式量化存储value

    • 4: 量化kv的同时使用非对称8bit量化query,并使用int8矩阵乘计算Q*K

  • use_mmap: 是否使用mmap方式,在内存不足时将权重写入磁盘,避免溢出,默认为false,手机上建议设成true

  • kvcache_mmap: 是否使用mmap方式,在内存不足时将在KV Cache 写入磁盘,避免溢出,默认为false

  • tmp_path: 启用 mmap 相关功能时,写入磁盘的缓存目录

    • iOS 上可用如下语句创建临时目录并设置:NSString *tempDirectory = NSTemporaryDirectory();llm->set_config("{\"tmp_path\":\"" + std::string([tempDirectory UTF8String]) + "\"}")

  • 硬件配置

    • backend_type: 推理使用硬件后端类型,默认为:"cpu"

    • thread_num: CPU推理使用硬件线程数,默认为:4; OpenCL推理时使用68

    • precision: 推理使用精度策略,默认为:"low",尽量使用fp16

    • memory: 推理使用内存策略,默认为:"low",开启运行时量化

示例

{
    "llm_model": "qwen2-1.5b-int4.mnn",
    "llm_weight": "qwen2-1.5b-int4.mnn.weight",

    "backend_type": "cpu",
    "thread_num": 4,
    "precision": "low",
    "memory": "low"
}