消费级显卡也能一键跑 Qwen 大模型?用 Strata 本地起 OpenAI 兼容 API,再用 cpolar 让手机和异地应用连进来
前言
本地能跑大模型这件事,早就不是新闻了。真正让人卡住的,往往是后半段:模型在127.0.0.1上跑得好好的,可你的手机 App、异地的前端同事、另一台办公电脑,谁都连不上这个地址。
这篇走的是一整条闭环:用 Strata 在消费级显卡上一键把 Qwen3.8-Flash-Next 跑起来,它自带一个 OpenAI 兼容接口;接口跑通之后,再用 cpolar 把这个本地端口映射成固定公网 HTTPS 地址,让外网的手机和前端代码直接调你本机的模型。
全程不用服务器、不租 GPU,就是一台带独立显卡的普通电脑。下面按顺序来。
1 什么是 Strata?
Strata 是一个开源工具(MIT 协议),干的事很直接:把 125B 参数的 Qwen3.8-Flash-Next 塞进一台普通游戏电脑里跑起来。
大模型通常躺在几百 GB 显存的服务集群上,你显卡只有 12-24GB,按理说根本放不下。Strata 的做法是把工作分摊到整台机器上——显卡留住最常用的那部分,内存兜住全部专家权重,处理器同时处理剩下的,SSD 存一张大的查找表。粗略说,就是你常吃的放案板,其余的先进储物间。
它跟你这篇里的分工是这样的:
- Strata 负责把模型跑起来,并在
http://127.0.0.1:8080上同时提供网页界面和 OpenAI 兼容 API。 - cpolar 负责把这个本地端口映射到公网,让本地之外的人也能调到。
硬件门槛是明确的:显卡 12GB 显存以上(NVIDIA RTX 20 到 50 系列,或 AMD RX 6800/6900、7900、7800/7700、9060/9070 系列等),内存 32GB 以上,硬盘留出约 80GB。内存越大,能选的分片就越大,模型越聪明、速度越慢。64GB 内存所有分片都能跑。
图1:本机跑模型 → Strata 暴露 OpenAI 兼容 API → cpolar 映射公网 → 手机/异地应用调用。
记住这条链路,后面每一步都是在把它接通一段。
2 环境准备:确认显卡、内存和磁盘
别急着下载。先花两分钟确认硬件够用,省得装到一半发现跑不起来。
要点很实际:模型下载约 70GB,启动还要把 35-55GB 读进内存,磁盘紧张的话先清一清。
Linux 用户可以在终端跑下面这几条快速自查:
# 查看显卡和显存 nvidia-smi --query-gpu=name,memory.total --format=csv # 查看内存总量(单位 GB) free -g | awk 'NR==2{print "内存总量: "$2" GB"}' # 查看目标磁盘剩余空间 df -h .Windows 用户右键任务栏打开任务管理器,在“性能”标签里看 GPU 显存、内存和磁盘剩余空间即可,判断口径一样。
看到显存 12GB 以上、内存 32GB 以上、剩余磁盘 80GB 以上,就可以继续。哪一项不达标,先别装,换机器或者先升级硬件。
提醒一句:如果你显卡是 AMD,Windows 下暂时读不了图片输入;要图片理解能力,Linux 会更顺。
3 一键安装并启动 Strata
Strata 的安装是真正意义上的一键。官网明确说了 Windows 和 Linux 步骤一样,安装脚本会自动识别你的显卡并配好对应引擎。
先把仓库拉下来(也可以用 GitHub 页面上的 zip 包下载):
git clone https://github.com/Niko1221/Strata.git cd Strata然后按系统启动:
# Windows:目录里双击 START-HERE.bat # Linux:在 Strata 目录下执行 ./setup.sh启动后,安装脚本会问你几个问题:选哪个模型和哪个大小、上下文长度多少、要不要读图片。
这里别想太多,每次直接按回车用推荐值就行。脚本会根据你的内存自动推荐分片。第一次启动它会下载大约 70GB 的模型文件,中途断了不用重来——你重新跑一次,它会从断掉的地方接着下。
模型加载的时候,电脑会卡顿 1-3 分钟,第一次最久。Strata 会把 35-55GB 数据读进内存并锁定一部分给显卡,这是正常现象,等它,别关窗口。窗口里会显示它正在做什么。
加载完成后,浏览器会自动打开http://127.0.0.1:8080,你会看到 Strata 的网页界面:Chat(对话)、Monitor(模型和 GPU/CPU/内存实时监控)、About(设置和地址)。
之后每次要用,重新跑一遍START-HERE.bat(Linux 是./setup.sh)即可,它会直接启动,不会再重复下载。关掉那个窗口就是停止模型。
图2:Strata 启动后打开的本地界面:Chat 与 Monitor(教学示意)。
如果提示8080 端口被占用,多半是 Strata 已经在跑了,找找它的窗口就行,不用重复启动。
4 跑通本地 OpenAI 兼容 API
模型起来了,先确认接口能通,这一步是为了把“本地跑通”和“公网映射”分开验证,别两个问题搅在一起排。
Strata 的兼容接口就在同一个端口上,地址是:
- OpenAI 兼容基础地址:
http://127.0.0.1:8080/v1 - Anthropic 兼容地址:
http://127.0.0.1:8080/v1/messages
划重点:任何 API Key、任何模型名都能用,这是方便你做本地对接,不是让你随便往公网裸奔。
在本机先发一个请求验证链路:
curl http://127.0.0.1:8080/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer local-any-key" \ -d '{ "model": "qwen3.8-flash-next", "messages": [{"role": "user", "content": "用一句话解释什么是内网穿透"}]  }'返回里有choices[].message.content就说明本地接口通了。
第一次请求会比较慢,Strata 要先把聊天第一条消息完整读进去,大约每 30000 tokens 读 1 分钟;后续对话是几秒内开始。这不是卡死,是它在读上下文。
到这一步,本机调试已经没问题了。但你会发现——手机连不上,异地同事的前端也连不上。因为127.0.0.1只有本机能访问。
5 让 Strata 监听局域网并设置 API Key
在把端口映射到公网之前,先给 Strata 加一道钥匙,同时让它不光听127.0.0.1。
Strata 支持指定监听地址和密钥启动。Windows 传参:
START-HERE.bat --setup --host 0.0.0.0 --api-key <你的密钥>Linux 同理,在 Strata 目录下:
./setup.sh --setup --host 0.0.0.0 --api-key <你的密钥>--host 0.0.0.0表示不再只听本机回环地址,同局域网的设备也能访问;--api-key则是给接口加个凭证。
这个密钥一定要设。Strata 官方原文就强调 “Always set a key”。因为一旦端口上了公网,没有密钥就等于谁都能免费白嫖你的显卡。
密钥自己生成一个足够长的随机串就行:
python3 -c 'import secrets; print(secrets.token_hex(24))'把输出记下来,等会儿外网调用要带上它。注意别把密钥贴进截图或提交进代码仓库。
6 用 cpolar 把本地 API 映射成公网地址
现在轮到 cpolar 上场。它的作用很明确:把本机8080这个端口,映射成一个公网能访问的 HTTPS 地址。
先去 cpolar 官网 注册账号,再从官方下载页按你的系统下载客户端并安装。
安装完成后,从账号后台拿到认证 Token,执行:
cpolar version cpolar authtoken <你的 cpolar 认证 Token> cpolar http 8080这两个 Token 千万别搞混:cpolar 的 Token 是绑定客户端账号用的,Strata 的--api-key是校验接口请求用的,互相不能替换。
命令跑起来后,终端里会打印出一个HTTPS 公网地址,类似https://xxxxxxxx.r2.cpolar.cn这种形式。把它复制下来。
图3:cpolar 终端输出的 HTTPS 公网入口以及在线隧道状态(教学示意)。
保持这个终端开着,隧道就是活的;关掉它,公网入口立即失效。这一步只是临时前台隧道,用来先跑通链路。
如果本机能调、公网却不通,按这个顺序查:Strata 有没有在 8080 上监听、cpolar 隧道是否显示在线、映射端口是不是写成了别的端口、地址有没有复制错。
7 从外网实测:curl 和最小前端代码
链路接好了,用外网视角亲自验一遍。这里我用另一个网络环境(比如手机热点)来请求,模拟异地调用。
先确认这个地址能换成模型调用地址:把公网入口后面加上/v1/chat/completions:
# 把 <公网入口> 换成终端里实际打印的地址 curl https://<公网入口>/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer <你在第 5 步设置的 API Key>" \ -d '{ "model": "qwen3.8-flash-next", "messages": [{"role": "user", "content": "从外网发起的请求,回我一句话证明链路通了"}] }'能拿到模型回复,说明整条链路:手机/异地 → cpolar HTTPS → 本机 Strata → 模型 → 原路返回,全通了。
再写一段最小前端代码,把调用跑进网页里。因为 cpolar 给的是标准 HTTPS 地址,浏览器里可以直接请求:
<!doctype html> <html lang="zh-CN"> <body> <button id="go">问一句</button> <pre id="out"></pre> <script> const BASE = "https://<公网入口>/v1"; // 换成你的 cpolar 公网入口 const KEY = "<你在第 5 步设置的 API Key>"; document.getElementById("go").onclick = async () => { const out = document.getElementById("out"); out.textContent = "调用中..."; const res = await fetch(`${BASE}/chat/completions`, { method: "POST", headers: { "Content-Type": "application/json", "Authorization": `Bearer ${KEY}` }, body: JSON.stringify({ model: "qwen3.8-flash-next", messages: [{ role: "user", content: "用一句话介绍你自己" }] }) }); const data = await res.json(); out.textContent = data.choices?.[0]?.message?.content ?? JSON.stringify(data); }; </script> </body> </html>把这个文件放到一台异地电脑上打开,点按钮,页面里能吐出模型回复,就是前端接入成功了。
排错提示:如果浏览器控制台报 401,先核对KEY有没有带错;报连接错误,先确认 cpolar 终端还开着、地址是不是变了(免费套餐的地址 24 小时内会变);如果一直转圈不出结果,回想一下 Strata 是否正在处理另一条长请求——默认它一次只答一个请求,后面的要排队。
8 固定二级子域名,把地址定下来
到第 7 步为止,一个绕不开的问题会冒出来:cpolar 免费套餐给的是随机公网地址,24 小时内会变化。这意味着你每次重启隧道,都得回去改前端里的BASE,手机 App 配置也得跟着改。
所以长期用的话,建议把地址固定下来。cpolar 支持固定二级子域名,需要基础套餐或以上(目前基础套餐 99 元/年),配置好之后域名就不再随机跳动了。
配置路径是在 cpolar 后台创建隧道时把域名类型改成保留的二级子域名,把生成的固定地址填回你的前端和 App 配置里。这样异地设备只要配置一次,以后启动隧道地址不变,不用反复改代码。
如果你只是在局域网里自己用,这一步可以先跳过——局域网内直接用http://本机IP:8080/v1就够,不需要公网入口。只有真正要异地、要手机在外网访问,固定域名才有意义。
9 总结
走到这里,你已经把一套完整的“本地大模型 + 公网接入”闭环跑通了:消费级显卡上跑起 Qwen3.8-Flash-Next,本地有网页界面和 OpenAI 兼容 API,再通过 cpolar 把端口映射成公网地址,手机和异地前端都能调到你本机的模型。
- 用 Strata 一键安装启动,模型跑在
127.0.0.1:8080,自带 OpenAI 兼容接口,任意 Key、任意模型名可对接。 - 用
--host 0.0.0.0 --api-key <密钥>放开监听并加凭证,再用 cpolar HTTP 隧道把 8080 映射成公网 HTTPS 地址。 - 用 curl 和一段最小前端代码从外网实测,确认链路通了;长期使用把随机地址换成固定二级子域名。
后续想扩展的话,Strata 还支持 Anthropic 兼容接口和 Responses API,Claude Code、Codex CLI 这类工具把base_url指过来就能直接用你本地的模型。等需求稳定了,再把前台临时隧道换成 cpolar 后台服务和固定域名,就不用每次手动开终端了——比一直守着localhost舒服得多。
参考:Strata 项目仓库、Strata 安装文档、cpolar 官方文档、cpolar 下载页。