8G显存也想本地跑27B?我把Bonsai2-27B从CUDA装到WebUI跑通了
开头
我第一次看到“8G 显存跑 27B”这个说法时,第一反应不是兴奋,而是怀疑:模型参数摆在那儿,普通消费级显卡真能塞得进去?更现实的问题是,就算别人视频里已经跑起来了,自己照着装时也未必顺利。
Git、CUDA、nvcc、PowerShell 脚本权限、HuggingFace Token、模型下载,任何一环没接好,最后看到的都不是聊天窗口,而是一串报错。所以这次我更想把过程完整走一遍,不跳步骤,也不把“下载成功”当成“模型已经能用”。
这篇就从 Windows 环境准备开始,先把 Git 和 CUDA Toolkit 配好,再拉取 Bonsai2-27B 项目、设置 HuggingFace 令牌、执行安装脚本并启动本地 WebUI。等本机 8080 页面真正能打开、模型可以对话后,再继续用 cpolar 给它增加远程入口。
对小白来说,真正有价值的不是一句“8G 也能跑”,而是知道每一步应该看到什么、卡住时先查哪里。只要把这条链路拆开看,本地大模型部署就没有想象中那么玄学。
我也会把几个最容易混在一起的地方单独拆开:nvidia-smi 正常不代表 nvcc 已经配置好,模型文件下载完也不代表服务已经启动。把这些节点分清楚,后面看到报错时才不会一股脑地怀疑显卡、CUDA 或模型本身。
1. 先别急着下载模型,先看机器够不够
这类教程最容易让人冲动的地方,就是先看到“8G 显存也能跑 27B”,然后直接开始下载。我的习惯是先把硬件和系统条件看清楚,不然模型下到一半才发现环境不合适,最浪费时间。
1.1 硬件前提
原来的环境要求是:
- NVIDIA 独立显卡,显存 ≥ 8GB
- 磁盘至少预留 15GB 空间
- 能访问 HuggingFace,用于下载模型和项目文件
这里还有一个很实际的提醒:Windows 本身会占用部分显存,所以“显卡标称 8G”不代表运行时一定有完整 8G 可用。教程里的建议是,优先保证可用显存在 8.5G 左右;如果显存吃紧,可以调低上下文长度。
1.2 Windows 需要准备的软件
整个 Windows 流程里,前面先准备三样东西:

2. 安装 Git:先把最基础的一步确认好
Git 这一段很简单,但我还是建议安装完马上验证,不要等到后面 git clone 报错时才回来找原因。
安装地址和原操作保持不变:
git –version
看到版本号,就说明 Git 已经能正常调用。

3. Windows 安装 CUDA Toolkit 12.1
3.1 先分清显卡驱动和 CUDA Toolkit
这一步是我觉得小白最容易混淆的地方。
显卡驱动能让 NVIDIA 显卡正常工作,但 CUDA Toolkit 是另一套开发工具包,里面包含 nvcc 等工具。也就是说,nvidia-smi 能正常输出,不代表 nvcc 一定已经可用。
先执行:
nvidia-smi

如果能看到显卡信息和对应表格,说明驱动这一步正常。
原教程还特别提醒:nvidia-smi 里显示的 CUDA Version,指的是当前驱动支持的最高 CUDA 版本,不等于本机已经安装的 CUDA Toolkit 版本。
3.2 下载 CUDA Toolkit 12.1
进入 CUDA Toolkit 归档页面:
https://developer.nvidia.com/cuda-toolkit-archive
找到 CUDA Toolkit 12.1.0:

操作系统选择:
Windows

架构选择:
x86_64

系统版本根据自己的 Windows 版本选择:
- Windows 10 → 选择 10
- Windows 11 → 选择 11

安装类型选择 Local Installer。对于第一次装的人,我也更倾向于离线大包,至少不会因为安装过程中网络波动再多一层变量。

下载后得到:
cuda_12.1.0_531.14_windows.exe

3.3 安装 CUDA
双击安装包以后,按原步骤操作:
其中包括:
- CUDA
- Visual Studio Integration
- Nsight Systems
- Nsight Compute
路径不改的好处很直接:后面环境变量少一点折腾。

3.4 验证 nvcc
CUDA 装完以后,不要继续沿用安装之前已经打开的旧 PowerShell 窗口。重新打开终端,再执行:
nvcc -V
如果能正常输出版本号,说明这一关过去了。

我会把这一步当成一个明确检查点:先确认 nvcc 能用,再继续往后。 不然后面脚本出问题,很容易把环境问题误判成模型问题。
4. 注册 HuggingFace,并创建只读 Token
模型和代码准备好以后,下一步是 HuggingFace。
先注册并登录:
https://huggingface.co/

进入:
Settings → Access Tokens

点击:
New token
创建 Token 时:
- Name:可以写 bonsai-read
- Role:选择 read
- 点击 Generate


生成以后立即复制保存。

