经常用chatGPT的话,看到这张图会不会觉得特别亲切?要是你在chatGPT登录账号后收到了相关提示,那可得恭喜你,你被openAI封号了。很多小伙伴可能都幻想过,要是能把chatGPT装到自己的轻薄笔记本电脑上,不用魔法还能离线使用,那该多爽啊。在2023年,这个想法可能还像是天方夜谭,但到了2024年的现在,这已经不是什么难事了。今天杨老师就来带着大家一步步把chatGPT装进轻薄笔记本。这里的chatGPT加了引号是因为openAI并没有开源GPT系列模型,也不可能真把参数规模达175B这么大的LLM装进笔记本。咱们也不绕弯子了,实现的方法就是用Ollama + open - WebUI在本地部署像Qwen、Gemina、MiniCPM等国内外优质的小参数开源大语言模型。这可以作为chatGPT账号被封、魔法失效等紧急情况的应急方案。下面这张图是这份保姆级教程的思维导图,大家只要照着教程简单操作,就能轻松在Windows系统上搭建本地离线的大模型应用。

在开始这份教程前,大家要先检查电脑配置,看其能否支持本项目运行。不清楚如何查看电脑系统配置的同学,可以在系统→系统信息里查看基础配置。此次要部署的项目,大家需关注处理器和内存这两个参数。下面是我笔记本的配置,我的笔记本使用了Intel最新的酷睿Ultra5芯片,该芯片不但在酷睿系列的基础上进行了升级,还针对AI性能做了专门的优化。

并且打造了iGPU和NPU,如此一来,配备这款Ultra芯片的轻薄笔记本电脑,完全能够胜任运行离线大语言模型,甚至可以用Stable Diffusion来文生图。

在启动这个项目前,要保证你的电脑配置达到要求,即CPU至少为Intel酷睿13代及以上,内存不少于16G。要是你正打算换笔记本电脑,不妨优先考虑搭载Intel酷睿Ultra芯片的新款轻薄本。
本项目若通过Docker部署,会用到Git、Ollama for windows、Docker和百度网盘等工具。要是程序员想进行源码部署,还得安装Miniconda、Node.js、Pinokio等本地部署工具。
首先要下载并安装Git工具,其下载地址为https://git - scm.com/download,需依据自己的操作系统选择适配版本,本教程以Windows11系统操作示例,这里我们就选择适用于Win11的版本。

要依据操作系统是32位还是64位来选对应的安装包。近几年新出的笔记本电脑大多为64位操作系统。若不确定自己操作系统的位数,可到系统→系统信息→系统类型里查看确认。

下载完毕后直接双击安装包,选好安装路径后按提示逐步操作就行。整个过程很简单,详细的安装流程可参考Git下载安装教程:git安装步骤手把手图文这一帖子。
在安装好Git之后,接着安装Dockers。Docker是用于运行代码的容器,它能使我们在Windows系统中运行那些只有在Linux环境下才可部署的项目。由于我们是在Windows系统里使用docker,所以要安装Docker - Desktop,其下载地址为https://www.docker.com/products/docker - desktop/,按照操作系统点击图中所示版本进行安装就可以了。

详细的安装流程在此不多做介绍,可参考Windows Docker Desktop安装教程及踩坑记录这篇帖子来进行安装。
在安装好Dockers之后,就要下载并安装本次部署的关键内容——Ollama了,这是一个简单易用的本地大模型运行框架。随着Ollama相关生态的不断发展并走向大众视野,更多用户能够轻松地在自己的电脑上使用大模型了。Ollama致力于协助开发者在本地运行、创建和分享大型语言模型。当前,Ollama处于早期预览阶段,不过已经具备了部分核心功能。比如,它能够运行并与Llama 2(Meta新推出的模型)进行对话。并且,Ollama提供了一个模型库,开发者可在此处下载和运用各类开源模型。Ollama还提供了一种名为Modelfile的文件格式,开发者可以利用它来定义和创建自定义模型。下载地址:在macOS系统上下载Ollama。

下载完成后,双击安装包便可开始安装。

安装好之后,右下角任务栏会出现一个小羊头像,那便是ollma的后台。

到了这一阶段,基于Docker部署所需的工具都已准备好,下面我们就利用Docker部署完整项目。
安装好之后,在windows系统运行Ollma就很容易了。按win+R打开运行输入cmd,进入cmd环境再输入即可。
能够看到Ollama的使用命令。

接着我们到Ollama models页面下载一个模型。Ollama现在基本支持所有主流开源模型,且数量还在不断增加。想知道具体支持哪些模型的话,可以查看官方的模型列表,其网址为:https://ollama.com/library。

