为什么同一模型q4量化比q8量化输出的要多

M2 max跑的

斗胆猜测一下,Q4相比Q8在精度上的下降产生的效果可能相当于把温度系数提升了一点(输出token的概率分布变得更平滑,token之间的概率差异减小),导致模型输出长度变长了一丢丢。

虽然Q4比Q8消耗的内存更少,生成Token更快,但Q8相较Q4在实际推理能力上还是具有明显优势。另外,在使用CPU推理时,由于SIMD指令集对8-bit整数的点积运算有原生支持,更重要的是我们发现Q4的思维链平均长度比Q8长了45%,也就是说多输出了45%的无效Token,所以虽然Q4生成Token速度较快,但完成任务甚至会更慢。这是我们最终选择Q8的原因。

我觉得.是不是因为因为精度的问题导致置信度下降,从而思考的更多了…

佬用的是不是ollama呢?如果是的话,ollama上的两个量化模型里默认temperature是不同的

qwq_4bit默认是0.6

ollama show  qwq:latest
  Model
    architecture        qwen2
    parameters          32.8B
    context length      131072
    embedding length    5120
    quantization        Q4_K_M

  Parameters
    stop           "<|im_start|>"
    stop           "<|im_end|>"
    temperature    0.6

  License
    Apache License
    Version 2.0, January 2004

但是8bit的可没有默认值,所以是不是就用了客户端请求时候的默认值,而且还不一定是0.6

ollama show  qwq:32b-q8_0
  Model
    architecture        qwen2
    parameters          32.8B
    context length      131072
    embedding length    5120
    quantization        Q8_0

  Parameters
    stop    "<|im_start|>"
    stop    "<|im_end|>"

  System
    You are a helpful and harmless assistant. You are Qwen developed by Alibaba. You should think
      step-by-step.

  License
    Apache License
    Version 2.0, January 2004

不是的,用的lm studio,经过这段时间的使用我发现
bartowski这个人量化的模型相对比较牛点,而且他量化的版本比较多可惜只有gguf,没有mlx的,只能舍弃一点速度了

那就检查用lm studio加载两个模型的默认参数有什么不同,尤其是temperature这个参数