玩一玩大语言模型

前言

自从ChatGPT发布这一年来,LLM领域的发展速度真是日新月异,之前完全不敢想像的事情,现在居然都搞出来了,比如在自己的电脑上跑一个大语言模型……

但是玩LLM跟玩AI作图就不太一样了,AI作图的模型一般就2G左右,用个2G显存的显卡就可以跑了,但是LLM动不动就好几个G甚至几十个G,没有超大显存的显卡根本跑不了,这个时候统一内存的Apple M就有优势了,毕竟内存即显存,比一般显卡可大得多了。

还有什么办法呢?当然是不用显卡,改用CPU喽了,慢点比跑不了强嘛。

Ollama

最简单的玩法就是用ollama这个实现。我是用docker来跑的,安装非常简单:

docker pull ollama/ollama

运行起来也很简单:

mkdir ~/llm/ollama
cd ~/llm
docker run -d -u1000 -v ./ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
docker exec -it ollama ollama <command>

其中<command>就是要运行的ollama命令。常规操作类似:

# 下载模型,llama2-chinese:7b-chat-q6_K是一个中文LLM,基于Meta的llama2,7b参数,q6量化的聊天模型
docker exec -it ollama ollama pull llama2-chinese:7b-chat-q6_K
# 列出已下载的模型
docker exec -it ollama ollama list
# 运行模型
docker exec -it ollama ollama run llama2-chinese:7b-chat-q6_K

运行模型后就可以进行交互式提问了。

这个7b的q6量化模型在我的8核5300U的CPU上跑,速度还可以,但智能就一般般了。13b的模型效果会好一点点,但也有限。上到34b的模型就好很多,但这个即使是量化到q2也还有14G之多,需要足够多的内存才能跑起来(还好我有48G),但是8核的CPU也是不行,一个字得几十秒。至于到70b的模型,一个字差不多需要6分钟,问一个问题等它答完至少一个半小时……

相对来说,英文模型的质量比中文模型要好一些,同样7b的模型,英文的mistral比llama2-chinese要强得多,只是回答是英文的(可以用中文提问,它也能正确理解)。mixtral的8x7b的MOE模型则更强了,7b的速度,更强的智能。中文的话yi:34b是我试过效果比较好的。

llama.cpp

另一个可以在CPU上跑的玩具是这个llama.cpp

用法也不复杂,把代码pull下来,然后make编译一下就可以运行那个main程序来使用了。

./main -m "$MODEL_PATH" -n 1024 -p "太阳系有几大行星"

另一种方法是使用docker来跑:

docker pull ghcr.io/ggerganov/llama.cpp:light
docker run -v $HOME/models:/models ghcr.io/ggerganov/llama.cpp:light -m "/models/$MODEL_PATH" -n 1024 -p "太阳系有几大行星"

其中$MODEL_PATH为模型文件的路径,中文模型可以用这个Chinese-LLaMA-Alpaca-2

推送到[go4pro.org]