以经Llama微调的llava模型为例,进行输入。
命令将下载近4.1GB的4 - bit量化模型文件,推理至少需要8GB内存,若要流畅运行,推荐配备16GB内存。

我们再尝试一下中文能力较强的阿里qwen系列模型。要注意的是,qwen系列模型有不同参数,使用命令时需加上模型参数信息,就以qwen - 7b来说,使用ollama执行的命令为:

我们能看到,在cmd里就可直接与qwen大模型对话了。

我们使用ollama run命令下载模型时,模型文件默认保存在C盘的User目录下,通常是C:Users用户名.ollamamodelslobs,情况所示:

我们的笔记本电脑C盘空间本就十分紧张,那些动辄好几G的模型太占存储空间了。我们可以通过设置系统环境变量,把模型保存路径设为D盘来解决这个问题。具体操作很简单,先在D盘创建一个用于保存模型文件的文件夹,文件夹名不要用中文。比如我就在D盘创建了名为ollama models的文件夹来保存模型文件。

接下来要打开系统环境变量,Win11在搜索栏输入该词就能找到。

将环境变量打开。

在系统变量里选择新建,接着输入变量名:OLLAMA_MODELS,变量值把刚创建的文件夹路径复制粘贴后确定就行。

这样一来,我们再次下载模型文件时,就会自动将其保存到D盘的ollama models文件夹里了。
在现实里,谁都不想在像毛坯房似的cmd终端与大模型交互吧?所以,基于Ollama搭建前端WebUI来提升交互体验很关键。那接下来,我们就要搭建一个类似chatGPT的前端网页,这样就能在本地通过网页与大模型交互了。
Web版的Open WebUI界面与ChatGPT极为接近,功能特性也最为丰富,需通过Docker部署。其GitHub地址为https://github.com/open - webui/open - webui,而且docker的部署方法相当简单,首先要启动之前已经安装好的Docker Desktop。

接着以管理员身份启动命令提示符CMD,并于CMD中输入如下命令:
在cmd中输入docker命令前,要先在本地启动Ollama,不然就会出错。

命令行启动后,会开始下载多个文件,要耐心等一会儿。等所有文件都下载完,若出现的提示,就能在docker--desktop里启动open - webUI项目了。

Docker部署成功后,所示,若能在docker - desktop里看到open - webui项目处于in use状态,就表明我们的项目已部署成功。

接下来,我们只需在浏览器输入http://localhost:3000就能本地运行。首次运行时要用邮箱注册账号,这一步只要注册好就能登录了。

注册成功后登录账号,若出现如下提示,便完成整个项目了。

界面上方能选择启动的模型,这里我们使用的是阿里2024年1月最新发布的qwen - 7B模型。

大家看到这个页面时,我想问问,有没有觉得有很浓的chatGPT风格?不得不说,这个UI既熟悉又让人感觉舒适。openAI再怎么虐我,我对GPT依旧喜爱。如今我们在本地离线也能运行大语言模型了。那qwen - 7B的能力怎样?下面这个例子,已经涵盖了很多人对LLM的基本使用需求。

要是你懂代码,也会配置环境与部署项目,那我比较推荐你用本地源码启动的方式来部署Ollama和open - WebUI。毕竟docker启动虽然简便,可它占用的系统资源比本地启动多,并且本地启动这种方式更适合有能力改进项目代码的同学。下面就给大家讲讲源码启动的方法。
本地部署的初始步骤与Docker部署相同,都要先保证ollama for windows在本地运行,之后利用Git代码管理工具到open - webUI的Github主页获取源代码。本项目的GitHub地址为https://github.com/open - webui/open - webui。首先在D盘创建一个名为Ollama的文件夹,然后在该文件夹内通过git bash输入相关内容。
就像下图展示的那样。

若在git clone时出现类似fatal: unable to access 'https://github.com/open - webui/open - webui.git/': Failure when receiving data from the peer这样的报错信息,这是由于GitHub受网络问题影响而无法连接。这种情况下,可通过修改DNS来解决。至于如何修改DNS,可以参考无法访问GitHub,原因以及快速解决办法_github无法访问 - CSDN博客这一帖子。
接下来通过miniconda创建ollama虚拟环境,在开始菜单的miniconda3文件夹里点击进入Anaconda Prompt。

于Anaconda Prompt里输入:
创建虚拟环境,创建好后输入conda env list就能查看环境名称。

进入虚拟环境,接着把路径切换至open - webUI代码文件夹。

