大家好,我是奇文王語,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