概述
Windows下,架构是使用开源项目来搭建起来的。因为苦于ChatGPT需要Key,觉得很麻烦,且还有一些数据隐私的考虑,所以一直在寻找有没有可行的完全本地化的方法,最终还是找到了一个可行的方案。
最低的资源要求也不是很高,笔记本就行,如果拥有更好的硬件资源的话(Nvidia显卡),那输出会快很多哦。
感觉可以做更多有趣的事情。
架构基本上如下:
graph BT 模型(chinese-alpaca-2-7b) --> llama.cpp --> chatgpt-next-webPS:关于网络难访问问题,可以通过gitclone.com辅助或者其它镜像站等等帮忙。
模型(chinese-alpaca-2-7b)
需要选择一个模型来作为核心,这里就选择了chinese-alpaca-2-7b,选择它的原因是模型支持中文,且还是基于llama2模型调整的,效果应该会比较好,它还有13b、13b-64k等版本。当然了,模型挺大的,需要通过llama.cpp压缩才能跑起来。
项目地址:https://github.com/ymcui/Chinese-LLaMA-Alpaca-2
仓库的README中的完整模型下载
说明了模型的下载方式,选择适合自己的即可,网络不给力也可以使用其中提供的百度网盘,感恩作者。
llama.cpp
核心就是server程序提供了类似ChatGPT的API,这使得其能够对接上比较热门的ChatGPT的web ui,在实际的测试过程中,有些UI不是很兼容,使用起来比较正常的就是chatgpt-next-web了。
项目地址:https://github.com/ggerganov/llama.cpp
就直接release中提供的预编译好的包就行,自己在windows环境下实操了一段时间,没有搞成功。。
解释一下release中的版本有什么区别:
这里会涉及到CPU的指令集(加快计算的部分),可以通过CPUZ这个软件查看,或者在网上查对应的型号支持的指令集。
比如:https://github.com/ggerganov/llama.cpp/releases/tag/b1961
文件名 | 说明 |
---|---|
cudart-llama-bin-win-cu11.7.1-x64.zip | cuda有区分版本,这里是11 |
cudart-llama-bin-win-cu12.2.0-x64.zip | cuda版本12 |
llama-b1961-bin-win-avx-x64.zip | CPU支持AVX指令集的 |
llama-b1961-bin-win-avx2-x64.zip | CPU支持AVX2指令集的,是AVX的改进版,我的笔记本支持这个就用它了 |
llama-b1961-bin-win-avx512-x64.zip | CPU支持AVX512指令集的,是AVX2的改进版 |
llama-b1961-bin-win-clblast-x64.zip | 没用过 |
llama-b1961-bin-win-cublas-cu11.7.1-x64.zip | 没用过 |
llama-b1961-bin-win-cublas-cu12.2.0-x64.zip | 没用过 |
llama-b1961-bin-win-noavx-x64.zip | 单纯CPU计算,没有AVX的版本 |
llama-b1961-bin-win-openblas-x64.zip | 没用过 |
接下来把模型进行转换,使其能通过llama.cpp来运行,脚本是python的,这里使用anaconda来方便切换python版本,python版本使用3.11
# 在当前目录创建虚拟环境
conda create --prefix .\py311 python=3.11
# 激活
conda activate .\py311
# 仓库切换到b1961版本
cd llama.cpp
git checkout b1961
# 用清华源网速快点,安装依赖包
python -m pip install -r llama.cpp\requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
# 将模型转化成过度阶段的float16版本,转化的过程比较慢,最终是要变成4bit的版本
python llama.cpp\convert.py .\chinese-alpaca-2-7b\
# 将生成的ggml-model-f16.gguf转成4bit,也就不到4G的大小,普通机器的内存都能运行。当然,还有更小的版本,像q2_k、q3_k,不过没必要。
.\llama-b1961-bin-win-avx2-x64\quantize.exe .\chinese-alpaca-2-7b\ggml-model-f16.gguf .\chinese-alpaca-2-7b\ggml-model-q4_0.gguf q4_0
# 现在试一下使用server程序加载模型
.\llama-b1961-bin-win-avx2-x64\server.exe -m .\chinese-alpaca-2-7b\ggml-model-q4_0.gguf
# 运行起来后,这一部分就完成了,server提供了一个简洁的web ui在8080端口,同时兼容ChatGPT的API也在里面
...
llama server listening at http://127.0.0.1:8080
...
chatgpt-next-web
项目地址:https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web
这个前端UI需要nodejs及其包管理工具yarn,需要预先安装。
# 切换仓库版本
git chekout v2.10.1
# 复制环境变量文件,然后编辑
cp .env.template .env
# 修改.env文件
#配置参数BASE_URL=http://127.0.0.1:8080
#配置参数OPENAI_API_KEY=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(随便找的一个,占位用,没有其它作用)
# 通过npm来使用yarn安装依赖
npm exec yarn install
# 运行
npm exec yarn dev
...
- ready started server on 0.0.0.0:3000, url: http://localhost:3000
...
体验
通过访问http://localhost:3000可以进入到界面,如果提示需要设置key,按提示,随便找个key填进去即可,比如上面的那个
关于头像如果无法展示,是因为项目是通过在线头像获取的,网络不通的话,可以试着将文件app\components\emoji.tsx
中的cdn.jsdelivr.net
换成fastly.jsdelivr.net
关于角色问题,也就是UI中的面具,这个挺好使的,嗯
总体的感觉是不及ChatGPT3.5的,但也是一个不错的开始,至少拥有了一个个人的低级AI,还有许多可以优化的地方,慢慢学习吧。
标签:bin,机器人,zip,win,笔记本,x64,b1961,llama,ChatGPT From: https://www.cnblogs.com/Traveiling-Light/p/17983418