Skip to content

AraiLen/llm-cpp

 
 

Repository files navigation

llm-cpp

Performance

In M1, prefill 128 token and decode 128 token:

model prefill(token/s) decode(token/s) RAM
Qwen1.5-0.5B-Chat-GPTQ-Int4 281 103 360M
Qwen1.5-1.8B-Chat-GPTQ-Int4 79 39 1100M

Implement & Feature detail

  • 支持直接加载huggingface格式的模型
    • 通过加载config.json文件动态构建blob和layer依赖关系并建立ncnn模型图
      • 使用nn.Module的风格进行blob和layer绑定
    • 直接加载safetensor格式权重并给模型的层进行赋值
      • 支持超大模型的多safetensor加载
    • 提前预处理权重,硬盘&内存占用小
  • 支持embed和lm_head的权重共享(主要是0.5B模型)
  • 支持GPTQ-Int4量化(偷懒了,把代码写死了),int8&fp16混合激活
  • 支持kv cache,使用fp16存储(没做连续对话,所以kv cache不大,不压缩了)
  • 支持Qwen1.5-xxB-Chat-GPTQ-Int4模型
  • 两种输出模式
    • 使用argmax的确定性输出
    • 使用概率采样的不确定性输出

How to use

# download model
git lfs install && git clone https://huggingface.co/Qwen/Qwen1.5-0.5B-Chat-GPTQ-Int4
# convert model to save disk and ram
python make_lite_weight.py --input_model Qwen1.5-0.5B-Chat-GPTQ-Int4
# build & run
bash run.sh

References

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 95.7%
  • C 3.8%
  • Other 0.5%