这串 Token 后面要交给部署脚本使用。它属于访问凭证,所以不要贴到公开文章、截图或聊天群里。
5. 开始部署 Bonsai2-27B
5.1 建目录、拉仓库、准备 PowerShell
在电脑里找一个空间足够的磁盘,例如 F 盘,新建 Bonsai2 文件夹,然后在这个目录里打开 PowerShell。

克隆项目:
git clone https://github.com/PrismML-Eng/Bonsai-demo.git

进入目录:
cd Bonsai-demo
接下来开启当前 PowerShell 进程的脚本执行权限:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
按原操作,提示时输入 Y 确认。

然后设置 Bonsai2 相关环境变量:
$env:BONSAI_FAMILY = "bonsai2"
$env:BONSAI_MODEL = "27B"
$env:BONSAI_TOKEN = "你的HuggingFace read令牌"

这里最容易犯的错误,就是忘了把 "你的HuggingFace read令牌" 换成自己刚刚生成的 Token。
5.2 执行安装脚本
环境变量配置完成后,执行:
.\\setup.ps1

按照原流程,这个脚本会完成依赖安装,并自动下载相应模型文件。
模型本身体积不小,所以这一段我不会盯着进度条着急。这里的处理方式是:
- 网络正常时等待下载完成;
- 不关闭当前 PowerShell;
- 如果中断,再重新运行脚本继续。
对第一次部署的人来说,能让脚本自己把依赖和模型拉下来,已经省掉不少手工步骤。
5.3 启动 Bonsai2-27B Web 对话界面
下载完成后,继续执行启动脚本:
.\\scripts\\start_llama_server.ps1

等终端输出启动信息以后,在浏览器访问:
http://localhost:8080
能看到 Web 对话页面,说明本地服务已经真正跑起来。

这一步比“模型已经下载到磁盘”更重要,因为到这里才能确认服务至少已经启动并能通过页面访问。

5.4 Linux 命令也一并保留
另外还保留了 Linux 环境的命令:
git clone https://github.com/PrismML-Eng/Bonsai-demo.git
cd Bonsai-demo
export BONSAI_FAMILY="bonsai2"
export BONSAI_MODEL="27B"
export BONSAI_TOKEN="你的hf read令牌"
./setup.sh1
./scripts/start_llama_server.sh
浏览器同样访问:
http://localhost:8080
这部分我不展开改成另一套 Linux 教程,保留原有命令作为补充即可。
6. 本地能聊以后,再解决远程访问
模型部署完成后,WebUI 默认只能通过本机的 127.0.0.1:8080 或 localhost:8080 访问。
对我来说,本地先跑通是第一阶段;如果还想在手机、平板或另一台电脑上使用,再解决公网入口。
这里 cpolar 的职责很明确:把本地的 Web 服务映射成一个公网可访问入口。
它不负责模型推理,也不负责模型下载,Bonsai2 才是业务本身。
7. Windows 安装 cpolar
先进入 cpolar 官网注册账号并下载 Windows 版本。

下载后完成安装:

安装成功以后,在浏览器访问:
http://localhost:9200
使用 cpolar 账号登录 WebUI。

8. 给 Bonsai2 的 8080 端口创建公网地址
登录 cpolar Web UI 后,进入“隧道管理 → 创建隧道”。
按照原配置:
- 隧道名称:Bonsai2
- 协议:http
- 本地地址:8080
- 域名类型:随机域名
- 地区:China Top

创建以后,在在线隧道列表中查看生成的公网地址。

用其他设备打开这个地址测试。

到这里,本地模型的 WebUI 就多了一条外部访问入口。
9. 保留固定公网地址
如果准备长期使用,再继续配置固定二级子域名。

进入预留页面,地区选择 china Top,名称按需要自定义,例如 Bonsai2。

然后回到隧道列表,找到对应隧道并点击编辑。

修改:
- 域名类型:二级子域名
- Sub Domain:填写已经预留的子域名
- 地区:China Top
点击更新。

更新后,在在线隧道列表中可以看到对应地址发生变化。

最后用固定公网地址再次访问:

这样,本地 Bonsai2 WebUI 就有了一个更稳定的远程入口。
结尾
这次真正跑下来,我觉得“8G 显存跑 27B”最容易被标题带偏的地方,是大家只看到了最后那个聊天页面,却忽略了前面其实有一整条环境链。
Git 没装好,仓库拉不下来;CUDA Toolkit 没配好,nvcc 过不了;HuggingFace Token 没设置,模型下载会卡;脚本和模型都准备好了,还得等 8080 的 WebUI 真正打开,才算完成本地部署。把这些检查点拆开以后,排错就不会完全靠猜。
所以对我来说,这篇最有价值的不是证明一句“8G 也能跑”,而是把每一步该看到什么、该确认什么摆出来。只要知道现在卡在哪一层,就能少走很多回头路。
最后的 cpolar 只是把已经跑通的 8080 Web 服务带到公网,它没有改变模型本身的能力。先本地跑通,再考虑远程访问,这个顺序我会一直保留。对于第一次折腾本地大模型的人来说,能把这一整条链完整走通,比单纯追求一个更大的参数数字更重要。
网硕互联帮助中心

评论前必须登录!
注册