作者: 引线小白-本文永久链接:httpss://www.limoncc.com/post/9971336748ed0b5b/
知识共享许可协议: 本博客采用署名-非商业-禁止演绎4.0国际许可证
一、快速开始
llama.cpp的主要目标是在MacBook上使用4位整数量化运行LLaMA模型,它和 ggml项目密切相关。目前它支持平台相当广泛MacOS、 Linux、Windows 、Docker。重要的是它支持Chinese LLaMA-2/Alpaca-2、Baichuan2、Mistral等最新的模型(2023-10-16),最近(2023-10-22)出来的一些模型qwen、codeshell,Aquila测试过,尚不支持。
这是它的一些特性
1、没有依赖关系的 C/C++ 实现
2、Apple silicon是一等公民 - 通过 ARM NEON、Accelerate 和 Metal 框架进行优化
3、AVX、AVX2 和 AVX512 支持 x86 架构
4、混合F16 / F32精度
5、支持 2 位、3 位、4 位、5 位、6 位和 8 位整数量化
6、CUDA、Metal 和 OpenCL GPU 后端支持
1.1、核心操作
1 | 前置准备 |
当然如果你选择make来编译,会把原代码和编译后的文件混淆在一起。如果你不想这样,那就选择下面的cmake来编译
1 | git clone https://github.com/ggerganov/llama.cpp.git |
1.2、使用模型
1.2.1、在命令行中使用
1 | 纯cpu |
具体参数设置可以help一下,这里就不做过多解释了,毕竟使用的时候还是部署标准的openai的API.
1.2.2、使用api
llama.cpp有一个自己的服务,这套api和openai的API是不一样的
1、server的接口文档地址
2、server的转接openai的API可以参考api_like_OAI.py这个文件。还是简单的
三、进阶部署模型
3.1、自定义部署
这些初步想法吧,还没有实现。个人认为要研究自定义模型的GGML的CPU部署就要研究llama.cpp这个项目。尤其是它的convert.py系列的文件以及它如何使用权重的机制。cpu部署还有一个可能的路径,candle或burn,效率如何不得而知
还有一下其他方案
https://github.com/ztxz16/fastllm也是国人方案,这个明确支持百川2模型
https://github.com/srush/llama2.rs这个使用rust加速
https://github.com/karpathy/llama2.c
3.2、API部署
可以参考这位大佬苏洋的文章,项目地址:https://github.com/soulteary/docker-llama2-chat 可以详细研究一番
1 | FROM alpine:3.18 as code |
3.3、与rust结合
可以参考这个项目
https://github.com/rustformers/llm
或者使用candel,candle有明确的例子说明怎么读取gguf文件并使用,并实现了cpu和gpu加速。这里需要重点解决几个关键问题
1、gguf格式细节
2、如何使用ggml构建模型推断代码并运行
3、
目前相关文档缺乏,需要自己研究,这样才能做到出来一个模型,然后自己量化cpu部署,做到一定程度的自主。有时候社区进展没有那么快。这显然是一个非常重要的技能。
如果你对大模型应用有兴趣,欢迎加入AutogenQQ交流群:593623958
版权声明 | |
由引线小白创作并维护的柠檬CC博客采用署名-非商业-禁止演绎4.0国际许可证。 本文首发于柠檬CC [ https://www.limoncc.com ] , 版权所有、侵权必究。 | |
本文永久链接 | httpss://www.limoncc.com/post/9971336748ed0b5b/ |
如果您需要引用本文,请参考: |
引线小白. (Oct. 24, 2023). 《一些信息总结——大模型量化与CPU部署系列01》[Blog post]. Retrieved from https://www.limoncc.com/post/9971336748ed0b5b |
@online{limoncc-9971336748ed0b5b, title={一些信息总结——大模型量化与CPU部署系列01}, author={引线小白}, year={2023}, month={Oct}, date={24}, url={\url{https://www.limoncc.com/post/9971336748ed0b5b}}, } |