微信扫码
与创始人交个朋友
我要投稿
随着AI技术的发展和各种大模型聊天助手的普及,类ChatGPT服务在我们的日常工作生活中扮演着越来越重要的角色。作为普通用户,我现在使用类ChatGPT服务越来越高频了:想查个技术点,了解某个概念,或者写一篇文档的思路等,都会首先问问大模型聊天机器人。作为一名技术人员,很自然地会想到自己亲手去搭建一个大模型聊天机器人。
1. 前提条件
我们来看看,搭建一个这样的聊天机器人,需要什么条件?
1.使用开源的大模型。我们先不去管大模型是怎么训练而成的,而是把它当成一个黑盒子,类似于某种标准模块,它可以根据查询(一段文字)生成结果(另一段文字)。很多大模型厂商发布了开源的模型,我们可以直接拿来使用。
2.大模型的推理框架,也就是运行时环境。所谓推理,就是根据查询生成结果的过程。大模型在逻辑上是一堆神经网络参数,存储形式是一个二进制文件,对这个文件的加载和调用需要深度学习相关知识,得益于大模型良好的生态,有很多开源的推理框架可以帮我们做到这一点。
3.聊天服务的前端UI。这块也有很多现成的开源项目。
4.运行大模型推理的硬件。我们知道大模型的训练需要大量的GPU等资源,而推理虽然需要的资源较少,但推理的速度与硬件配置高低有很大关系。影响推理速度的关键资源是GPU和内存,更多的GPU、更大的内存,推理速度就会更快。同样得益于技术社区的努力,一些基础的大模型(如llama 7b)也能够在CPU上运行,只是速度可能稍慢,这对于没有独立显卡的普通PC或笔记本用户来说是一个福音。
参照以上条件,我们的任务就比较简单了。
2. 相关资源
去哪里获取大模型?
Hugging Face网站(huggingface.co)是一家开发自然语言处理(NLP)和机器学习相关工具、并提供大模型托管服务的平台,相当于机器学习领域的github(不过国内不能访问,你懂的)。可以在这个网站上找到并下载各种预训练或经过微调的大模型。
国内阿里旗下的魔塔社区(modelscope.cn)也是同类型的网站,同样可以下载各种模型文件。不过魔塔社区的影响力不如Hugging Face,很多大模型都是优先在Hugging Face上发布,魔塔社区只是搬运,魔塔上很多模型包括Qwen2的说明文档都是英文的。不过由于Hugging Face在国内不能访问(需要翻墙),将魔塔社区作为平替也是可以的。
去哪里找大模型推理和前端UI框架?
对于开发人员,结合搜索引擎,很容易在github上找到各种大模型推理和前端UI项目,关注大模型相关社区或公众号也是一个较好的途径。
3.软硬件环境
我使用的电脑是苹果iMac(M1芯片),16G内存。M1芯片集成了CPU、GPU和NPU,CPU和GPU共享内存池,我这款电脑是8核CPU+7核GPU+16核神经网络引擎。理论上GPU和NPU都能够加速推理过程,不过由于M1芯片推出时间较早,可能没有针对大模型适配。
llama.cpp
纯C/C++实现
高性能,没有额外内存分配
没有第三方依赖
针对苹果芯片进行了优化
支持多种硬件和OS,包括Mac、Linux、Windows等
自带一个Web Server和基于web的聊天客户端
Python3
在机器学习领域,主流的编程语言是python,很多大模型周边的工具都是用python实现的,所以我们需要python3运行环境。我的系统上已经安装了python3,如果没有,需要自行安装一下。
4.操作步骤
git clone https://github.com/ggerganov/llama.cppcd llama.cpp
2.编译llama.cpp
make
在Mac上编译,默认会打开GPU推理。
编译完之后,我们看看产出物,下图红色的是生成的可执行文件,其中:
llama-cli 是以命令行运行大模型的命令。
llama-server 是以web server启动大模型推理服务。
3.下载大模型
pip3 install huggingface_hub
我们使用阿里近期发布的Qwen2大模型,我选择的是 Qwen2-7B-Instruct-GGUF (https://huggingface.co/Qwen/Qwen2-7B-Instruct-GGUF/tree/main)
cd models #下载的模型文件需要放在llama.cpp/models目录下huggingface-cli download Qwen/Qwen2-7B-Instruct-GGUF qwen2-7b-instruct-q5_0.gguf --local-dir . --local-dir-use-symlinks False
下载完,在llama.cpp/models目录下检查模型文件是否存在:
4.启动推理服务器
cd .../llama-cli -m ./models/qwen2-7b-instruct-q5_0.gguf -n 256 --repeat_penalty 1.0 --color -i -r "User:" -f prompts/chat-with-bob.txt
不知道它为什么会回答欧洲杯是在法国举办的?难道是通义千问训练数据的问题?
./llama-server -m ./models/qwen2-7b-instruct-q5_0.gguf -c 4096
可以看到如下输出:
Web服务器在本机的8080端口监听,我们可以用浏览器打开http://127.0.0.1:8080/ 看下,在这个页面,可以进行简单的对话了,我录了个屏,回答还算顺畅,但是准确率就不提了(首都位于中国东部。。。)
5.运行聊天客户端UI
#重新开个终端窗口执行:cd examples/server/public_simplechatpython3 -m http.server 8088
生成速度还是比较快的,但是通义千问对llama.cpp的介绍可以说是胡说八道,也就是出现幻觉,原因可能是Qwen2-7B的训练数据集中没有相应的语料。
5.结论
以上内容就是在本人在PC上搭建大模型聊天机器人的全部过程,虽然比较简陋,离实用还有很大距离,不过基本上跑通了大模型聊天机器人的部署流程。我是以Mac为例介绍的,但对Windows或Linux系统也应该是适用的。如果你有兴趣也可以尝试一下,欢迎评论交流。
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-11-12
TableGPT2-7B:浙大推出专注于分析和处理表格数据的大模型
2024-11-12
AI大模型多轮对话的五个挑战与应对方法
2024-11-12
Ilya认错,Scaling Law崩了?自曝SSI秘密技术路线取代OpenAI
2024-11-12
真假◎智能原生(AI Native)应用极其挑战
2024-11-12
微软最新的多AI 代理框架:Magnetic-One
2024-11-12
大模型时代的软件研发:正确的打开方式
2024-11-11
百模大战中的网络:科大讯飞万卡级智算集群
2024-11-11
Scaling Law撞墙,AI圈炸锅了!OpenAI旗舰Orion被曝遭遇瓶颈,大改技术路线
2024-05-28
2024-04-26
2024-04-11
2024-08-21
2024-07-09
2024-07-18
2024-10-25
2024-08-13
2024-06-17
2024-07-01