AI

本地快速运行LLaMa3大模型:安装、导入与网页聊天全流程

LLaMa3是Meta推出的开源大模型,发布后多项指标已经非常接近GPT-4。它有8B和70B两个版本,其中8B版本最低4GB显存就能跑,因此被看作目前很适合在个人电脑本地运行的一类大语言模型。LLaMa3对中文的支持不算理想,不过HuggingFace上很快出现了不少中文微调版本。下面按从零开始的顺序,介绍怎样在本机运行HuggingFace上的LLaMa3中文模型。

演示环境是Mac M1、16GB内存,并准备好可用的科学上网工具。运行大模型用开源工具Ollama,浏览器聊天界面用Open WebUI。这样在浏览器里使用,体验接近GPT。

第一步,安装Ollama。它能让各种大语言模型更容易在本地启动。到Ollama官网下载并运行安装程序,安装命令行工具后,在终端输入ollama -v检查是否正常。示例返回版本号0.1.32。

第二步,下载模型。Ollama自带几种可选模型,但数量有限。为了评估更多模型,可以直接从HuggingFace下载。在HuggingFace搜索llama3,把Languages筛选为Chinese,就能看到若干基于LLaMa3的中文模型。选择GGUF格式更省事:GGUF是llama.cpp团队采用的一种模型打包格式,一个模型就是一个文件,下载方便。进入Files页面后,会看到多个GGUF文件。文件名里的q表示量化等级,q越大通常模型质量越高,文件也越大。这里选择q6,点击下载按钮保存到本地。

第三步,把模型导入Ollama。下载好的模型文件不能直接导入,需要先写一个配置文件,例如config.txt。配置中第一行用FROM指定模型文件的实际路径,需要改成自己电脑上的位置;后面放TEMPLATE,也就是对话格式模板,按网上内容复制即可,不必修改;再设置SYSTEM为空,并加入两个PARAMETER stop停止标记。保存后执行ollama create llama3-cn -f ./config.txt,其中llama3-cn是给模型起的名字。导入成功后用ollama list查看,会看到名称、ID、大小和修改时间等信息,例如llama3-cn:latest大小约6.6GB。如果想用多个模型,可以给每个模型各写一个配置文件,只改路径,导入时起不同名字即可。

第四步,运行模型。直接执行ollama run llama3-cn,出现>>>提示符后就能输入问题与模型对话,输入/exit退出。

命令行交互不够方便,可以再用开源项目Open WebUI搭建浏览器界面。最简方式是使用Docker。先安装Docker Desktop,然后运行docker run -p 8080:8080 -e OLLAMA_BASE_URL=http://host.docker.internal:11434 –name open-webui –restart always -v open-webui-data:/app/backend/data ghcr.io/open-webui/open-webui:main。参数-p 8080:8080把Open WebUI端口映射到本机;参数-e OLLAMA_BASE_URL=http://host.docker.internal:11434让Open WebUI通过本机11434端口访问Ollama,地址要写host.docker.internal,不能写127.0.0.1。

在浏览器打开http://127.0.0.1:8080,第一次访问需要注册,注册和登录都基于本地环境。登录后会看到类似GPT的界面。在聊天界面点击右上角配置按钮,进入Connections,点击刷新;如果一切正常,会显示Server connection verified。接着在聊天界面顶部选择模型,就可以和LLaMa3聊天。

Open WebUI还提供类似OpenAI的API。使用前在设置里的Account生成API Key,然后在命令行用curl向http://localhost:8080/ollama/api/generate发送POST请求,请求头带上Authorization: Bearer加API Key和Content-Type: application/json,请求体包含model、stream、prompt等字段。例如把model设为llama3-cn:latest、stream设为false、prompt设为“廖雪峰老师的网站提供了哪些教程?”,返回的JSON里response字段就是模型回答。

模型运行在本地,Open WebUI的数据也保存在本地,隐私性很高。如果对某个模型不满意,还可以继续从HuggingFace下载更多模型来评估,操作同样方便。

Author

admin@cccoe.cn

发表回复