ChatGPT劲爆式的出现,使得AI又重新火了一把,又一次将人工智能带到群众面前,人工智能的发展是断断续续曲折的,随着硬件不断升级,这次应该不是昙花一现,有足够的算力来支撑本次时代变革。在ChatGPT聊天交互式的体验中,让我对计算机处理自然语言的能力又一次加深。近期开源社区也发布了很多开源模型,本次搭建一个类ChatGPT的应用,来加深对大语言模型的理解,为后续深入学习人工智能打下基础。
本次类ChatGPT搭建模型使用Mate原型 LLaMA + Chinese-LLaMA-Alpaca-7B,推理使用llama.cpp。
- LLaMA https://github.com/facebookresearch/llama
LLaMA模型为Mate 发布的模型,现在暂未开源,可以申请获取训练的数据,也可以在网上寻找。模型参数数据包括7B 13B 33B 65B,咱们这次选择最简单的7B参数模型。 - Chinese-LLaMA-Alpaca https://github.com/ymcui/Chinese-LLaMA-Alpaca
Chinese-LLaMA-Alpaca 中文LLaMA模型和指令精调的Alpaca大模型,这些模型在原版LLaMA的基础上扩充了中文词表并使用了中文数据进行二次预训练,进一步提升了中文基础语义理解能力,具体可以查询官方GITHUB。 - llama.cpp https://github.com/ggerganov/llama.cpp
llama.cpp是纯 C/C++开发的LLaMA 模型的推导器,可以使用CPU进行推理,也可以在个人电脑上进行使用,消耗CPU比较明显,交互过程机器中呜呜的作响。
我们可以直接使用llama.cpp去加载Mate的原版参数模型数据,但是为了更好的支持中文交互,我们需要将Chinese-LLaMA-Alpaca中的模型和原版LLAMA的模型进行合并,然后做格式转换,由llama.cpp来推导解析,整个过程包括以下6个步骤:
- 1-LLaMA 7B模型下载
- 2-Chinese-LLaMA-Alpaca 7B中文模型下载
- 3-原版模型和中文模型进行合并模型
- 4-模型格式转换,转换为llama.cpp可推导的格式
- 5-下载llama.cpp,编译安装
- 6-对模型数据进行测试
步骤1-4可以直接从网上下载,我推荐 https://aistudio.baidu.com/aistudio/projectdetail/5930734 ->数据集->下载zh-models.zip和Chinese-LLaMA-Alpaca-main.zip,作者梦未央02,已经为咱们把模型合并好了,可以直接用,也可以自己合并,合并需要自己得电脑配置超过模型的数据大小。(我在自己电脑上面和google云盘上面都没有合并成功,本地配置太差,google云盘有限制)
步骤5-下载llama.cpp,编译安装,按照官方步骤去编译即可,我使用虚拟机编译有报错,编译参数需要添加 -mfma,不然会提示以下信息:
1
/include/fmaintrin.h:63:1: error: inlining failed in call to ‘always_inline’ ‘_mm256_fmadd_ps’: target specific option mismatch`
可以直接在报错信息后面添加,也可以直接修改配置,Makefile也有对应的选项,直接添加最划算
1
2cc -I. -O3 -DNDEBUG -std=c11 -fPIC -Wall -Wextra -Wpedantic -Wcast-qual -Wdouble-promotion -Wshadow -Wstrict-prototypes -Wpointer-arith -pthread -march=native -mtune=native -c ggml.c -o ggml.o -mfma
     步骤6-对模型数据进行测试,编译成功后就可以进行测试,为了测试是否连接互联网获取信息,可以直接断网,你会发现直接根据模型数据进行推理,这个不依赖互联网外部数据。
1 | ./main -m zh-models/7B/ggml-model-q4_0.bin --color -f prompts/alpaca.txt -ins -c 200 --temp 0.2 -n 256 --repeat_penalty 1.3 |
交互过程中CPU使用率特别高,我的虚拟机配置为4C8G,每次回答问题长一些机器就会呜呜响,今天就到这里了。
面对模型bin文件让我想起来西部世界中接待员机器脑壳里面的圆形物体,以后可以变为具有自我思维的AI了。