基于llama.cpp在CPU环境部署Qwen3
大家好,我是奇文王语,NLP爱好者,长期分享大模型实战技巧,欢迎关注交流。
最近两天在研究如何使用小规模参数的模型在CPU环境上进行落地应用,比如模型Qwen3-0.6B。开始使用Transformers库能够正常把模型服务进行部署起来,但是通过测试速度比较慢,用户的体验会比较差。
一、框架对比
因此就调研了能够在CPU环境支持对模型加速的算法框架。比如:onnxruntime、openvino、llama.cpp。
(1)onnxruntime:需要转换为onnx格式的模型, 但是对于Qwen3模型使用的SwiGLU、Rotary Embedding、动态 KV 缓存这些新技术onnx格式支持不是很好,会严重影响模型的推理效果;同时转换后会出现中间层冗余,推理速度很慢,对生成长文本的内容并不友好,同时需要把模型进行量化才可以。
(2)openvino:使用这个框架需要把模型转换成onnx格式,然后再转换为openvino IR格式的模型。转换比较复杂。目前官方未提供Qwen3转换的pipeline,需要多次进行测试验证。推理速度比不上llama.cpp + GGUF。
(3)llama.cpp:该框架原生支持CPU,技术文档相对成熟一些,推理和部署相对比较快些。因此最终选择这个技术方案进行了实验。
二、llama.cpp实验
1. 编译程序
# 克隆代码
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
# 编译
cmake