在open - webUI文件夹里,复制.env.example文件,粘贴后把文件名改成.env,再右键点击该文件并选择在终端内打开。

然后在终端里的D:Ollamaopen - webui路径下依次输入:
用node搭建前端页面。
前端页面构建完毕后,接着在终端输入:
安装环境依赖文件时要注意,miniconda默认源在国外服务器,安装依赖时下载速度很慢。所以建议在安装依赖前设置清华源,其设置方法很简单,直接在终端依次输入:
详细的设置过程可参考这一帖子:Anaconda与Pip配置清华镜像源 - CSDN博客。
后续后端启动时,还得从hugging face下载几个小模型,但国内网络环境无法直接从HF下载模型。要解决这一问题,可在环境变量里设置hugging face的国内镜像站。设置方法和之前类似,在系统变量中设置变量名HF_ENDPOINT,值设为https://hf - mirror.com就行。

前端页面构建完毕后依次输入:
若出现如下提示,则表明整个项目已部署成功。

接下来,在浏览器里输入http://0.0.0.0:8000,这样就能在本地通过open - WebUI与开源大模型交互了。其启动后的前端页面和docker部署的相同,注册账号后就能使用。
不少同学或许会问,那些不在ollama模型列表里的其他模型,能否采用open - WebUi+Ollama的方式在笔记本上离线运行?我想说,要是模型文件为gguf格式的话,就可以利用ollama的modelfiles,以自定义模型的形式使其运行起来。这里以我国优秀的大模型创业公司面壁智能所研发的针对端侧小参数规模的模型miniCPM为例,给大家讲讲怎样把gguf格式的模型文件借助ollama的modelfiles在本地轻松部署。
这里先简单说明一下minicpm模型。MiniCPM是面壁智能和清华大学自然语言处理实验室共同开源的端侧大模型系列。其主体语言模型MiniCPM - 2B的非词嵌入参数量仅为24亿(2.4B),总参数量为2.7B。想了解更多详细内容,可查看minicpm的Github主页:https://github.com/OpenBMB/MiniCPM。

在开始之前,我们得先下载模型文件。我测试时用的是MiniCPM - 2B - dpo - fp16 - gguf版本,与q4、q8等量化后的模型相比,该版本模型的精度损失较小。模型的下载链接为https://huggingface.co/runfuture/MiniCPM - 2B - dpo - fp16 - gguf/tree/main。下载好模型后,要把模型文件放到之前专门创建用于存储模型文件的D:Ollama Modelslobs路径下。
先说说modelfile文件是什么。简单来讲,Modelfile是Ollama提供的一种机制,就像Docker中的Dockerfile一样,能用来创建新模型或者对已有模型进行DIY式的改造。这个机制靠一系列指令设定基础模型、参数和系统消息,让模型定制变得又快又简单。modelfile的创建方法也不难,在模型文件夹里先创建一个格式为模型名称.modelfile的文件,然后右键选择记事本编辑就行。

在记事本里,要编辑三部分内容,其中模型文件路径,需用FROM指令加路径的形式来添加。
在设置模型参数时,模型的temperature参数最为关键。它能控制模型输出随机性的强弱,取值范围在0到1之间。该数值越大,模型输出的随机性就越强,回答也更有创意,但可能会出现一本正经胡说八道的情况。我直接参照chatGPT网页版,将此参数设为0.7,其默认值为1。
系统提示词即system prompt,你能依据任务类型在此设置满足针对性需求的专业提示词,从而使本地LLM能更好地完成下游任务。

在准备好modelfile文件后,只需执行一行命令就能创建我们自己DIY的模型了,创建命令如下:
创建好后,在webUI的模型列表里就能看到刚创建的minicpm模型了。

然后我们打算写一篇论述中国东北二人转和美国黑人hip - hop音乐关系的论文,让LLM提供写作思路,以此测试minicpm的能力。

至此,我们已成功部署自行DIY的大模型。各位读者若感兴趣,下次我们将尝试深度定制,再测试各模型能力究竟如何。
推荐官方模型库中几个对中文支持较好或者比较有趣的模型。
除了纯语言大模型外,Ollama从0.1.15版本起支持的视觉模型也很有趣,能直接把图片拖入终端。

在大模型领域,几个月前调通模型得砸钱堆卡、捣鼓配置环境,运行还得自行量化编译。可现在,模型发布不到一周就能在笔记本上顺畅运行,体验就像把chatGPT装进轻薄笔记本一样美妙。这简直是从原始走向现代,堪称科技平民化的优雅进程。