当前位置:首页|资讯|ChatGPT|GPT-4

龙芯3A6000推理千问1.8B语言模型【龙芯3A6000体验第四篇】

作者:花_辣子_馍发布时间:2023-12-24

ChatGPT已经火了一年多了,今年支持视觉和语音的GPT-4更是引领了AI研究和应用的新热潮,有没有想过在本地机器上布置一个AI助手玩玩?大模型通常都需要使用GPU来进行推理,我没有独立显卡,只有一台龙芯3A6000 CPU能不能跑大模型?

最近千问推出了参数量为 18 亿的模型:Qwen 1.8B,实测效果还可以,使用量化和推理加速之后在3A6000上达到了勉强可以接受的推理速度,下面简单介绍一下这次尝试的流程。

1. 下载模型文件

千问的模型公布于国内的Modelscope平台,访问下载不成问题。[通义千问-1_8B-Chat · 模型库 (modelscope.cn)](https://modelscope.cn/models/qwen/Qwen-1_8B-Chat/summary)

可以挨个文件下载,或者使用git lfs下载。git lfs工具不在Loongnix的软件源里面,需要自己编译安装,所以还是推荐直接手动把所有文件挨个下载(assets文件夹没有用,不用下载)。

下载好的模型放到一个文件夹里,比如起名为Qwen-1_8B-Chat。

2. 安装环境

  • 安装新版cmake

Loongnix 20.5源里的cmake版本有些老,不能正常编译千问推理工具,所以要我们自己编译安装一个cmake。

在一个临时目录里面下载cmake源码并解压:

现在已经在cmake的源码目录中了,按下面的步骤编译安装。<用户名>替换为你的用户名。

安装完成后,系统暂时还没更新cmake文件的位置,手动帮它更新一下:

显示 'cmake version 3.27.9' 就是成功了。

  • 安装 Rust 编译器

为了编译依赖包(python包tiktoken安装时需要编译),要先安装rust编译器。注意!rust编译器不要用源里面的rustc,版本很低,无法正常编译。需要去龙芯官网下载loongarch版的tar包自己安装(loongnix系统目前需要安装龙芯官网的abi1.0版本,如果安装的是rust官网的abi2.0版本是没法运行的)

如果输出类似 rustc 1.73.0 (9009755c7 2023-10-08) 则表示安装成功了。

  • 安装所需Python环境

如果python版本不是3.8,需要根据之前的文章安装python 3.8.
新建一个虚拟环境(名为 qwen-show,可以随便起),并激活。注意这个命令会在当前目录新建一个名为qwen-show的文件夹,里面存储虚拟环境的运行文件。所以运行前需要切换目录,切换当前目录为一个你认为适合存放这个文件夹的目录(如~/python_env/),再运行下面的命令。

如果命令提示符前面出现了(qwen-show)字样就是激活成功了。接下来安装所需的python包:

要等好一会,因为过程中会编译tiktoken包。(过程中大部分时间CPU占用不是很高,感觉这个版本的Rust编译器或许有什么bug,导致编译时长特别久)
想要关闭这个Python环境的话,直接输入

3. 准备推理工具

我们使用 qwen.cpp 进行模型推理。下载地址为为 (https://github.com/QwenLM/qwen.cpp)
进入qwen.cpp目录,如果没有激活前面安装的python环境,就手动激活一下:

此时,我们要先将模型转换为推理工具qwen.cpp可以运行的格式(转换1.8B模型,运行时内存大概需要9GB,不建议使用7B模型,转换需要的内存超过了32G):

运行成功后会将转换后的模型名为(qwen1_8b-ggml.bin)放在当前目录下。1.8B模型转换后仅987MB,7B模型转换后仅4.1GB。
接下来,需要编译qwen.cpp推理器:

编译完成后,就可以运行测试:(测试时大约使用了2G内存)

如果正常输出类似"你好!有什么我能帮助你的吗?"的结果,就是运行成功了。

4. 交互式问答

使用下面的命令可以运行交互问答程序。

在'Prompt >'后输入问题就可以得到模型的回答。例如

Prompt > 推荐一种好吃的甜食
qwen > 我推荐你尝试一下草莓冰淇淋,它是一种非常受欢迎的甜食,口感清新,营养丰富,适合各个年龄段的人群食用。草莓冰淇淋可 以根据个人口味添加糖分,使其更甜,也可以添加巧克力酱、奶油等来增加口感。

接着输入问题,可以就之前的对话连续提问,例如

Prompt > 介绍一下制作过程
qwen > 制作草莓冰淇淋的步骤很简单,首先,你需要准备新鲜的草莓,然后将草莓清洗干净,然后用搅拌机将草莓打成汁,接着,将打 好的草莓汁和糖分混合,然后将混合好的草莓汁倒入冰淇淋机中,按照冰淇淋机的说明进行操作,最后,将冰淇淋放入冰箱中冷冻,即可完成草莓冰淇淋的制作。

输入clear命令可以清除前文记忆,开始新对话;输入stop命令可以推出对话,关闭程序。

5. 性能统计

如果想要查看推理速度信息,可以在问答程序命令后加上参数-v

性能统计结果显示,Qwen1.8B模型在 龙芯3A6000 上阅读前文的速度为 155ms/token, 生成新答案的速度为 210ms/ token左右(token为模型中文字的基本单位,为一个字或者一个词)。生成速度接近 5 token/s,勉强可以达到对话的速度要求。
也测试了一下Qwen 7B,生成速度大约 869.936 ms/token,这个速度就比较难以接受了。


Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1